From 78dfd87a90ab84572925b2254ecaf5e7b1b0da60 Mon Sep 17 00:00:00 2001 From: Pablo Tesone Date: Fri, 27 Sep 2019 11:26:08 +0200 Subject: [PATCH 1/3] Making the ReadWrite buffered stream to be used only by SourceFile - Moving the classes next to SourceFile - Removing other users --- src/FileSystem-Core/FileReference.class.st | 14 ++-- src/Ombu-Tests/OmFileStoreTest.class.st | 7 +- src/Ombu/OmFileStore.class.st | 10 +-- src/System-Sources/SourceFile.class.st | 4 +- ...ourceFileBufferedReadWriteStream.class.st} | 83 +++++++++---------- ...urceFileCharacterReadWriteStream.class.st} | 54 ++++++------ src/Tests/SourceFileArrayTest.class.st | 4 +- ...eFileBufferedReadWriteStreamTest.class.st} | 52 ++++++------ .../ZnFileSystemUtils.class.st | 4 +- 9 files changed, 110 insertions(+), 122 deletions(-) rename src/{Zinc-Character-Encoding-Core/ZnBufferedReadWriteStream.class.st => System-Sources/SourceFileBufferedReadWriteStream.class.st} (72%) rename src/{Zinc-Character-Encoding-Core/ZnCharacterReadWriteStream.class.st => System-Sources/SourceFileCharacterReadWriteStream.class.st} (64%) rename src/{Zinc-Character-Encoding-Tests/ZnBufferedReadWriteStreamTest.class.st => Tests/SourceFileBufferedReadWriteStreamTest.class.st} (70%) diff --git a/src/FileSystem-Core/FileReference.class.st b/src/FileSystem-Core/FileReference.class.st index dfde6cd9208..788b7e60f69 100644 --- a/src/FileSystem-Core/FileReference.class.st +++ b/src/FileSystem-Core/FileReference.class.st @@ -115,13 +115,6 @@ FileReference >> binaryReadStream [ ^ ZnBufferedReadStream on: (filesystem binaryReadStreamOn: self path) ] -{ #category : #streams } -FileReference >> binaryReadWriteStream [ - "Answer a binary read/write stream on the receiver" - - ^ ZnBufferedReadWriteStream on: (filesystem binaryWriteStreamOn: self path) -] - { #category : #streams } FileReference >> binaryWriteStream [ "Answer a buffered binary write stream on the receiver" @@ -601,6 +594,13 @@ FileReference >> uid: uid gid: gid [ ^filesystem file: self path uid: uid gid: gid ] +{ #category : #streams } +FileReference >> unbufferedBinaryWriteStream [ + "Answer a binary read/write stream on the receiver" + + ^ filesystem binaryWriteStreamOn: self path +] + { #category : #versions } FileReference >> versionNumberFor: basename extension: extension [ "Answer the latest (largest) version number for the specified file. diff --git a/src/Ombu-Tests/OmFileStoreTest.class.st b/src/Ombu-Tests/OmFileStoreTest.class.st index c4ae9cbf6ea..7792abab288 100644 --- a/src/Ombu-Tests/OmFileStoreTest.class.st +++ b/src/Ombu-Tests/OmFileStoreTest.class.st @@ -141,11 +141,10 @@ OmFileStoreTest >> testLoadFromCorruptFile4 [ store flush. "Override first characters" - stream := store fileReference binaryReadWriteStream. + stream := store fileReference binaryWriteStream. [ - (ZnCharacterReadWriteStream on: stream encoding: 'utf8') - upToAll: '41'; - skip: -1; + (ZnCharacterWriteStream on: stream encoding: 'utf8') + position: 50; nextPutAll: '**'. "Apparently, in Linux it can randomly fail if not explicitly flush" diff --git a/src/Ombu/OmFileStore.class.st b/src/Ombu/OmFileStore.class.st index 9927890df4d..97b1bf2d30a 100644 --- a/src/Ombu/OmFileStore.class.st +++ b/src/Ombu/OmFileStore.class.st @@ -227,8 +227,9 @@ OmFileStore >> flushEntryBuffer [ self critical: [ | initialPosition initialLocalName fileStream | self entryBuffer isEmpty ifTrue: [ ^self ]. - - [ fileStream := ZnCharacterReadWriteStream on: fileReference binaryReadWriteStream encoding: #utf8. ] on: ReadOnlyFileException do: [ :anException | + + [ fileStream := ZnCharacterWriteStream on: fileReference binaryWriteStream encoding: #utf8. ] on: ReadOnlyFileException do: [ :anException | + fileStream close. ^ self ]. @@ -253,11 +254,10 @@ OmFileStore >> flushEntryBuffer [ "In Linux it was necessary to explicitly flush the file stream" fileStream flush. - lastStreamPosition := fileStream size. + lastStreamPosition := fileStream position. ] ensure: [ fileStream close ]. - self refreshEntryPositionsByLocalNameStartingAt: initialPosition since: initialLocalName. - ]. + self refreshEntryPositionsByLocalNameStartingAt: initialPosition since: initialLocalName ]. ] diff --git a/src/System-Sources/SourceFile.class.st b/src/System-Sources/SourceFile.class.st index e142fefea60..1ad65060c5f 100644 --- a/src/System-Sources/SourceFile.class.st +++ b/src/System-Sources/SourceFile.class.st @@ -244,8 +244,8 @@ SourceFile >> tryOpenReadOnly: readOnly [ readOnly ifFalse: [ potentialLocations do: [ :each | - [ stream := ZnCharacterReadWriteStream - on: (each asFileReference / basename) binaryReadWriteStream + [ stream := SourceFileCharacterReadWriteStream + on: (SourceFileBufferedReadWriteStream on:(each asFileReference / basename) unbufferedBinaryWriteStream) encoding: 'utf8'. ^ self ] on: Error do: [ ] ] ]. diff --git a/src/Zinc-Character-Encoding-Core/ZnBufferedReadWriteStream.class.st b/src/System-Sources/SourceFileBufferedReadWriteStream.class.st similarity index 72% rename from src/Zinc-Character-Encoding-Core/ZnBufferedReadWriteStream.class.st rename to src/System-Sources/SourceFileBufferedReadWriteStream.class.st index 803c48da2ba..b0b8d9433c3 100644 --- a/src/Zinc-Character-Encoding-Core/ZnBufferedReadWriteStream.class.st +++ b/src/System-Sources/SourceFileBufferedReadWriteStream.class.st @@ -1,18 +1,9 @@ " -I am ZnBufferedReadWriteStream. -I wrap a buffered read stream and a buffered write stream on the same file. - -I discard my read buffer on writes, and flush my write buffer on reads. -Make sure to always send me #flush or #close when you're done, -otherwise the last buffer might not yet have been written. -My class side's #on:do: helps to ensure this. - -I can wrap both binary or character streams and act accordingly. - -Part of Zinc HTTP Components. +I am Buffered Read Write Stream. +I should only be used in the SourceFile implementation " Class { - #name : #ZnBufferedReadWriteStream, + #name : #SourceFileBufferedReadWriteStream, #superclass : #Object, #instVars : [ 'innerStream', @@ -23,18 +14,18 @@ Class { 'nextPosition', 'isDirty' ], - #category : #'Zinc-Character-Encoding-Core' + #category : #'System-Sources-Streams' } { #category : #'instance creation' } -ZnBufferedReadWriteStream class >> on: writeStream [ +SourceFileBufferedReadWriteStream class >> on: writeStream [ ^ self basicNew on: writeStream; yourself ] { #category : #convenience } -ZnBufferedReadWriteStream class >> on: readStream do: block [ +SourceFileBufferedReadWriteStream class >> on: readStream do: block [ "Execute block with as argument a ZnBufferedReadStream on readStream. Return the value of block." @@ -46,13 +37,13 @@ ZnBufferedReadWriteStream class >> on: readStream do: block [ ] { #category : #testing } -ZnBufferedReadWriteStream >> atEnd [ +SourceFileBufferedReadWriteStream >> atEnd [ ^ self atEnd: nextPosition ] { #category : #private } -ZnBufferedReadWriteStream >> atEnd: anInteger [ +SourceFileBufferedReadWriteStream >> atEnd: anInteger [ anInteger < streamSize ifTrue: [ ^ false ]. anInteger <= (bufferOffset + bufferLength) ifTrue: [ ^ false ]. @@ -61,7 +52,7 @@ ZnBufferedReadWriteStream >> atEnd: anInteger [ ] { #category : #private } -ZnBufferedReadWriteStream >> bufferAt: aPosition [ +SourceFileBufferedReadWriteStream >> bufferAt: aPosition [ ^ buffer at: (aPosition - bufferOffset) @@ -69,7 +60,7 @@ ZnBufferedReadWriteStream >> bufferAt: aPosition [ ] { #category : #private } -ZnBufferedReadWriteStream >> bufferAt: aPosition put: anElement [ +SourceFileBufferedReadWriteStream >> bufferAt: aPosition put: anElement [ self checkBufferFor: nextPosition. @@ -79,40 +70,40 @@ ZnBufferedReadWriteStream >> bufferAt: aPosition put: anElement [ ] { #category : #private } -ZnBufferedReadWriteStream >> checkBufferFor: aPosition [ +SourceFileBufferedReadWriteStream >> checkBufferFor: aPosition [ (self isPositionInBuffer: aPosition) ifFalse: [ self refreshBufferFrom: aPosition ] ] { #category : #closing } -ZnBufferedReadWriteStream >> close [ +SourceFileBufferedReadWriteStream >> close [ self flush. innerStream close ] { #category : #testing } -ZnBufferedReadWriteStream >> closed [ +SourceFileBufferedReadWriteStream >> closed [ ^ innerStream closed ] { #category : #'initialize-release' } -ZnBufferedReadWriteStream >> collectionSpecies [ +SourceFileBufferedReadWriteStream >> collectionSpecies [ ^ innerStream isBinary ifTrue: [ ByteArray ] ifFalse: [ String ] ] { #category : #initialization } -ZnBufferedReadWriteStream >> defaultBufferSize [ +SourceFileBufferedReadWriteStream >> defaultBufferSize [ ^ 2 raisedToInteger: 16 ] { #category : #writing } -ZnBufferedReadWriteStream >> flush [ +SourceFileBufferedReadWriteStream >> flush [ isDirty ifFalse: [ ^ self ]. @@ -127,31 +118,31 @@ ZnBufferedReadWriteStream >> flush [ ] { #category : #testing } -ZnBufferedReadWriteStream >> isBinary [ +SourceFileBufferedReadWriteStream >> isBinary [ ^ innerStream isBinary ] { #category : #private } -ZnBufferedReadWriteStream >> isPositionInBuffer: aPosition [ +SourceFileBufferedReadWriteStream >> isPositionInBuffer: aPosition [ ^ aPosition between: bufferOffset and: bufferOffset + bufferLength ] { #category : #testing } -ZnBufferedReadWriteStream >> isReadOnly [ +SourceFileBufferedReadWriteStream >> isReadOnly [ ^ false ] { #category : #testing } -ZnBufferedReadWriteStream >> isStream [ +SourceFileBufferedReadWriteStream >> isStream [ ^ true ] { #category : #reading } -ZnBufferedReadWriteStream >> next [ +SourceFileBufferedReadWriteStream >> next [ | value | self atEnd @@ -167,7 +158,7 @@ ZnBufferedReadWriteStream >> next [ ] { #category : #reading } -ZnBufferedReadWriteStream >> next: aQuantity [ +SourceFileBufferedReadWriteStream >> next: aQuantity [ | read collection | @@ -184,7 +175,7 @@ ZnBufferedReadWriteStream >> next: aQuantity [ ] { #category : #writing } -ZnBufferedReadWriteStream >> next: aQuantity putAll: aCollection startingAt: startingAt [ +SourceFileBufferedReadWriteStream >> next: aQuantity putAll: aCollection startingAt: startingAt [ aCollection readStreamDo: [ :s | s skip: startingAt - 1. @@ -192,7 +183,7 @@ ZnBufferedReadWriteStream >> next: aQuantity putAll: aCollection startingAt: sta ] { #category : #writing } -ZnBufferedReadWriteStream >> nextPut: anElement [ +SourceFileBufferedReadWriteStream >> nextPut: anElement [ self checkBufferFor: nextPosition. @@ -203,13 +194,13 @@ ZnBufferedReadWriteStream >> nextPut: anElement [ ] { #category : #writing } -ZnBufferedReadWriteStream >> nextPutAll: aCollection [ +SourceFileBufferedReadWriteStream >> nextPutAll: aCollection [ aCollection do: [ :each | self nextPut: each ] ] { #category : #'instance creation' } -ZnBufferedReadWriteStream >> on: aStream [ +SourceFileBufferedReadWriteStream >> on: aStream [ innerStream := aStream. nextPosition := aStream position + 1. @@ -225,7 +216,7 @@ ZnBufferedReadWriteStream >> on: aStream [ ] { #category : #reading } -ZnBufferedReadWriteStream >> peek [ +SourceFileBufferedReadWriteStream >> peek [ | value | value := self next. @@ -237,21 +228,21 @@ ZnBufferedReadWriteStream >> peek [ ] { #category : #querying } -ZnBufferedReadWriteStream >> position [ +SourceFileBufferedReadWriteStream >> position [ ^ nextPosition - 1 ] { #category : #querying } -ZnBufferedReadWriteStream >> position: aNewPosition [ +SourceFileBufferedReadWriteStream >> position: aNewPosition [ ^ nextPosition := aNewPosition + 1 ] { #category : #reading } -ZnBufferedReadWriteStream >> readInto: aBuffer startingAt: startingAt count: count [ +SourceFileBufferedReadWriteStream >> readInto: aBuffer startingAt: startingAt count: count [ | remainingCount maxPositionInBuffer read countToRead | @@ -279,7 +270,7 @@ ZnBufferedReadWriteStream >> readInto: aBuffer startingAt: startingAt count: cou ] { #category : #private } -ZnBufferedReadWriteStream >> refreshBufferFrom: aPosition [ +SourceFileBufferedReadWriteStream >> refreshBufferFrom: aPosition [ | nextBufferPosition | @@ -303,19 +294,19 @@ ZnBufferedReadWriteStream >> refreshBufferFrom: aPosition [ ] { #category : #reading } -ZnBufferedReadWriteStream >> setToEnd [ +SourceFileBufferedReadWriteStream >> setToEnd [ nextPosition := (streamSize max: (bufferOffset + bufferLength)) + 1 ] { #category : #querying } -ZnBufferedReadWriteStream >> size [ +SourceFileBufferedReadWriteStream >> size [ ^ streamSize max: (bufferOffset + bufferLength) ] { #category : #'initialize-release' } -ZnBufferedReadWriteStream >> sizeBuffer: size [ +SourceFileBufferedReadWriteStream >> sizeBuffer: size [ bufferLength > 0 ifTrue: [ self flush ]. bufferLength := 0. @@ -324,13 +315,13 @@ ZnBufferedReadWriteStream >> sizeBuffer: size [ ] { #category : #reading } -ZnBufferedReadWriteStream >> skip: aQuantity [ +SourceFileBufferedReadWriteStream >> skip: aQuantity [ nextPosition := nextPosition + aQuantity ] { #category : #reading } -ZnBufferedReadWriteStream >> upTo: value [ +SourceFileBufferedReadWriteStream >> upTo: value [ "Read upto but not including value and return them as a collection. If value is not found, return the entire contents of the stream. This could be further optimzed." @@ -342,7 +333,7 @@ ZnBufferedReadWriteStream >> upTo: value [ ] { #category : #reading } -ZnBufferedReadWriteStream >> upToEnd [ +SourceFileBufferedReadWriteStream >> upToEnd [ "Read elements until the stream is atEnd and return them as a collection." | toRead | diff --git a/src/Zinc-Character-Encoding-Core/ZnCharacterReadWriteStream.class.st b/src/System-Sources/SourceFileCharacterReadWriteStream.class.st similarity index 64% rename from src/Zinc-Character-Encoding-Core/ZnCharacterReadWriteStream.class.st rename to src/System-Sources/SourceFileCharacterReadWriteStream.class.st index 264dccccd59..db3449bb9f2 100644 --- a/src/Zinc-Character-Encoding-Core/ZnCharacterReadWriteStream.class.st +++ b/src/System-Sources/SourceFileCharacterReadWriteStream.class.st @@ -2,17 +2,17 @@ I am a read-write character stream. I am mainly used to open the Pharo source and changes files. " Class { - #name : #ZnCharacterReadWriteStream, + #name : #SourceFileCharacterReadWriteStream, #superclass : #Object, #instVars : [ 'readStream', 'writeStream' ], - #category : #'Zinc-Character-Encoding-Core' + #category : #'System-Sources-Streams' } { #category : #'instance creation' } -ZnCharacterReadWriteStream class >> on: wrappedStream encoding: encoding [ +SourceFileCharacterReadWriteStream class >> on: wrappedStream encoding: encoding [ ^ self new on: wrappedStream encoding: encoding; @@ -20,71 +20,71 @@ ZnCharacterReadWriteStream class >> on: wrappedStream encoding: encoding [ ] { #category : #accessing } -ZnCharacterReadWriteStream >> atEnd [ +SourceFileCharacterReadWriteStream >> atEnd [ ^ readStream atEnd ] { #category : #accessing } -ZnCharacterReadWriteStream >> close [ +SourceFileCharacterReadWriteStream >> close [ writeStream close ] { #category : #testing } -ZnCharacterReadWriteStream >> closed [ +SourceFileCharacterReadWriteStream >> closed [ ^ writeStream closed ] { #category : #accessing } -ZnCharacterReadWriteStream >> collectionSpecies [ +SourceFileCharacterReadWriteStream >> collectionSpecies [ ^ String ] { #category : #accessing } -ZnCharacterReadWriteStream >> cr [ +SourceFileCharacterReadWriteStream >> cr [ writeStream cr ] { #category : #accessing } -ZnCharacterReadWriteStream >> flush [ +SourceFileCharacterReadWriteStream >> flush [ writeStream flush ] { #category : #testing } -ZnCharacterReadWriteStream >> isReadOnly [ +SourceFileCharacterReadWriteStream >> isReadOnly [ ^ false ] { #category : #accessing } -ZnCharacterReadWriteStream >> next [ +SourceFileCharacterReadWriteStream >> next [ ^ readStream next ] { #category : #accessing } -ZnCharacterReadWriteStream >> next: anInteger [ +SourceFileCharacterReadWriteStream >> next: anInteger [ ^ readStream next: anInteger ] { #category : #accessing } -ZnCharacterReadWriteStream >> nextPut: aCharacter [ +SourceFileCharacterReadWriteStream >> nextPut: aCharacter [ ^ writeStream nextPut: aCharacter ] { #category : #accessing } -ZnCharacterReadWriteStream >> nextPutAll: aString [ +SourceFileCharacterReadWriteStream >> nextPutAll: aString [ ^ writeStream nextPutAll: aString ] { #category : #'instance creation' } -ZnCharacterReadWriteStream >> on: aStream encoding: encoding [ +SourceFileCharacterReadWriteStream >> on: aStream encoding: encoding [ | encoder | encoder := encoding asZnCharacterEncoder. readStream := ZnCharacterReadStream on: aStream encoding: encoder. @@ -92,66 +92,66 @@ ZnCharacterReadWriteStream >> on: aStream encoding: encoding [ ] { #category : #accessing } -ZnCharacterReadWriteStream >> peek [ +SourceFileCharacterReadWriteStream >> peek [ ^ readStream peek ] { #category : #accessing } -ZnCharacterReadWriteStream >> position [ +SourceFileCharacterReadWriteStream >> position [ ^ readStream position ] { #category : #accessing } -ZnCharacterReadWriteStream >> position: anInteger [ +SourceFileCharacterReadWriteStream >> position: anInteger [ readStream position: anInteger ] { #category : #accessing } -ZnCharacterReadWriteStream >> print: object [ +SourceFileCharacterReadWriteStream >> print: object [ writeStream print: object ] { #category : #accessing } -ZnCharacterReadWriteStream >> readOnlyCopy [ +SourceFileCharacterReadWriteStream >> readOnlyCopy [ ^ readStream ] { #category : #accessing } -ZnCharacterReadWriteStream >> setToEnd [ +SourceFileCharacterReadWriteStream >> setToEnd [ writeStream setToEnd ] { #category : #accessing } -ZnCharacterReadWriteStream >> size [ +SourceFileCharacterReadWriteStream >> size [ ^ readStream size ] { #category : #accessing } -ZnCharacterReadWriteStream >> skip: anInteger [ +SourceFileCharacterReadWriteStream >> skip: anInteger [ readStream skip: anInteger ] { #category : #accessing } -ZnCharacterReadWriteStream >> space [ +SourceFileCharacterReadWriteStream >> space [ writeStream space ] { #category : #accessing } -ZnCharacterReadWriteStream >> tab [ +SourceFileCharacterReadWriteStream >> tab [ writeStream tab ] { #category : #accessing } -ZnCharacterReadWriteStream >> upToAll: aCollection [ +SourceFileCharacterReadWriteStream >> upToAll: aCollection [ "Answer a subcollection from the current access position to the occurrence (if any, but not inclusive) of aCollection. If aCollection is not in the stream, answer the entire rest of the stream." ^ self collectionSpecies streamContents: [ :out | @@ -175,7 +175,7 @@ ZnCharacterReadWriteStream >> upToAll: aCollection [ ] { #category : #accessing } -ZnCharacterReadWriteStream >> upToEnd [ +SourceFileCharacterReadWriteStream >> upToEnd [ ^ readStream upToEnd ] diff --git a/src/Tests/SourceFileArrayTest.class.st b/src/Tests/SourceFileArrayTest.class.st index b5a8c75ddcd..85d38a1acf3 100644 --- a/src/Tests/SourceFileArrayTest.class.st +++ b/src/Tests/SourceFileArrayTest.class.st @@ -377,10 +377,10 @@ SourceFileArrayTest >> testWriteToBufferedStream [ array := SourceFileArray new. array changesFileStream: - (ZnCharacterReadWriteStream on: (ZnBufferedReadWriteStream on: (fs binaryWriteStreamOn: (fs / 'changes.chunk') path)) encoding: #utf8). + (SourceFileCharacterReadWriteStream on: (SourceFileBufferedReadWriteStream on: (fs binaryWriteStreamOn: (fs / 'changes.chunk') path)) encoding: #utf8). array sourcesFileStream: - (ZnCharacterReadWriteStream on: (ZnBufferedReadWriteStream on: (fs binaryWriteStreamOn: (fs / 'sources.chunk') path)) encoding: #utf8). + (SourceFileCharacterReadWriteStream on: (SourceFileBufferedReadWriteStream on: (fs binaryWriteStreamOn: (fs / 'sources.chunk') path)) encoding: #utf8). array writeSource: 'some source' diff --git a/src/Zinc-Character-Encoding-Tests/ZnBufferedReadWriteStreamTest.class.st b/src/Tests/SourceFileBufferedReadWriteStreamTest.class.st similarity index 70% rename from src/Zinc-Character-Encoding-Tests/ZnBufferedReadWriteStreamTest.class.st rename to src/Tests/SourceFileBufferedReadWriteStreamTest.class.st index 0bd1488e5ec..ea31c9323bb 100644 --- a/src/Zinc-Character-Encoding-Tests/ZnBufferedReadWriteStreamTest.class.st +++ b/src/Tests/SourceFileBufferedReadWriteStreamTest.class.st @@ -1,13 +1,13 @@ Class { - #name : #ZnBufferedReadWriteStreamTest, + #name : #SourceFileBufferedReadWriteStreamTest, #superclass : #TestCase, - #category : #'Zinc-Character-Encoding-Tests' + #category : #Tests } { #category : #tests } -ZnBufferedReadWriteStreamTest >> testBuffering [ +SourceFileBufferedReadWriteStreamTest >> testBuffering [ | stream | - stream := ZnBufferedReadWriteStream on: '01234567890123456789' readStream. + stream := SourceFileBufferedReadWriteStream on: '01234567890123456789' readStream. stream sizeBuffer: 8. self deny: stream atEnd. self assert: (stream next: 10) equals: '0123456789'. @@ -17,12 +17,12 @@ ZnBufferedReadWriteStreamTest >> testBuffering [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testNextPutAllStartingAt [ +SourceFileBufferedReadWriteStreamTest >> testNextPutAllStartingAt [ | stringStream | stringStream := ReadWriteStream with: ''. - ZnBufferedReadWriteStream on: stringStream do: [ : bufferedStream | + SourceFileBufferedReadWriteStream on: stringStream do: [ : bufferedStream | bufferedStream sizeBuffer: 8. bufferedStream next: 5 putAll: '--012345--' startingAt: 3. bufferedStream next: 5 putAll: '0123456789XX' startingAt: 6. @@ -33,9 +33,9 @@ ZnBufferedReadWriteStreamTest >> testNextPutAllStartingAt [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testPeek [ +SourceFileBufferedReadWriteStreamTest >> testPeek [ | stream | - stream := ZnBufferedReadWriteStream on: '0123456789' readStream. + stream := SourceFileBufferedReadWriteStream on: '0123456789' readStream. stream sizeBuffer: 8. '0123456789' do: [ :each | self deny: stream atEnd. @@ -47,9 +47,9 @@ ZnBufferedReadWriteStreamTest >> testPeek [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testReadInto [ +SourceFileBufferedReadWriteStreamTest >> testReadInto [ | stream buffer count | - stream := ZnBufferedReadWriteStream on: '0123456789' readStream. + stream := SourceFileBufferedReadWriteStream on: '0123456789' readStream. stream sizeBuffer: 8. buffer := String new: 6 withAll: Character space. stream skip: 1. @@ -63,9 +63,9 @@ ZnBufferedReadWriteStreamTest >> testReadInto [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testReadIntoLarger [ +SourceFileBufferedReadWriteStreamTest >> testReadIntoLarger [ | stream buffer count | - stream := ZnBufferedReadWriteStream on: '0123456789' readStream. + stream := SourceFileBufferedReadWriteStream on: '0123456789' readStream. stream sizeBuffer: 4. buffer := String new: 10. count := stream readInto: buffer startingAt: 1 count: 10. @@ -74,7 +74,7 @@ ZnBufferedReadWriteStreamTest >> testReadIntoLarger [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testReadThenWrite [ +SourceFileBufferedReadWriteStreamTest >> testReadThenWrite [ | stream stringStream | ((SystemVersion current major < 7) or: [ SystemVersion current build < 690 ]) @@ -82,7 +82,7 @@ ZnBufferedReadWriteStreamTest >> testReadThenWrite [ stringStream := ReadWriteStream with: '0123456789'. stringStream reset. - stream := ZnBufferedReadWriteStream on: stringStream. + stream := SourceFileBufferedReadWriteStream on: stringStream. stream sizeBuffer: 8. stream next: 4. @@ -99,9 +99,9 @@ ZnBufferedReadWriteStreamTest >> testReadThenWrite [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testReadUpTo [ +SourceFileBufferedReadWriteStreamTest >> testReadUpTo [ | stream | - stream := ZnBufferedReadWriteStream on: '0123456789' readStream. + stream := SourceFileBufferedReadWriteStream on: '0123456789' readStream. stream sizeBuffer: 8. self assert: (stream upTo: $5) equals: '01234'. self assert: stream upToEnd equals: '6789'. @@ -109,9 +109,9 @@ ZnBufferedReadWriteStreamTest >> testReadUpTo [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testReadUpToEnd [ +SourceFileBufferedReadWriteStreamTest >> testReadUpToEnd [ | stream | - stream := ZnBufferedReadWriteStream on: '0123456789' readStream. + stream := SourceFileBufferedReadWriteStream on: '0123456789' readStream. stream sizeBuffer: 4. stream next: 2. self assert: stream upToEnd equals: '23456789'. @@ -119,11 +119,11 @@ ZnBufferedReadWriteStreamTest >> testReadUpToEnd [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testSetAtEnd [ +SourceFileBufferedReadWriteStreamTest >> testSetAtEnd [ | stream originalStream| - stream := ZnBufferedReadWriteStream on: (originalStream := ReadWriteStream with: '0123456789'). + stream := SourceFileBufferedReadWriteStream on: (originalStream := ReadWriteStream with: '0123456789'). originalStream reset. stream setToEnd. @@ -136,7 +136,7 @@ ZnBufferedReadWriteStreamTest >> testSetAtEnd [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testWriteThenRead [ +SourceFileBufferedReadWriteStreamTest >> testWriteThenRead [ | stream stringStream | ((SystemVersion current major < 7) or: [ SystemVersion current build < 690 ]) @@ -144,7 +144,7 @@ ZnBufferedReadWriteStreamTest >> testWriteThenRead [ stringStream := ReadWriteStream with: '0123456789'. stringStream reset. - stream := ZnBufferedReadWriteStream on: stringStream. + stream := SourceFileBufferedReadWriteStream on: stringStream. stream sizeBuffer: 8. stream nextPutAll: 'ABCD'. @@ -159,11 +159,11 @@ ZnBufferedReadWriteStreamTest >> testWriteThenRead [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testWriting [ +SourceFileBufferedReadWriteStreamTest >> testWriting [ | stringStream bufferedStream | stringStream := ReadWriteStream with: ''. - bufferedStream := ZnBufferedReadWriteStream on: stringStream. + bufferedStream := SourceFileBufferedReadWriteStream on: stringStream. 0 to: 9 do: [ :each | bufferedStream nextPut: (Character digitValue: each) ]. bufferedStream flush. @@ -171,11 +171,11 @@ ZnBufferedReadWriteStreamTest >> testWriting [ ] { #category : #tests } -ZnBufferedReadWriteStreamTest >> testWritingOverflow [ +SourceFileBufferedReadWriteStreamTest >> testWritingOverflow [ | stringStream bufferedStream | stringStream := ReadWriteStream with: ''. - bufferedStream := ZnBufferedReadWriteStream on: stringStream. + bufferedStream := SourceFileBufferedReadWriteStream on: stringStream. bufferedStream sizeBuffer: 8. 0 to: 9 do: [ :each | bufferedStream nextPut: (Character digitValue: each) ]. bufferedStream nextPutAll: '0123'; nextPutAll: '4567'; nextPutAll: '89'. diff --git a/src/Zinc-FileSystem/ZnFileSystemUtils.class.st b/src/Zinc-FileSystem/ZnFileSystemUtils.class.st index edd96a70a9c..16db657ad5e 100644 --- a/src/Zinc-FileSystem/ZnFileSystemUtils.class.st +++ b/src/Zinc-FileSystem/ZnFileSystemUtils.class.st @@ -19,9 +19,7 @@ ZnFileSystemUtils class >> baseNameFor: fileName [ ZnFileSystemUtils class >> binaryFileStreamFor: fileName [ | fileReference | fileReference := fileName asFileReference. - ^ (fileReference respondsTo: #binaryReadWriteStream) - ifTrue: [ fileReference binaryReadWriteStream ] - ifFalse: [ fileReference writeStream binary ] + ^ fileReference writeStream binary ] { #category : #defaults } From afc6760084bdbcf850c808151e3dc88c18ac4435 Mon Sep 17 00:00:00 2001 From: Pablo Tesone Date: Fri, 27 Sep 2019 15:23:40 +0200 Subject: [PATCH 2/3] Fixing user of file streams --- src/Zinc-FileSystem/ZnFileSystemUtils.class.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Zinc-FileSystem/ZnFileSystemUtils.class.st b/src/Zinc-FileSystem/ZnFileSystemUtils.class.st index 16db657ad5e..48ec7f2ceea 100644 --- a/src/Zinc-FileSystem/ZnFileSystemUtils.class.st +++ b/src/Zinc-FileSystem/ZnFileSystemUtils.class.st @@ -19,7 +19,7 @@ ZnFileSystemUtils class >> baseNameFor: fileName [ ZnFileSystemUtils class >> binaryFileStreamFor: fileName [ | fileReference | fileReference := fileName asFileReference. - ^ fileReference writeStream binary + ^ fileReference binaryWriteStream ] { #category : #defaults } From cefa03e51d1e25c69e5620217f20414c9c6edd72 Mon Sep 17 00:00:00 2001 From: Pablo Tesone Date: Sun, 29 Sep 2019 15:11:03 +0200 Subject: [PATCH 3/3] Fixing broken tests that were using the old read/write stream --- src/Zinc-FileSystem/ZnFileSystemUtils.class.st | 6 ++++++ src/Zinc-HTTP/ZnClient.class.st | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Zinc-FileSystem/ZnFileSystemUtils.class.st b/src/Zinc-FileSystem/ZnFileSystemUtils.class.st index 48ec7f2ceea..e8b2f6587f5 100644 --- a/src/Zinc-FileSystem/ZnFileSystemUtils.class.st +++ b/src/Zinc-FileSystem/ZnFileSystemUtils.class.st @@ -15,6 +15,12 @@ ZnFileSystemUtils class >> baseNameFor: fileName [ ^ fileName asFileReference basename ] +{ #category : #streams } +ZnFileSystemUtils class >> binaryFileReadStreamFor: fileName [ + + ^ fileName asFileReference binaryReadStream +] + { #category : #streams } ZnFileSystemUtils class >> binaryFileStreamFor: fileName [ | fileReference | diff --git a/src/Zinc-HTTP/ZnClient.class.st b/src/Zinc-HTTP/ZnClient.class.st index 49bef1a0f85..f8e63f52c72 100644 --- a/src/Zinc-HTTP/ZnClient.class.st +++ b/src/Zinc-HTTP/ZnClient.class.st @@ -1486,7 +1486,7 @@ ZnClient >> uploadEntityFrom: path [ You can then use #put or #post to actually do an upload." | stream type length | - stream := ZnFileSystemUtils binaryFileStreamFor: path. + stream := ZnFileSystemUtils binaryFileReadStreamFor: path. type := ZnMimeType forFilenameExtension: (ZnFileSystemUtils extensionFor: path). length := ZnFileSystemUtils fileSizeFor: path. self entity: (ZnStreamingEntity readFrom: stream usingType: type andLength: length)