AutoDeletedFilename.st
author Claus Gittinger <cg@exept.de>
Wed, 22 Oct 2008 08:42:16 +0200
changeset 11265 dd57cc0a379b
parent 10931 54107ed355be
child 11780 f7543590f82a
child 17711 39faaaf888b4
permissions -rw-r--r--
comment
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10847
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     1
"
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     2
 COPYRIGHT (c) 2007 by eXept Software AG
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     3
              All Rights Reserved
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     4
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     5
 This software is furnished under a license and may be used
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     6
 only in accordance with the terms of that license and with the
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     8
 be provided or otherwise made available to, or used by, any
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     9
 other person.  No title to or ownership of the software is
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    10
 hereby transferred.
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    11
"
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Filename subclass:#AutoDeletedFilename
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
	instanceVariableNames:''
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'System-Support'
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!AutoDeletedFilename class methodsFor:'documentation'!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
10847
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    23
copyright
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    24
"
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    25
 COPYRIGHT (c) 2007 by eXept Software AG
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    26
              All Rights Reserved
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    27
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    28
 This software is furnished under a license and may be used
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    29
 only in accordance with the terms of that license and with the
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    31
 be provided or otherwise made available to, or used by, any
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    32
 other person.  No title to or ownership of the software is
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    33
 hereby transferred.
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    34
"
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    35
!
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    36
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
documentation
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    Used with temporary files - these will automatically delete themself,
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    when no longer referenced.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    See -> Filename asAutoDeletedFilename
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
examples
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    the following file will be automatically deleted after some time:
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    48
                                                    [exBegin]
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    |f p|
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    f := Filename newTemporary.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    f writeStream
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
        nextPutLine:'hello';
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
        close.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    p := f pathName.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    Transcript showCR:p.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    f := f asAutoDeletedFilename.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    self assert:(p asFilename exists).
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    ObjectMemory collectGarbage.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    Delay waitForSeconds:2.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    self assert:(p asFilename exists).
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    f := nil.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    ObjectMemory collectGarbage.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    Delay waitForSeconds:2.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    self assert:(p asFilename exists not).
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    66
                                                    [exEnd]
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    67
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    68
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    69
    you can also delete it manually:
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    70
                                                    [exBegin]
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    71
    |f p|
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    72
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    73
    f := Filename newTemporary.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    74
    f writeStream
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    75
        nextPutLine:'hello';
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    76
        close.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    77
    p := f pathName.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    78
    Transcript showCR:p.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    79
    f := f asAutoDeletedFilename.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    80
    self assert:(p asFilename exists).
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    81
    ObjectMemory collectGarbage.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    82
    Delay waitForSeconds:2.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    83
    self assert:(p asFilename exists).
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    84
    f remove.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    85
    f := nil.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    86
    ObjectMemory collectGarbage.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    87
    Delay waitForSeconds:2.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    88
    self assert:(p asFilename exists not).
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    89
                                                    [exEnd]
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
! !
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
!AutoDeletedFilename methodsFor:'accessing'!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
finalize
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    96
"/    Transcript showCR:'AutoDeletedFilename: deleting ', self pathName.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    97
    super remove
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
setName:aString
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    super setName:aString.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    self registerForFinalization    
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
! !
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   105
!AutoDeletedFilename methodsFor:'removing'!
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   106
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   107
remove
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   108
    super remove.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   109
    self unregisterForFinalization
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   110
!
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   111
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   112
removeDirectory
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   113
    super removeDirectory.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   114
    self unregisterForFinalization
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   115
!
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   116
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   117
removeFile
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   118
    super removeFile.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   119
    self unregisterForFinalization
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   120
! !
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   121
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
!AutoDeletedFilename class methodsFor:'documentation'!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
version
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   125
    ^ '$Header: /cvs/stx/stx/libbasic/AutoDeletedFilename.st,v 1.3 2008-04-02 15:48:53 stefan Exp $'
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
! !