1 /*
2 * Copyright (C) 2012, Google Inc.
3 * and other copyright owners as documented in the project's IP log.
4 *
5 * This program and the accompanying materials are made available
6 * under the terms of the Eclipse Distribution License v1.0 which
7 * accompanies this distribution, is reproduced below, and is
8 * available at http://www.eclipse.org/org/documents/edl-v10.php
9 *
10 * All rights reserved.
11 *
12 * Redistribution and use in source and binary forms, with or
13 * without modification, are permitted provided that the following
14 * conditions are met:
15 *
16 * - Redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer.
18 *
19 * - Redistributions in binary form must reproduce the above
20 * copyright notice, this list of conditions and the following
21 * disclaimer in the documentation and/or other materials provided
22 * with the distribution.
23 *
24 * - Neither the name of the Eclipse Foundation, Inc. nor the
25 * names of its contributors may be used to endorse or promote
26 * products derived from this software without specific prior
27 * written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
30 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
31 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
32 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
34 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
35 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
36 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
37 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
38 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
40 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
41 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 */
43
44 package org.eclipse.jgit.internal.storage.file;
45
46 import java.io.DataOutput;
47 import java.io.IOException;
48 import java.io.OutputStream;
49
50 import org.eclipse.jgit.util.NB;
51
52 /**
53 * An implementation of {@link DataOutput} that only handles
54 * {@link #writeInt(int)} and {@link #writeLong(long)} using the Git conversion
55 * utilities for network byte order handling. This is needed to write
56 * {@link com.googlecode.javaewah.EWAHCompressedBitmap}s.
57 */
58 class SimpleDataOutput implements DataOutput {
59 private final OutputStream fd;
60
61 private final byte[] buf = new byte[8];
62
63 SimpleDataOutput(OutputStream fd) {
64 this.fd = fd;
65 }
66
67 /** {@inheritDoc} */
68 @Override
69 public void writeShort(int v) throws IOException {
70 NB.encodeInt16(buf, 0, v);
71 fd.write(buf, 0, 2);
72 }
73
74 /** {@inheritDoc} */
75 @Override
76 public void writeInt(int v) throws IOException {
77 NB.encodeInt32(buf, 0, v);
78 fd.write(buf, 0, 4);
79 }
80
81 /** {@inheritDoc} */
82 @Override
83 public void writeLong(long v) throws IOException {
84 NB.encodeInt64(buf, 0, v);
85 fd.write(buf, 0, 8);
86 }
87
88 /** {@inheritDoc} */
89 @Override
90 public void write(int b) throws IOException {
91 throw new UnsupportedOperationException();
92 }
93
94 /** {@inheritDoc} */
95 @Override
96 public void write(byte[] b) throws IOException {
97 throw new UnsupportedOperationException();
98 }
99
100 /** {@inheritDoc} */
101 @Override
102 public void write(byte[] b, int off, int len) throws IOException {
103 throw new UnsupportedOperationException();
104 }
105
106 /** {@inheritDoc} */
107 @Override
108 public void writeBoolean(boolean v) throws IOException {
109 throw new UnsupportedOperationException();
110 }
111
112 /** {@inheritDoc} */
113 @Override
114 public void writeByte(int v) throws IOException {
115 throw new UnsupportedOperationException();
116 }
117
118 /** {@inheritDoc} */
119 @Override
120 public void writeChar(int v) throws IOException {
121 throw new UnsupportedOperationException();
122 }
123
124 /** {@inheritDoc} */
125 @Override
126 public void writeFloat(float v) throws IOException {
127 throw new UnsupportedOperationException();
128 }
129
130 /** {@inheritDoc} */
131 @Override
132 public void writeDouble(double v) throws IOException {
133 throw new UnsupportedOperationException();
134 }
135
136 /** {@inheritDoc} */
137 @Override
138 public void writeBytes(String s) throws IOException {
139 throw new UnsupportedOperationException();
140 }
141
142 /** {@inheritDoc} */
143 @Override
144 public void writeChars(String s) throws IOException {
145 throw new UnsupportedOperationException();
146 }
147
148 /** {@inheritDoc} */
149 @Override
150 public void writeUTF(String s) throws IOException {
151 throw new UnsupportedOperationException();
152 }
153 }