@ -14,7 +14,6 @@ package org.eclipse.jgit.internal.storage.file;
import java.io.EOFException ;
import java.io.EOFException ;
import java.io.File ;
import java.io.File ;
import java.io.FileNotFoundException ;
import java.io.FileOutputStream ;
import java.io.FileOutputStream ;
import java.io.FilterOutputStream ;
import java.io.FilterOutputStream ;
import java.io.IOException ;
import java.io.IOException ;
@ -116,7 +115,7 @@ class ObjectDirectoryInserter extends ObjectInserter {
private ObjectId insertOneObject (
private ObjectId insertOneObject (
File tmp , ObjectId id , boolean createDuplicate )
File tmp , ObjectId id , boolean createDuplicate )
throws IOException , ObjectWritingException {
throws IOException {
switch ( db . insertUnpackedObject ( tmp , id , createDuplicate ) ) {
switch ( db . insertUnpackedObject ( tmp , id , createDuplicate ) ) {
case INSERTED :
case INSERTED :
case EXISTS_PACKED :
case EXISTS_PACKED :
@ -163,18 +162,16 @@ class ObjectDirectoryInserter extends ObjectInserter {
}
}
}
}
@SuppressWarnings ( "resource" /* java 7 */ )
private File toTemp ( final SHA1 md , final int type , long len ,
private File toTemp ( final SHA1 md , final int type , long len ,
final InputStream is ) throws IOException , FileNotFoundException ,
final InputStream is ) throws IOException {
Error {
boolean delete = true ;
boolean delete = true ;
File tmp = newTempFile ( ) ;
File tmp = newTempFile ( ) ;
try {
try ( FileOutputStream fOut = new FileOutputStream ( tmp ) ) {
FileOutputStream fOut = new FileOutputStream ( tmp ) ;
try {
try {
OutputStream out = fOut ;
OutputStream out = fOut ;
if ( config . getFSyncObjectFiles ( ) )
if ( config . getFSyncObjectFiles ( ) ) {
out = Channels . newOutputStream ( fOut . getChannel ( ) ) ;
out = Channels . newOutputStream ( fOut . getChannel ( ) ) ;
}
DeflaterOutputStream cOut = compress ( out ) ;
DeflaterOutputStream cOut = compress ( out ) ;
SHA1OutputStream dOut = new SHA1OutputStream ( cOut , md ) ;
SHA1OutputStream dOut = new SHA1OutputStream ( cOut , md ) ;
writeHeader ( dOut , type , len ) ;
writeHeader ( dOut , type , len ) ;
@ -182,53 +179,54 @@ class ObjectDirectoryInserter extends ObjectInserter {
final byte [ ] buf = buffer ( ) ;
final byte [ ] buf = buffer ( ) ;
while ( len > 0 ) {
while ( len > 0 ) {
int n = is . read ( buf , 0 , ( int ) Math . min ( len , buf . length ) ) ;
int n = is . read ( buf , 0 , ( int ) Math . min ( len , buf . length ) ) ;
if ( n < = 0 )
if ( n < = 0 ) {
throw shortInput ( len ) ;
throw shortInput ( len ) ;
}
dOut . write ( buf , 0 , n ) ;
dOut . write ( buf , 0 , n ) ;
len - = n ;
len - = n ;
}
}
dOut . flush ( ) ;
dOut . flush ( ) ;
cOut . finish ( ) ;
cOut . finish ( ) ;
} finally {
} finally {
if ( config . getFSyncObjectFiles ( ) )
if ( config . getFSyncObjectFiles ( ) ) {
fOut . getChannel ( ) . force ( true ) ;
fOut . getChannel ( ) . force ( true ) ;
fOut . close ( ) ;
}
}
}
delete = false ;
delete = false ;
return tmp ;
return tmp ;
} finally {
} finally {
if ( delete )
if ( delete ) {
FileUtils . delete ( tmp , FileUtils . RETRY ) ;
FileUtils . delete ( tmp , FileUtils . RETRY ) ;
}
}
}
}
}
@SuppressWarnings ( "resource" /* java 7 */ )
private File toTemp ( final int type , final byte [ ] buf , final int pos ,
private File toTemp ( final int type , final byte [ ] buf , final int pos ,
final int len ) throws IOException , FileNotFoundException {
final int len ) throws IOException {
boolean delete = true ;
boolean delete = true ;
File tmp = newTempFile ( ) ;
File tmp = newTempFile ( ) ;
try {
try ( FileOutputStream fOut = new FileOutputStream ( tmp ) ) {
FileOutputStream fOut = new FileOutputStream ( tmp ) ;
try {
try {
OutputStream out = fOut ;
OutputStream out = fOut ;
if ( config . getFSyncObjectFiles ( ) )
if ( config . getFSyncObjectFiles ( ) ) {
out = Channels . newOutputStream ( fOut . getChannel ( ) ) ;
out = Channels . newOutputStream ( fOut . getChannel ( ) ) ;
}
DeflaterOutputStream cOut = compress ( out ) ;
DeflaterOutputStream cOut = compress ( out ) ;
writeHeader ( cOut , type , len ) ;
writeHeader ( cOut , type , len ) ;
cOut . write ( buf , pos , len ) ;
cOut . write ( buf , pos , len ) ;
cOut . finish ( ) ;
cOut . finish ( ) ;
} finally {
} finally {
if ( config . getFSyncObjectFiles ( ) )
if ( config . getFSyncObjectFiles ( ) ) {
fOut . getChannel ( ) . force ( true ) ;
fOut . getChannel ( ) . force ( true ) ;
fOut . close ( ) ;
}
}
}
delete = false ;
delete = false ;
return tmp ;
return tmp ;
} finally {
} finally {
if ( delete )
if ( delete ) {
FileUtils . delete ( tmp , FileUtils . RETRY ) ;
FileUtils . delete ( tmp , FileUtils . RETRY ) ;
}
}
}
}
}