01: /*
02: * Copyright 2005-2007 Noelios Consulting.
03: *
04: * The contents of this file are subject to the terms of the Common Development
05: * and Distribution License (the "License"). You may not use this file except in
06: * compliance with the License.
07: *
08: * You can obtain a copy of the license at
09: * http://www.opensource.org/licenses/cddl1.txt See the License for the specific
10: * language governing permissions and limitations under the License.
11: *
12: * When distributing Covered Code, include this CDDL HEADER in each file and
13: * include the License file at http://www.opensource.org/licenses/cddl1.txt If
14: * applicable, add the following below this CDDL HEADER, with the fields
15: * enclosed by brackets "[]" replaced with your own identifying information:
16: * Portions Copyright [yyyy] [name of copyright owner]
17: */
18:
19: package org.restlet.resource;
20:
21: import java.io.IOException;
22: import java.nio.channels.ReadableByteChannel;
23: import java.nio.channels.WritableByteChannel;
24:
25: import org.restlet.data.MediaType;
26: import org.restlet.util.ByteUtils;
27:
28: /**
29: * Representation based on a writable NIO byte channel. The
30: * write(WritableByteChannel) method needs to be overriden in subclasses.
31: *
32: * @author Jerome Louvel (contact@noelios.com)
33: */
34: public abstract class WritableRepresentation extends
35: ChannelRepresentation {
36: /**
37: * Constructor.
38: *
39: * @param mediaType
40: * The representation's media type.
41: */
42: public WritableRepresentation(MediaType mediaType) {
43: super (mediaType);
44: }
45:
46: /**
47: * Returns a readable byte channel. If it is supported by a file a read-only
48: * instance of FileChannel is returned.
49: *
50: * @return A readable byte channel.
51: */
52: public ReadableByteChannel getChannel() throws IOException {
53: return ByteUtils.getChannel(this );
54: }
55:
56: /**
57: * Writes the representation to a byte channel. This method is ensured to
58: * write the full content for each invocation unless it is a transient
59: * representation, in which case an exception is thrown.
60: *
61: * @param writableChannel
62: * A writable byte channel.
63: * @throws IOException
64: */
65: public abstract void write(WritableByteChannel writableChannel)
66: throws IOException;
67:
68: }
|