[picocontainer-scm] [scm-git][7/8] Fix threadlocal memory leak.

Michael Rimov <git-yCVjj/[email protected]> Wed, 10 Jul 2013 13:32:30 -0500 (CDT)
Newsgroups gmane.comp.java.picocontainer.cvs
Message-ID <[email protected]>
--95014bdabcea21c3f54cfe5c4d1d18a9bfe10f8f
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

commit 2c7e1e43ea142c0f571f278736b89c6031861787=0AAuthor:     Michael Rimov=
 <[email protected]>=0AAuthorDate: Wed, 10 Jul 2013 10:17:06 -0700=
=0ACommit:     Michael Rimov <[email protected]>=0ACommitDate: Wed,=
 10 Jul 2013 10:17:06 -0700=0A=0A    Fix threadlocal memory leak.=0A=0Adiff=
 --git a/web/web-core/src/java/com/picocontainer/web/PicoServletContainerLi=
stener.java b/web/web-core/src/java/com/picocontainer/web/PicoServletContai=
nerListener.java=0Aindex 3a99eae..f9581a2 100644=0A--- a/web/web-core/src/j=
ava/com/picocontainer/web/PicoServletContainerListener.java=0A+++ b/web/web=
-core/src/java/com/picocontainer/web/PicoServletContainerListener.java=0A@@=
 -221,7 +221,9 @@ public class PicoServletContainerListener implements Serv=
letContextListener, Htt=0A 	        dispose(scopedContainers.getApplication=
Container());=0A         }=0A         =0A+        if (scopedContainers !=3D=
 null) {=0A             scopedContainers.dispose();        	=0A+        }=
