@@ -43,7 +43,7 @@ public OutputStream createCompressor(final OutputStream writeTo, final String fi
43
43
}
44
44
45
45
@ Override
46
- public InputStream createDecompressor (final InputStream readFrom ) {
46
+ public InputStream createDecompressor (final InputStream readFrom , final boolean decompressConcatenated ) {
47
47
return new ProxyInputStream (readFrom ) {
48
48
//nothing to do
49
49
};
@@ -77,12 +77,14 @@ public OutputStream createCompressor(final OutputStream writeTo, final String fi
77
77
}
78
78
79
79
@ Override
80
- public InputStream createDecompressor (final InputStream readFrom ) {
80
+ public InputStream createDecompressor (final InputStream readFrom , final boolean decompressConcatenated ) {
81
81
final InputStream bufferedStream = bufferStream (readFrom );
82
82
try {
83
- return APACHE_COMPRESSOR_FACTORY .createCompressorInputStream (bufferedStream );
83
+ return decompressConcatenated ?
84
+ APACHE_COMPRESSOR_FACTORY_DECOMPRESS_CONCATENATED .createCompressorInputStream (bufferedStream ) :
85
+ APACHE_COMPRESSOR_FACTORY_NO_DECOMPRESS_CONCATENATED .createCompressorInputStream (bufferedStream );
84
86
} catch (CompressorException e ) {
85
- return NONE .createDecompressor (bufferedStream );
87
+ return NONE .createDecompressor (bufferedStream , decompressConcatenated );
86
88
}
87
89
}
88
90
},
@@ -99,10 +101,10 @@ public OutputStream createCompressor(final OutputStream writeTo, final String fi
99
101
}
100
102
101
103
@ Override
102
- public InputStream createDecompressor (final InputStream readFrom ) {
104
+ public InputStream createDecompressor (final InputStream readFrom , final boolean decompressConcatenated ) {
103
105
try {
104
106
return APACHE_COMPRESSOR_FACTORY .createCompressorInputStream (
105
- CompressorStreamFactory .BZIP2 , bufferStream (readFrom ));
107
+ CompressorStreamFactory .BZIP2 , bufferStream (readFrom ), decompressConcatenated );
106
108
} catch (CompressorException e ) {
107
109
throw new MetafactureException (e );
108
110
}
@@ -121,10 +123,10 @@ public OutputStream createCompressor(final OutputStream writeTo, final String fi
121
123
}
122
124
123
125
@ Override
124
- public InputStream createDecompressor (final InputStream readFrom ) {
126
+ public InputStream createDecompressor (final InputStream readFrom , final boolean decompressConcatenated ) {
125
127
try {
126
128
return APACHE_COMPRESSOR_FACTORY .createCompressorInputStream (
127
- CompressorStreamFactory .GZIP , bufferStream (readFrom ));
129
+ CompressorStreamFactory .GZIP , bufferStream (readFrom ), decompressConcatenated );
128
130
} catch (CompressorException e ) {
129
131
throw new MetafactureException (e );
130
132
}
@@ -143,10 +145,10 @@ public OutputStream createCompressor(final OutputStream writeTo, final String fi
143
145
}
144
146
145
147
@ Override
146
- public InputStream createDecompressor (final InputStream readFrom ) {
148
+ public InputStream createDecompressor (final InputStream readFrom , final boolean decompressConcatenated ) {
147
149
try {
148
150
return APACHE_COMPRESSOR_FACTORY .createCompressorInputStream (
149
- CompressorStreamFactory .PACK200 , bufferStream (readFrom ));
151
+ CompressorStreamFactory .PACK200 , bufferStream (readFrom ), decompressConcatenated );
150
152
} catch (CompressorException e ) {
151
153
throw new MetafactureException (e );
152
154
}
@@ -165,22 +167,32 @@ public OutputStream createCompressor(final OutputStream writeTo, final String fi
165
167
}
166
168
167
169
@ Override
168
- public InputStream createDecompressor (final InputStream readFrom ) {
170
+ public InputStream createDecompressor (final InputStream readFrom , final boolean decompressConcatenated ) {
169
171
try {
170
172
return APACHE_COMPRESSOR_FACTORY .createCompressorInputStream (
171
- CompressorStreamFactory .XZ , bufferStream (readFrom ));
173
+ CompressorStreamFactory .XZ , bufferStream (readFrom ), decompressConcatenated );
172
174
} catch (CompressorException e ) {
173
175
throw new MetafactureException (e );
174
176
}
175
177
}
176
178
};
177
179
178
- private static final CompressorStreamFactory APACHE_COMPRESSOR_FACTORY = new CompressorStreamFactory ();
180
+ public static final boolean DEFAULT_DECOMPRESS_CONCATENATED = false ;
181
+
182
+ private static final CompressorStreamFactory APACHE_COMPRESSOR_FACTORY_DECOMPRESS_CONCATENATED = new CompressorStreamFactory (true );
183
+ private static final CompressorStreamFactory APACHE_COMPRESSOR_FACTORY_NO_DECOMPRESS_CONCATENATED = new CompressorStreamFactory (false );
184
+ private static final CompressorStreamFactory APACHE_COMPRESSOR_FACTORY = DEFAULT_DECOMPRESS_CONCATENATED ?
185
+ APACHE_COMPRESSOR_FACTORY_DECOMPRESS_CONCATENATED : APACHE_COMPRESSOR_FACTORY_NO_DECOMPRESS_CONCATENATED ;
186
+
179
187
private static final int BUFFER_SIZE = 8 * 1024 * 1024 ;
180
188
181
189
public abstract OutputStream createCompressor (final OutputStream writeTo , final String fileName );
182
190
183
- public abstract InputStream createDecompressor (final InputStream readFrom );
191
+ public abstract InputStream createDecompressor (final InputStream readFrom , final boolean decompressConcatenated );
192
+
193
+ public InputStream createDecompressor (final InputStream readFrom ) {
194
+ return createDecompressor (readFrom , DEFAULT_DECOMPRESS_CONCATENATED );
195
+ }
184
196
185
197
private static OutputStream bufferStream (final OutputStream stream ) {
186
198
if (stream instanceof BufferedOutputStream ) {
0 commit comments