=0A         removeScopedContainersFromContext(event.getServletContext());=
=0A     }=0A =0Adiff --git a/web/web-core/src/java/com/picocontainer/web/pr=
oviders/LateInstantiatingComponentMonitor.java b/web/web-core/src/java/com/=
picocontainer/web/providers/LateInstantiatingComponentMonitor.java=0Aindex =
31a03c7..5af1b24 100644=0A--- a/web/web-core/src/java/com/picocontainer/web=
/providers/LateInstantiatingComponentMonitor.java=0A+++ b/web/web-core/src/=
java/com/picocontainer/web/providers/LateInstantiatingComponentMonitor.java=
=0A@@ -14,7 +14,7 @@ import com.picocontainer.web.StringFromRequest;=0A @Su=
ppressWarnings("serial")=0A public class LateInstantiatingComponentMonitor =
extends NullComponentMonitor implements Serializable {=0A 	=0A-	private Com=
ponentMonitor delegate;=0A+	private final ComponentMonitor delegate;=0A =0A=
 	public LateInstantiatingComponentMonitor(ComponentMonitor delegate) {=0A =
		this.delegate =3D delegate;=0A=0A=0A=0A=

--95014bdabcea21c3f54cfe5c4d1d18a9bfe10f8f
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w=
3.org/TR/REC-html40/loose.dtd">=0A<html style=3D"font-size: 12px;">=0A<head=
><meta http-equiv=3D"Content-type" content=3D"text/html; charset=3Dutf-8"><=
/head>=0A<body style=3D"font-size: 12px;">=0A<style type=3D"text/css">=0Adt=
:after { content: ':' !important; }=0A></style>=0A<dl class=3D"title" style=
=3D"font-size: 12px; font-family: Verdana; background-color: #ddd; padding:=
 10px;">=0A<dt style=3D"font-size: 12px; float: left; font-weight: bold; mi=
n-width: 6em;">Commit</dt>=0A<dd style=3D"font-size: 12px;">2c7e1e43ea142c0=
f571f278736b89c6031861787</dd>=0A<dt style=3D"font-size: 12px; float: left;=
 font-weight: bold; min-width: 6em;">Branch</dt>=0A<dd style=3D"font-size: =
12px;">master</dd>=0A<dt style=3D"font-size: 12px; float: left; font-weight=
: bold; min-width: 6em;">Author</dt>=0A<dd style=3D"font-size: 12px;">Micha=
el Rimov &lt;[email protected]&gt;</dd>=0A<dt style=3D"font-size: 1=
2px; float: left; font-weight: bold; min-width: 6em;">Date</dt>=0A<dd style=
=3D"font-size: 12px;">Wed, 10 Jul 2013 10:17:06 -0700</dd>=0A<dt style=3D"f=
ont-size: 12px; float: left; font-weight: bold; min-width: 6em;">Message</d=
t>=0A<dd class=3D"" style=3D"font-size: 12px;">Fix threadlocal memory leak.=
</dd>=0A</dl>=0A<h2 id=3D"web/web-core/src/java/com/picocontainer/web/PicoS=
ervletContainerListener.java" style=3D"font-size: 12px; font-family: Verdan=
a; font-weight: bold; line-height: 25px; margin-bottom: 2px; padding-left: =
5px; background-color: #bbb;">Changed file web/web-core/src/java/com/picoco=
ntainer/web/PicoServletContainerListener.java</h2>=0A=0A<table style=3D"fon=
t-size: 12px; width: 100%; border-collapse: collapse;">=0A<tr style=3D"font=
-size: 12px;">=0A<td class=3D"ln" style=3D"font-size: 12px; color: #000; fo=
nt-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; width: =
23px; text-align: right; background-color: #ccc;" align=3D"right" bgcolor=
=3D"#ccc">221</td>=0A<td class=3D"ln" style=3D"font-size: 12px; color: #000=
; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; wid=
th: 23px; text-align: right; background-color: #ccc;" align=3D"right" bgcol=
or=3D"#ccc">221</td>=0A<td style=3D"font-size: 12px; color: #000; font-fami=
ly: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace;">=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0dispose(scopedC=
ontainers.getApplicationContainer());</td>=0A</tr>=0A<tr style=3D"font-size=
: 12px;">=0A<td class=3D"ln" style=3D"font-size: 12px; color: #000; font-fa=
mily: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; width: 23px;=
 text-align: right; background-color: #ccc;" align=3D"right" bgcolor=3D"#cc=
c">222</td>=0A<td class=3D"ln" style=3D"font-size: 12px; color: #000; font-=
family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; width: 23p=
x; text-align: right; background-color: #ccc;" align=3D"right" bgcolor=3D"#=
ccc">222</td>=0A<td style=3D"font-size: 12px; color: #000; font-family: 'Bi=
tstream Vera Sans Mono','Monaco','Courier',monospace;">=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0}</td>=0A</tr>=0A<tr style=3D"font-size=
: 12px;">=0A<td class=3D"ln" style=3D"font-size: 12px; color: #000; font-fa=
mily: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; width: 23px;=
 text-align: right; background-color: #ccc;" align=3D"right" bgcolor=3D"#cc=
c">223</td>=0A<td class=3D"ln" style=3D"font-size: 12px; color: #000; font-=
family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; width: 23p=
x; text-align: right; background-color: #ccc;" align=3D"right" bgcolor=3D"#=
ccc">223</td>=0A<td style=3D"font-size: 12px; color: #000; font-family: 'Bi=
tstream Vera Sans Mono','Monaco','Courier',monospace;">=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0</td>=0A</tr>=0A<tr class=3D"a" style=
=3D"font-size: 12px; background-color: #dfd;" bgcolor=3D"#dfd">=0A<td class=
=3D"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera=
 Sans Mono','Monaco','Courier',monospace; width: 23px; text-align: right; b=
ackground-color: #ccc;" align=3D"right" bgcolor=3D"#ccc"></td>=0A<td class=
=3D"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera=
 Sans Mono','Monaco','Courier',monospace; width: 23px; text-align: right; b=
ackground-color: #ccc;" align=3D"right" bgcolor=3D"#ccc">224</td>=0A<td sty=
le=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono'=
,'Monaco','Courier',monospace;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0if=C2=A0(scopedContainers=C2=A0!=3D=C2=A0null)=C2=A0{</td>=0A</=
tr>=0A<tr style=3D"font-size: 12px;">=0A<td class=3D"ln" style=3D"font-size=
: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Cour=
ier',monospace; width: 23px; text-align: right; background-color: #ccc;" al=
ign=3D"right" bgcolor=3D"#ccc">224</td>=0A<td class=3D"ln" style=3D"font-si=
ze: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Co=
urier',monospace; width: 23px; text-align: right; background-color: #ccc;" =
align=3D"right" bgcolor=3D"#ccc">225</td>=0A<td style=3D"font-size: 12px; c=
olor: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',mono=
space;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0scopedContainers.dispose();=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0</td>=0A</tr>=0A<tr class=3D"a" style=
=3D"font-size: 12px; background-color: #dfd;" bgcolor=3D"#dfd">=0A<td class=
=3D"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera=
 Sans Mono','Monaco','Courier',monospace; width: 23px; text-align: right; b=
ackground-color: #ccc;" align=3D"right" bgcolor=3D"#ccc"></td>=0A<td class=
=3D"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera=
 Sans Mono','Monaco','Courier',monospace; width: 23px; text-align: right; b=
ackground-color: #ccc;" align=3D"right" bgcolor=3D"#ccc">226</td>=0A<td sty=
le=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono'=
,'Monaco','Courier',monospace;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0}</td>=0A</tr>=0A<tr style=3D"font-size: 12px;">=0A<td class=3D=
"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sa=
ns Mono','Monaco','Courier',monospace; width: 23px; text-align: right; back=
ground-color: #ccc;" align=3D"right" bgcolor=3D"#ccc">225</td>=0A<td class=
=3D"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera=
 Sans Mono','Monaco','Courier',monospace; width: 23px; text-align: right; b=
ackground-color: #ccc;" align=3D"right" bgcolor=3D"#ccc">227</td>=0A<td sty=
le=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono'=
,'Monaco','Courier',monospace;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0removeScopedContainersFromContext(event.getServletContext());</=
td>=0A</tr>=0A<tr style=3D"font-size: 12px;">=0A<td class=3D"ln" style=3D"f=
ont-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monac=
o','Courier',monospace; width: 23px; text-align: right; background-color: #=
ccc;" align=3D"right" bgcolor=3D"#ccc">226</td>=0A<td class=3D"ln" style=3D=
"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Mon=
aco','Courier',monospace; width: 23px; text-align: right; background-color:=
 #ccc;" align=3D"right" bgcolor=3D"#ccc">228</td>=0A<td style=3D"font-size:=
 12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Couri=
er',monospace;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0}</td>=0A</tr>=0A<tr style=3D=
"font-size: 12px;">=0A<td class=3D"ln" style=3D"font-size: 12px; color: #00=
0; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; wi=
dth: 23px; text-align: right; background-color: #ccc;" align=3D"right" bgco=
lor=3D"#ccc">227</td>=0A<td class=3D"ln" style=3D"font-size: 12px; color: #=
000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; =
width: 23px; text-align: right; background-color: #ccc;" align=3D"right" bg=
color=3D"#ccc">229</td>=0A<td style=3D"font-size: 12px; color: #000; font-f=
amily: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace;">=C2=A0</td=
>=0A</tr>=0A</table>=0A<h2 id=3D"web/web-core/src/java/com/picocontainer/we=
b/providers/LateInstantiatingComponentMonitor.java" style=3D"font-size: 12p=
x; font-family: Verdana; font-weight: bold; line-height: 25px; margin-botto=
m: 2px; padding-left: 5px; background-color: #bbb;">Changed file web/web-co=
re/src/java/com/picocontainer/web/providers/LateInstantiatingComponentMonit=
or.java</h2>=0A=0A<table style=3D"font-size: 12px; width: 100%; border-coll=
apse: collapse;">=0A<tr style=3D"font-size: 12px;">=0A<td class=3D"ln" styl=
e=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono',=
'Monaco','Courier',monospace; width: 23px; text-align: right; background-co=
lor: #ccc;" align=3D"right" bgcolor=3D"#ccc">14</td>=0A<td class=3D"ln" sty=
le=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono'=
,'Monaco','Courier',monospace; width: 23px; text-align: right; background-c=
olor: #ccc;" align=3D"right" bgcolor=3D"#ccc">14</td>=0A<td style=3D"font-s=
ize: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','C=
ourier',monospace;">=C2=A0@SuppressWarnings("serial")</td>=0A</tr>=0A<tr st=
yle=3D"font-size: 12px;">=0A<td class=3D"ln" style=3D"font-size: 12px; colo=
r: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospa=
ce; width: 23px; text-align: right; background-color: #ccc;" align=3D"right=
" bgcolor=3D"#ccc">15</td>=0A<td class=3D"ln" style=3D"font-size: 12px; col=
or: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monosp=
ace; width: 23px; text-align: right; background-color: #ccc;" align=3D"righ=
t" bgcolor=3D"#ccc">15</td>=0A<td style=3D"font-size: 12px; color: #000; fo=
nt-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace;">=C2=A0=
public=C2=A0class=C2=A0LateInstantiatingComponentMonitor=C2=A0extends=C2=A0=
NullComponentMonitor=C2=A0implements=C2=A0Serializable=C2=A0{</td>=0A</tr>=
=0A<tr style=3D"font-size: 12px;">=0A<td class=3D"ln" style=3D"font-size: 1=
2px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier=
',monospace; width: 23px; text-align: right; background-color: #ccc;" align=
=3D"right" bgcolor=3D"#ccc">16</td>=0A<td class=3D"ln" style=3D"font-size: =
12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courie=
r',monospace; width: 23px; text-align: right; background-color: #ccc;" alig=
n=3D"right" bgcolor=3D"#ccc">16</td>=0A<td style=3D"font-size: 12px; color:=
 #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace=
;">=C2=A0=C2=A0=C2=A0=C2=A0</td>=0A</tr>=0A<tr class=3D"r" style=3D"font-si=
ze: 12px; background-color: #fdd;" bgcolor=3D"#fdd">=0A<td class=3D"ln" sty=
le=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono'=
,'Monaco','Courier',monospace; width: 23px; text-align: right; background-c=
olor: #ccc;" align=3D"right" bgcolor=3D"#ccc">17</td>=0A<td class=3D"ln" st=
yle=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono=
','Monaco','Courier',monospace; width: 23px; text-align: right; background-=
color: #ccc;" align=3D"right" bgcolor=3D"#ccc"></td>=0A<td style=3D"font-si=
ze: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Co=
urier',monospace;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0private=C2=A0ComponentMoni=
tor=C2=A0delegate;</td>=0A</tr>=0A<tr class=3D"a" style=3D"font-size: 12px;=
 background-color: #dfd;" bgcolor=3D"#dfd">=0A<td class=3D"ln" style=3D"fon=
t-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco'=
,'Courier',monospace; width: 23px; text-align: right; background-color: #cc=
c;" align=3D"right" bgcolor=3D"#ccc"></td>=0A<td class=3D"ln" style=3D"font=
-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco',=
'Courier',monospace; width: 23px; text-align: right; background-color: #ccc=
;" align=3D"right" bgcolor=3D"#ccc">17</td>=0A<td style=3D"font-size: 12px;=
 color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',mo=
nospace;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0private=C2=A0<span class=3D"aa" sty=
le=3D"font-size: 12px; background-color: #afa;">final=C2=A0</span>Component=
Monitor=C2=A0delegate;</td>=0A</tr>=0A<tr style=3D"font-size: 12px;">=0A<td=
 class=3D"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstrea=
m Vera Sans Mono','Monaco','Courier',monospace; width: 23px; text-align: ri=
ght; background-color: #ccc;" align=3D"right" bgcolor=3D"#ccc">18</td>=0A<t=
d class=3D"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstre=
am Vera Sans Mono','Monaco','Courier',monospace; width: 23px; text-align: r=
ight; background-color: #ccc;" align=3D"right" bgcolor=3D"#ccc">18</td>=0A<=
td style=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans=
 Mono','Monaco','Courier',monospace;">=C2=A0</td>=0A</tr>=0A<tr style=3D"fo=
nt-size: 12px;">=0A<td class=3D"ln" style=3D"font-size: 12px; color: #000; =
font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; width=
: 23px; text-align: right; background-color: #ccc;" align=3D"right" bgcolor=
=3D"#ccc">19</td>=0A<td class=3D"ln" style=3D"font-size: 12px; color: #000;=
 font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; widt=
h: 23px; text-align: right; background-color: #ccc;" align=3D"right" bgcolo=
r=3D"#ccc">19</td>=0A<td style=3D"font-size: 12px; color: #000; font-family=
: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace;">=C2=A0=C2=A0=C2=
=A0=C2=A0public=C2=A0LateInstantiatingComponentMonitor(ComponentMonitor=C2=
=A0delegate)=C2=A0{</td>=0A</tr>=0A<tr style=3D"font-size: 12px;">=0A<td cl=
ass=3D"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstream V=
era Sans Mono','Monaco','Courier',monospace; width: 23px; text-align: right=
; background-color: #ccc;" align=3D"right" bgcolor=3D"#ccc">20</td>=0A<td c=
lass=3D"ln" style=3D"font-size: 12px; color: #000; font-family: 'Bitstream =
Vera Sans Mono','Monaco','Courier',monospace; width: 23px; text-align: righ=
t; background-color: #ccc;" align=3D"right" bgcolor=3D"#ccc">20</td>=0A<td =
style=3D"font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans Mo=
no','Monaco','Courier',monospace;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0this.delegate=C2=A0=3D=C2=A0delegate;</td>=0A</tr>=0A</table>=0A<b=
r style=3D"font-size: 12px;"><br style=3D"font-size: 12px;">=0A</body>=0A</=
html>=0A=

--95014bdabcea21c3f54cfe5c4d1d18a9bfe10f8f--