|
From: <jue...@we...> - 2004-07-08 09:44:05
|
I recommend BeanNameAware too, if you just want to become aware of the = bean name.=20 For general post-processing of a newly created bean instance, you could = define a BeanPostProcessor in the context, which will automatically = intercept all beans that this context creates: http://www.springframework.org/docs/api/org/springframework/beans/factory= /config/BeanPostProcessor.html Juergen -----Original Message----- From: spr...@li... [mailto:spr...@li...]On Behalf Of Chistophe Vanfleteren Sent: Thursday, July 08, 2004 11:26 AM To: spr...@li... Subject: Re: [Springframework-developer] Intercepting bean creation? On Thursday 08 July 2004 11:12, Mason, Ross wrote: > Hi, > I create a lot of different types of object in an applicationContext, = all > of which have a name property i.e. > > <bean id=3D"jmsConnector" = className=3D"org.mule.providers.jms.JmsConnector"> > <property name=3D"name"><value>jmsConnector</value></property> > </bean> > > I don't like having to include the name property if there is a chance = I > could use the bean id instead. Is there any way I can uniformly = intercept > bean creation in the context so that straight after the constructor is > called I can get hold of the bean id and set it on my object? > > I can't wait until the applicationContext is configured and then set = the > names as some objects have a collection of other objects which are = keyed > against the name. > You could implement BeanNameAware: <http://www.springframework.org/docs/api/org/springframework/beans/factor= y/BeanNameAware.html> --=20 Kind regards, Christophe Vanfleteren ------------------------------------------------------- This SF.Net email sponsored by Black Hat Briefings & Training. Attend Black Hat Briefings & Training, Las Vegas July 24-29 -=20 digital self defense, top technical experts, no vendor pitches,=20 unmatched networking opportunities. Visit www.blackhat.com _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Mason, R. <ros...@vi...> - 2004-07-08 13:57:15
|
Q2hlZXJzIGd1eXMuICBJJ20gdXNpbmcgdGhlIEJlYW5Qb3N0UHJvY2Vzc29yLg0KIA0KV2hlbiBJ IHRyeSB1c2luZyB0aGUgQmVhblBvc3RQcm9jZXNzb3Igb24gYSBGYWN0b3J5QmVhbiBJIGdldCBh IENsYXNzQ2FzdEV4Y2VwdGlvbi4gIFdoaWNoIGF0IGZpcnN0IG1hZGUgc2Vuc2UgYmVjYXVzZSBJ IGZpZ3VyZWQgaXQgd2FzIHRyeWluZyB0byBjYXN0IG15IGFjdHVhbCBiZWFuIGluc3RhbmNlIChu b3QgRmFjdG9yeUJlYW4pIHRvIGEgQmVhblBvc3RQcm9jZXNzb3IsIGJ1dCB0aGVuIHdoeSB3b3Vs ZG4ndCBpdCB1c2UgdGhlIGFjdHVhbCBmYWN0b3J5IGluc3RhbmNlLiBBbnl3YXkgaGVyZSBpcyB0 aGUgc3RhY2sgdHJhY2UgLQ0KIA0KamF2YS5sYW5nLkNsYXNzQ2FzdEV4Y2VwdGlvbg0KIGF0IG9y Zy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5zdXBwb3J0LkFic3RyYWN0QXBwbGljYXRpb25Db250 ZXh0LnJlZ2lzdGVyQmVhblBvc3RQcm9jZXNzb3JzKEFic3RyYWN0QXBwbGljYXRpb25Db250ZXh0 LmphdmE6MzI4KQ0KIGF0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5zdXBwb3J0LkFic3Ry YWN0QXBwbGljYXRpb25Db250ZXh0LnJlZnJlc2goQWJzdHJhY3RBcHBsaWNhdGlvbkNvbnRleHQu amF2YToyNjQpDQogYXQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LnN1cHBvcnQuQ2xhc3NQ YXRoWG1sQXBwbGljYXRpb25Db250ZXh0Ljxpbml0PihDbGFzc1BhdGhYbWxBcHBsaWNhdGlvbkNv bnRleHQuamF2YTo1OCkNCiBhdCBvcmcubXVsZS5leHRyYXMuc3ByaW5nLmNvbmZpZy5TcHJpbmdD b25maWd1cmF0aW9uQnVpbGRlci5jb25maWd1cmUoU3ByaW5nQ29uZmlndXJhdGlvbkJ1aWxkZXIu amF2YTo0MCkNCiBhdCBvcmcubXVsZS50Y2suQWJzdHJhY3RDb25maWdCdWlsZGVyVGVzdENhc2Uu c2V0VXAoQWJzdHJhY3RDb25maWdCdWlsZGVyVGVzdENhc2UuamF2YTo1MykNCiBhdCBjb20uaW50 ZWxsaWoucnQuZXhlY3V0aW9uLmp1bml0Mi5KVW5pdFN0YXJ0ZXIubWFpbihKVW5pdFN0YXJ0ZXIu amF2YTozMSkNCiBhdCBzdW4ucmVmbGVjdC5OYXRpdmVNZXRob2RBY2Nlc3NvckltcGwuaW52b2tl MChOYXRpdmUgTWV0aG9kKQ0KIGF0IHN1bi5yZWZsZWN0Lk5hdGl2ZU1ldGhvZEFjY2Vzc29ySW1w bC5pbnZva2UoTmF0aXZlTWV0aG9kQWNjZXNzb3JJbXBsLmphdmE6MzkpDQogYXQgc3VuLnJlZmxl Y3QuRGVsZWdhdGluZ01ldGhvZEFjY2Vzc29ySW1wbC5pbnZva2UoRGVsZWdhdGluZ01ldGhvZEFj Y2Vzc29ySW1wbC5qYXZhOjI1KQ0KIGF0IGNvbS5pbnRlbGxpai5ydC5leGVjdXRpb24uYXBwbGlj YXRpb24uQXBwTWFpbi5tYWluKEFwcE1haW4uamF2YTo3OCkNCiANCkNoZWVycywNCiANClJvc3MN CiANCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tIA0KRnJvbTogc3ByaW5nZnJhbWV3b3JrLWRl dmVsb3Blci1hZG1pbkBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgb24gYmVoYWxmIG9mIGrDvHJnZW4g aMO2bGxlciBbd2VyazNBVF0gDQpTZW50OiBUaHUgOC8wNy8yMDA0IDEwOjQ1IEFNIA0KVG86IHNw cmluZ2ZyYW1ld29yay1kZXZlbG9wZXJAbGlzdHMuc291cmNlZm9yZ2UubmV0IA0KQ2M6IA0KU3Vi amVjdDogUmU6IFtTcHJpbmdmcmFtZXdvcmstZGV2ZWxvcGVyXSBJbnRlcmNlcHRpbmcgYmVhbiBj cmVhdGlvbj8NCg0KDQoNCglJIHJlY29tbWVuZCBCZWFuTmFtZUF3YXJlIHRvbywgaWYgeW91IGp1 c3Qgd2FudCB0byBiZWNvbWUgYXdhcmUgb2YgdGhlIGJlYW4gbmFtZS4NCgkNCglGb3IgZ2VuZXJh bCBwb3N0LXByb2Nlc3Npbmcgb2YgYSBuZXdseSBjcmVhdGVkIGJlYW4gaW5zdGFuY2UsIHlvdSBj b3VsZCBkZWZpbmUgYSBCZWFuUG9zdFByb2Nlc3NvciBpbiB0aGUgY29udGV4dCwgd2hpY2ggd2ls bCBhdXRvbWF0aWNhbGx5IGludGVyY2VwdCBhbGwgYmVhbnMgdGhhdCB0aGlzIGNvbnRleHQgY3Jl YXRlczoNCgkNCglodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvZG9jcy9hcGkvb3JnL3Nw cmluZ2ZyYW1ld29yay9iZWFucy9mYWN0b3J5L2NvbmZpZy9CZWFuUG9zdFByb2Nlc3Nvci5odG1s DQoJDQoJSnVlcmdlbg0KCQ0KCQ0KCS0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQoJRnJvbTog c3ByaW5nZnJhbWV3b3JrLWRldmVsb3Blci1hZG1pbkBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQNCglb bWFpbHRvOnNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXItYWRtaW5AbGlzdHMuc291cmNlZm9yZ2Uu bmV0XU9uIEJlaGFsZg0KCU9mIENoaXN0b3BoZSBWYW5mbGV0ZXJlbg0KCVNlbnQ6IFRodXJzZGF5 LCBKdWx5IDA4LCAyMDA0IDExOjI2IEFNDQoJVG86IHNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXJA bGlzdHMuc291cmNlZm9yZ2UubmV0DQoJU3ViamVjdDogUmU6IFtTcHJpbmdmcmFtZXdvcmstZGV2 ZWxvcGVyXSBJbnRlcmNlcHRpbmcgYmVhbiBjcmVhdGlvbj8NCgkNCgkNCglPbiBUaHVyc2RheSAw OCBKdWx5IDIwMDQgMTE6MTIsIE1hc29uLCBSb3NzIHdyb3RlOg0KCT4gSGksDQoJPiBJIGNyZWF0 ZSBhIGxvdCBvZiBkaWZmZXJlbnQgdHlwZXMgb2Ygb2JqZWN0IGluIGFuIGFwcGxpY2F0aW9uQ29u dGV4dCwgYWxsDQoJPiBvZiB3aGljaCBoYXZlIGEgbmFtZSBwcm9wZXJ0eSBpLmUuDQoJPg0KCT4g PGJlYW4gaWQ9Imptc0Nvbm5lY3RvciIgY2xhc3NOYW1lPSJvcmcubXVsZS5wcm92aWRlcnMuam1z Lkptc0Nvbm5lY3RvciI+DQoJPiAgICAgPHByb3BlcnR5IG5hbWU9Im5hbWUiPjx2YWx1ZT5qbXND b25uZWN0b3I8L3ZhbHVlPjwvcHJvcGVydHk+DQoJPiA8L2JlYW4+DQoJPg0KCT4gSSBkb24ndCBs aWtlIGhhdmluZyB0byBpbmNsdWRlIHRoZSBuYW1lIHByb3BlcnR5IGlmIHRoZXJlIGlzIGEgY2hh bmNlIEkNCgk+IGNvdWxkIHVzZSB0aGUgYmVhbiBpZCBpbnN0ZWFkLiBJcyB0aGVyZSBhbnkgd2F5 IEkgY2FuIHVuaWZvcm1seSBpbnRlcmNlcHQNCgk+IGJlYW4gY3JlYXRpb24gaW4gdGhlIGNvbnRl eHQgc28gdGhhdCBzdHJhaWdodCBhZnRlciB0aGUgY29uc3RydWN0b3IgaXMNCgk+IGNhbGxlZCBJ IGNhbiBnZXQgaG9sZCBvZiB0aGUgYmVhbiBpZCBhbmQgc2V0IGl0IG9uIG15IG9iamVjdD8NCgk+ DQoJPiBJIGNhbid0IHdhaXQgdW50aWwgdGhlIGFwcGxpY2F0aW9uQ29udGV4dCBpcyBjb25maWd1 cmVkIGFuZCB0aGVuIHNldCB0aGUNCgk+IG5hbWVzIGFzIHNvbWUgb2JqZWN0cyBoYXZlIGEgY29s bGVjdGlvbiBvZiBvdGhlciBvYmplY3RzIHdoaWNoIGFyZSBrZXllZA0KCT4gYWdhaW5zdCB0aGUg bmFtZS4NCgk+DQoJDQoJWW91IGNvdWxkIGltcGxlbWVudCBCZWFuTmFtZUF3YXJlOg0KCTxodHRw Oi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvZG9jcy9hcGkvb3JnL3NwcmluZ2ZyYW1ld29yay9i ZWFucy9mYWN0b3J5L0JlYW5OYW1lQXdhcmUuaHRtbD4NCgkNCgktLQ0KCUtpbmQgcmVnYXJkcywN CglDaHJpc3RvcGhlIFZhbmZsZXRlcmVuDQoJDQoJDQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCVRoaXMgU0YuTmV0IGVtYWlsIHNwb25z b3JlZCBieSBCbGFjayBIYXQgQnJpZWZpbmdzICYgVHJhaW5pbmcuDQoJQXR0ZW5kIEJsYWNrIEhh dCBCcmllZmluZ3MgJiBUcmFpbmluZywgTGFzIFZlZ2FzIEp1bHkgMjQtMjkgLQ0KCWRpZ2l0YWwg c2VsZiBkZWZlbnNlLCB0b3AgdGVjaG5pY2FsIGV4cGVydHMsIG5vIHZlbmRvciBwaXRjaGVzLA0K CXVubWF0Y2hlZCBuZXR3b3JraW5nIG9wcG9ydHVuaXRpZXMuIFZpc2l0IHd3dy5ibGFja2hhdC5j b20NCglfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KCVNw cmluZ2ZyYW1ld29yay1kZXZlbG9wZXIgbWFpbGluZyBsaXN0DQoJU3ByaW5nZnJhbWV3b3JrLWRl dmVsb3BlckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQNCglodHRwczovL2xpc3RzLnNvdXJjZWZvcmdl Lm5ldC9saXN0cy9saXN0aW5mby9zcHJpbmdmcmFtZXdvcmstZGV2ZWxvcGVyDQoJDQoJDQoJLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCVRo aXMgU0YuTmV0IGVtYWlsIHNwb25zb3JlZCBieSBCbGFjayBIYXQgQnJpZWZpbmdzICYgVHJhaW5p bmcuDQoJQXR0ZW5kIEJsYWNrIEhhdCBCcmllZmluZ3MgJiBUcmFpbmluZywgTGFzIFZlZ2FzIEp1 bHkgMjQtMjkgLQ0KCWRpZ2l0YWwgc2VsZiBkZWZlbnNlLCB0b3AgdGVjaG5pY2FsIGV4cGVydHMs IG5vIHZlbmRvciBwaXRjaGVzLA0KCXVubWF0Y2hlZCBuZXR3b3JraW5nIG9wcG9ydHVuaXRpZXMu IFZpc2l0IHd3dy5ibGFja2hhdC5jb20NCglfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXw0KCVNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXIgbWFpbGluZyBsaXN0 DQoJU3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQNCglodHRw czovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9zcHJpbmdmcmFtZXdvcmst ZGV2ZWxvcGVyDQoJDQoNCg== |
|
From: Dmitriy K. <dko...@ru...> - 2004-07-08 15:26:28
|
Ross, can you please attach this BPP and the corresponding appCtx descriptor? Thanks, Dmitriy. Mason, Ross wrote: >Cheers guys. I'm using the BeanPostProcessor. > >When I try using the BeanPostProcessor on a FactoryBean I get a ClassCastException. Which at first made sense because I figured it was trying to cast my actual bean instance (not FactoryBean) to a BeanPostProcessor, but then why wouldn't it use the actual factory instance. Anyway here is the stack trace - > >java.lang.ClassCastException > at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:328) > at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:264) > at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:58) > at org.mule.extras.spring.config.SpringConfigurationBuilder.configure(SpringConfigurationBuilder.java:40) > at org.mule.tck.AbstractConfigBuilderTestCase.setUp(AbstractConfigBuilderTestCase.java:53) > at com.intellij.rt.execution.junit2.JUnitStarter.main(JUnitStarter.java:31) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:78) > >Cheers, > >Ross > >-----Original Message----- >From: spr...@li... on behalf of jürgen höller [werk3AT] >Sent: Thu 8/07/2004 10:45 AM >To: spr...@li... >Cc: >Subject: Re: [Springframework-developer] Intercepting bean creation? > > > > I recommend BeanNameAware too, if you just want to become aware of the bean name. > > For general post-processing of a newly created bean instance, you could define a BeanPostProcessor in the context, which will automatically intercept all beans that this context creates: > > http://www.springframework.org/docs/api/org/springframework/beans/factory/config/BeanPostProcessor.html > > Juergen > > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...]On Behalf > Of Chistophe Vanfleteren > Sent: Thursday, July 08, 2004 11:26 AM > To: spr...@li... > Subject: Re: [Springframework-developer] Intercepting bean creation? > > > On Thursday 08 July 2004 11:12, Mason, Ross wrote: > > Hi, > > I create a lot of different types of object in an applicationContext, all > > of which have a name property i.e. > > > > <bean id="jmsConnector" className="org.mule.providers.jms.JmsConnector"> > > <property name="name"><value>jmsConnector</value></property> > > </bean> > > > > I don't like having to include the name property if there is a chance I > > could use the bean id instead. Is there any way I can uniformly intercept > > bean creation in the context so that straight after the constructor is > > called I can get hold of the bean id and set it on my object? > > > > I can't wait until the applicationContext is configured and then set the > > names as some objects have a collection of other objects which are keyed > > against the name. > > > > You could implement BeanNameAware: > <http://www.springframework.org/docs/api/org/springframework/beans/factory/BeanNameAware.html> > > -- > Kind regards, > Christophe Vanfleteren > > > ------------------------------------------------------- > This SF.Net email sponsored by Black Hat Briefings & Training. > Attend Black Hat Briefings & Training, Las Vegas July 24-29 - > digital self defense, top technical experts, no vendor pitches, > unmatched networking opportunities. Visit www.blackhat.com > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > ------------------------------------------------------- > This SF.Net email sponsored by Black Hat Briefings & Training. > Attend Black Hat Briefings & Training, Las Vegas July 24-29 - > digital self defense, top technical experts, no vendor pitches, > unmatched networking opportunities. Visit www.blackhat.com > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > |
|
From: Mason, R. <ros...@vi...> - 2004-07-13 06:12:49
|
RG1pdHJpeSwNCiANCnNvcnJ5IGZvciB0aGUgZGVsYXkgOikNCg0KYXBwQ3R4IC0gDQpodHRwOi8v Y3ZzLnNvdXJjZWZvcmdlLm5ldC92aWV3Y3ZzLnB5L211bGUvbXVsZS1leHRyYXMvc3ByaW5nL3Ny Yy90ZXN0L2NvbmYvbXVsZS1ldmVudHMtYXBwLWNvbnRleHQueG1sP3Jldj0xLjMmdmlldz1hdXRv DQoNCkJQUA0KDQpodHRwOi8vY3ZzLnNvdXJjZWZvcmdlLm5ldC92aWV3Y3ZzLnB5L211bGUvbXVs ZS1leHRyYXMvc3ByaW5nL3NyYy9qYXZhL29yZy9tdWxlL2V4dHJhcy9zcHJpbmcvY29uZmlnL0F1 dG93aXJlVU1PTWFuYWdlckZhY3RvcnlCZWFuLmphdmE/cmV2PTEuMSZ2aWV3PWF1dG8NCg0KTm90 ZSB0aGF0IHRoaXMgZmFjdG9yeSBiZWFuIG5vdyBkb2Vzbid0IGltcGxlbWVudCBCUFAgYmVjYXVz ZSBvZiB0aGUgQ2xhc3NDYXN0RXhjZXB0aW9uLiBob3dldmVyIEkgdHJpZWQgaW1wbGVtZW50YXRp bmcgIEZhY3RvcnlCZWFuIGFuZCBCZWFuUG9zdFByb2Nlc3NvciBpbiBhbiBpc29sYXRlZCB0ZXN0 IGFuZCBJIHN0aWxsIGdvdCB0aGUgZXhjZXB0aW9uLg0KDQpDaGVlcnMsDQoNClJvc3MNCg0KDQoN Cg0KPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogc3ByaW5nZnJhbWV3b3JrLWRl dmVsb3Blci1hZG1pbkBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQNCj5bbWFpbHRvOnNwcmluZ2ZyYW1l d29yay1kZXZlbG9wZXItYWRtaW5AbGlzdHMuc291cmNlZm9yZ2UubmV0XU9uIEJlaGFsZg0KPk9m IERtaXRyaXkgS29weWxlbmtvDQo+U2VudDogRnJpZGF5LCA5IEp1bHkgMjAwNCAxOjI3IEFNDQo+ VG86IHNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXJAbGlzdHMuc291cmNlZm9yZ2UubmV0DQo+U3Vi amVjdDogUmU6IFtTcHJpbmdmcmFtZXdvcmstZGV2ZWxvcGVyXSBJbnRlcmNlcHRpbmcgYmVhbiBj cmVhdGlvbj8NCj4NCj4NCj5Sb3NzLA0KPg0KPmNhbiB5b3UgcGxlYXNlIGF0dGFjaCB0aGlzIEJQ UCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXBwQ3R4IGRlc2NyaXB0b3I/DQo+DQo+VGhhbmtzLA0K PkRtaXRyaXkuDQo+DQo+TWFzb24sIFJvc3Mgd3JvdGU6DQo+DQo+PkNoZWVycyBndXlzLiAgSSdt IHVzaW5nIHRoZSBCZWFuUG9zdFByb2Nlc3Nvci4NCj4+IA0KPj5XaGVuIEkgdHJ5IHVzaW5nIHRo ZSBCZWFuUG9zdFByb2Nlc3NvciBvbiBhIEZhY3RvcnlCZWFuIEkgZ2V0IA0KPmEgQ2xhc3NDYXN0 RXhjZXB0aW9uLiAgV2hpY2ggYXQgZmlyc3QgbWFkZSBzZW5zZSBiZWNhdXNlIEkgDQo+ZmlndXJl ZCBpdCB3YXMgdHJ5aW5nIHRvIGNhc3QgbXkgYWN0dWFsIGJlYW4gaW5zdGFuY2UgKG5vdCANCj5G YWN0b3J5QmVhbikgdG8gYSBCZWFuUG9zdFByb2Nlc3NvciwgYnV0IHRoZW4gd2h5IHdvdWxkbid0 IGl0IA0KPnVzZSB0aGUgYWN0dWFsIGZhY3RvcnkgaW5zdGFuY2UuIEFueXdheSBoZXJlIGlzIHRo ZSBzdGFjayB0cmFjZSAtDQo+PiANCj4+amF2YS5sYW5nLkNsYXNzQ2FzdEV4Y2VwdGlvbg0KPj4g YXQgDQo+b3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LnN1cHBvcnQuQWJzdHJhY3RBcHBsaWNh dGlvbkNvbnRleHQuDQo+cmVnaXN0ZXJCZWFuUG9zdFByb2Nlc3NvcnMoQWJzdHJhY3RBcHBsaWNh dGlvbkNvbnRleHQuamF2YTozMjgpDQo+PiBhdCANCj5vcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRl eHQuc3VwcG9ydC5BYnN0cmFjdEFwcGxpY2F0aW9uQ29udGV4dC4NCj5yZWZyZXNoKEFic3RyYWN0 QXBwbGljYXRpb25Db250ZXh0LmphdmE6MjY0KQ0KPj4gYXQgDQo+b3JnLnNwcmluZ2ZyYW1ld29y ay5jb250ZXh0LnN1cHBvcnQuQ2xhc3NQYXRoWG1sQXBwbGljYXRpb25Db250DQo+ZXh0Ljxpbml0 PihDbGFzc1BhdGhYbWxBcHBsaWNhdGlvbkNvbnRleHQuamF2YTo1OCkNCj4+IGF0IA0KPm9yZy5t dWxlLmV4dHJhcy5zcHJpbmcuY29uZmlnLlNwcmluZ0NvbmZpZ3VyYXRpb25CdWlsZGVyLmNvbmZp Zw0KPnVyZShTcHJpbmdDb25maWd1cmF0aW9uQnVpbGRlci5qYXZhOjQwKQ0KPj4gYXQgDQo+b3Jn Lm11bGUudGNrLkFic3RyYWN0Q29uZmlnQnVpbGRlclRlc3RDYXNlLnNldFVwKEFic3RyYWN0Q29u ZmlnDQo+QnVpbGRlclRlc3RDYXNlLmphdmE6NTMpDQo+PiBhdCANCj5jb20uaW50ZWxsaWoucnQu ZXhlY3V0aW9uLmp1bml0Mi5KVW5pdFN0YXJ0ZXIubWFpbihKVW5pdFN0YXJ0ZXINCj4uamF2YToz MSkNCj4+IGF0IHN1bi5yZWZsZWN0Lk5hdGl2ZU1ldGhvZEFjY2Vzc29ySW1wbC5pbnZva2UwKE5h dGl2ZSBNZXRob2QpDQo+PiBhdCANCj5zdW4ucmVmbGVjdC5OYXRpdmVNZXRob2RBY2Nlc3Nvcklt cGwuaW52b2tlKE5hdGl2ZU1ldGhvZEFjY2Vzc28NCj5ySW1wbC5qYXZhOjM5KQ0KPj4gYXQgDQo+ c3VuLnJlZmxlY3QuRGVsZWdhdGluZ01ldGhvZEFjY2Vzc29ySW1wbC5pbnZva2UoRGVsZWdhdGlu Z01ldGhvDQo+ZEFjY2Vzc29ySW1wbC5qYXZhOjI1KQ0KPj4gYXQgDQo+Y29tLmludGVsbGlqLnJ0 LmV4ZWN1dGlvbi5hcHBsaWNhdGlvbi5BcHBNYWluLm1haW4oQXBwTWFpbi5qYXZhOjc4KQ0KPj4g DQo+PkNoZWVycywNCj4+IA0KPj5Sb3NzDQo+PiANCj4+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0gDQo+PkZyb206IHNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXItYWRtaW5AbGlzdHMuc291cmNl Zm9yZ2UubmV0IA0KPm9uIGJlaGFsZiBvZiBqw7xyZ2VuIGjDtmxsZXIgW3dlcmszQVRdIA0KPj5T ZW50OiBUaHUgOC8wNy8yMDA0IDEwOjQ1IEFNIA0KPj5Ubzogc3ByaW5nZnJhbWV3b3JrLWRldmVs b3BlckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgDQo+PkNjOiANCj4+U3ViamVjdDogUmU6IFtTcHJp bmdmcmFtZXdvcmstZGV2ZWxvcGVyXSBJbnRlcmNlcHRpbmcgYmVhbiBjcmVhdGlvbj8NCj4+DQo+ Pg0KPj4NCj4+CUkgcmVjb21tZW5kIEJlYW5OYW1lQXdhcmUgdG9vLCBpZiB5b3UganVzdCB3YW50 IHRvIA0KPmJlY29tZSBhd2FyZSBvZiB0aGUgYmVhbiBuYW1lLg0KPj4JDQo+PglGb3IgZ2VuZXJh bCBwb3N0LXByb2Nlc3Npbmcgb2YgYSBuZXdseSBjcmVhdGVkIGJlYW4gDQo+aW5zdGFuY2UsIHlv dSBjb3VsZCBkZWZpbmUgYSBCZWFuUG9zdFByb2Nlc3NvciBpbiB0aGUgY29udGV4dCwgDQo+d2hp Y2ggd2lsbCBhdXRvbWF0aWNhbGx5IGludGVyY2VwdCBhbGwgYmVhbnMgdGhhdCB0aGlzIGNvbnRl eHQgY3JlYXRlczoNCj4+CQ0KPj4JDQo+aHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL2Rv Y3MvYXBpL29yZy9zcHJpbmdmcmFtZXdvcmsvYmVhDQo+bnMvZmFjdG9yeS9jb25maWcvQmVhblBv c3RQcm9jZXNzb3IuaHRtbA0KPj4JDQo+PglKdWVyZ2VuDQo+PgkNCj4+CQ0KPj4JLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4+CUZyb206IHNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXItYWRt aW5AbGlzdHMuc291cmNlZm9yZ2UubmV0DQo+PgkNCj5bbWFpbHRvOnNwcmluZ2ZyYW1ld29yay1k ZXZlbG9wZXItYWRtaW5AbGlzdHMuc291cmNlZm9yZ2UubmV0XU9uIEJlaGFsZg0KPj4JT2YgQ2hp c3RvcGhlIFZhbmZsZXRlcmVuDQo+PglTZW50OiBUaHVyc2RheSwgSnVseSAwOCwgMjAwNCAxMToy NiBBTQ0KPj4JVG86IHNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXJAbGlzdHMuc291cmNlZm9yZ2Uu bmV0DQo+PglTdWJqZWN0OiBSZTogW1NwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXJdIEludGVyY2Vw dGluZyANCj5iZWFuIGNyZWF0aW9uPw0KPj4JDQo+PgkNCj4+CU9uIFRodXJzZGF5IDA4IEp1bHkg MjAwNCAxMToxMiwgTWFzb24sIFJvc3Mgd3JvdGU6DQo+Pgk+IEhpLA0KPj4JPiBJIGNyZWF0ZSBh IGxvdCBvZiBkaWZmZXJlbnQgdHlwZXMgb2Ygb2JqZWN0IGluIGFuIA0KPmFwcGxpY2F0aW9uQ29u dGV4dCwgYWxsDQo+Pgk+IG9mIHdoaWNoIGhhdmUgYSBuYW1lIHByb3BlcnR5IGkuZS4NCj4+CT4N Cj4+CT4gPGJlYW4gaWQ9Imptc0Nvbm5lY3RvciIgDQo+Y2xhc3NOYW1lPSJvcmcubXVsZS5wcm92 aWRlcnMuam1zLkptc0Nvbm5lY3RvciI+DQo+Pgk+ICAgICA8cHJvcGVydHkgDQo+bmFtZT0ibmFt ZSI+PHZhbHVlPmptc0Nvbm5lY3RvcjwvdmFsdWU+PC9wcm9wZXJ0eT4NCj4+CT4gPC9iZWFuPg0K Pj4JPg0KPj4JPiBJIGRvbid0IGxpa2UgaGF2aW5nIHRvIGluY2x1ZGUgdGhlIG5hbWUgcHJvcGVy dHkgaWYgDQo+dGhlcmUgaXMgYSBjaGFuY2UgSQ0KPj4JPiBjb3VsZCB1c2UgdGhlIGJlYW4gaWQg aW5zdGVhZC4gSXMgdGhlcmUgYW55IHdheSBJIGNhbiANCj51bmlmb3JtbHkgaW50ZXJjZXB0DQo+ Pgk+IGJlYW4gY3JlYXRpb24gaW4gdGhlIGNvbnRleHQgc28gdGhhdCBzdHJhaWdodCBhZnRlciAN Cj50aGUgY29uc3RydWN0b3IgaXMNCj4+CT4gY2FsbGVkIEkgY2FuIGdldCBob2xkIG9mIHRoZSBi ZWFuIGlkIGFuZCBzZXQgaXQgb24gbXkgb2JqZWN0Pw0KPj4JPg0KPj4JPiBJIGNhbid0IHdhaXQg dW50aWwgdGhlIGFwcGxpY2F0aW9uQ29udGV4dCBpcyANCj5jb25maWd1cmVkIGFuZCB0aGVuIHNl dCB0aGUNCj4+CT4gbmFtZXMgYXMgc29tZSBvYmplY3RzIGhhdmUgYSBjb2xsZWN0aW9uIG9mIG90 aGVyIA0KPm9iamVjdHMgd2hpY2ggYXJlIGtleWVkDQo+Pgk+IGFnYWluc3QgdGhlIG5hbWUuDQo+ Pgk+DQo+PgkNCj4+CVlvdSBjb3VsZCBpbXBsZW1lbnQgQmVhbk5hbWVBd2FyZToNCj4+CQ0KPGh0 dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9kb2NzL2FwaS9vcmcvc3ByaW5nZnJhbWV3b3Jr L2JlYW5zL2ZhY3RvcnkvQmVhbk5hbWVBd2FyZS5odG1sPg0KPgkNCj4JLS0NCj4JS2luZCByZWdh cmRzLA0KPglDaHJpc3RvcGhlIFZhbmZsZXRlcmVuDQo+CQ0KPgkNCj4JLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPglUaGlzIFNGLk5ldCBl bWFpbCBzcG9uc29yZWQgYnkgQmxhY2sgSGF0IEJyaWVmaW5ncyAmIFRyYWluaW5nLg0KPglBdHRl bmQgQmxhY2sgSGF0IEJyaWVmaW5ncyAmIFRyYWluaW5nLCBMYXMgVmVnYXMgSnVseSAyNC0yOSAt DQo+CWRpZ2l0YWwgc2VsZiBkZWZlbnNlLCB0b3AgdGVjaG5pY2FsIGV4cGVydHMsIG5vIHZlbmRv ciBwaXRjaGVzLA0KPgl1bm1hdGNoZWQgbmV0d29ya2luZyBvcHBvcnR1bml0aWVzLiBWaXNpdCB3 d3cuYmxhY2toYXQuY29tDQo+CV9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fDQo+CVNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXIgbWFpbGluZyBsaXN0DQo+CVNw cmluZ2ZyYW1ld29yay1kZXZlbG9wZXJAbGlzdHMuc291cmNlZm9yZ2UubmV0DQo+CWh0dHBzOi8v bGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3NwcmluZ2ZyYW1ld29yay1kZXZl bG9wZXINCj4JDQo+CQ0KPgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+CVRoaXMgU0YuTmV0IGVtYWlsIHNwb25zb3JlZCBieSBCbGFjayBI YXQgQnJpZWZpbmdzICYgVHJhaW5pbmcuDQo+CUF0dGVuZCBCbGFjayBIYXQgQnJpZWZpbmdzICYg VHJhaW5pbmcsIExhcyBWZWdhcyBKdWx5IDI0LTI5IC0NCj4JZGlnaXRhbCBzZWxmIGRlZmVuc2Us IHRvcCB0ZWNobmljYWwgZXhwZXJ0cywgbm8gdmVuZG9yIHBpdGNoZXMsDQo+CXVubWF0Y2hlZCBu ZXR3b3JraW5nIG9wcG9ydHVuaXRpZXMuIFZpc2l0IHd3dy5ibGFja2hhdC5jb20NCj4JX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4JU3ByaW5nZnJhbWV3 b3JrLWRldmVsb3BlciBtYWlsaW5nIGxpc3QNCj4JU3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlckBs aXN0cy5zb3VyY2Vmb3JnZS5uZXQNCj4JaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlz dHMvbGlzdGluZm8vc3ByaW5nZnJhbWV3b3JrLWRldmVsb3Blcg0KPgkNCj4NCj4gIA0KPg0KDQoN Cg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KVGhpcyBTRi5OZXQgZW1haWwgc3BvbnNvcmVkIGJ5IEJsYWNrIEhhdCBCcmllZmluZ3MgJiBU cmFpbmluZy4NCkF0dGVuZCBCbGFjayBIYXQgQnJpZWZpbmdzICYgVHJhaW5pbmcsIExhcyBWZWdh cyBKdWx5IDI0LTI5IC0gDQpkaWdpdGFsIHNlbGYgZGVmZW5zZSwgdG9wIHRlY2huaWNhbCBleHBl cnRzLCBubyB2ZW5kb3IgcGl0Y2hlcywgDQp1bm1hdGNoZWQgbmV0d29ya2luZyBvcHBvcnR1bml0 aWVzLiBWaXNpdCB3d3cuYmxhY2toYXQuY29tDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXw0KU3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlciBtYWlsaW5nIGxp c3QNClNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXJAbGlzdHMuc291cmNlZm9yZ2UubmV0DQpodHRw czovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9zcHJpbmdmcmFtZXdvcmst ZGV2ZWxvcGVyDQo= |
|
From: Dmitriy K. <dko...@ru...> - 2004-07-13 14:59:02
|
Ross,
I investigated the issue and found that FactoryBean and
BeanPostProcessor do not work well together. I've created a very simple
test case to prove that. The reason is that in
AbstractApplicationContext.registerBeanPostProcessors() it calls the
*getBean()* to populate the internal Collection of BeanPostProcessors
and then register them "globally" by casting to ... well,
BeanPostProcessor. In case of FactoryBean, getBean() call actually gets
the underlying instance of the bean, not the FactoryBean itself,
therefore resulting in ClastCastException:
private void registerBeanPostProcessors() throws BeansException {
String[] beanNames =
getBeanDefinitionNames(BeanPostProcessor.class);
if (beanNames.length > 0) {
List beanProcessors = new ArrayList();
for (int i = 0; i < beanNames.length; i++) {
beanProcessors.add(getBean(beanNames[i]));
}
Collections.sort(beanProcessors, new OrderComparator());
for (Iterator it = beanProcessors.iterator(); it.hasNext();) {
getBeanFactory().addBeanPostProcessor((BeanPostProcessor)it.next());
}
}
}
I've changed this code to take into consideration the
BeanPostProcessor-FactoryBean combination:
private void registerBeanPostProcessors() throws BeansException {
String[] beanNames =
getBeanDefinitionNames(BeanPostProcessor.class);
if (beanNames.length > 0) {
List beanProcessors = new ArrayList();
for (int i = 0; i < beanNames.length; i++) {
try{
beanProcessors.add(getBean("&" + beanNames[i]));
//Check for FactoryBean
}
catch(BeanIsNotAFactoryException e){
beanProcessors.add(getBean(beanNames[i])); //It's
not the FactoryBean
}
}
Collections.sort(beanProcessors, new OrderComparator());
for (Iterator it = beanProcessors.iterator(); it.hasNext();) {
getBeanFactory().addBeanPostProcessor((BeanPostProcessor)it.next());
}
}
}
Works well.
Juergen, if there is a compelling need for this feature (BPP/FB
combination) I'd be happy to commit this.
Regards,
Dmitriy.
Mason, Ross wrote:
>Dmitriy,
>
>sorry for the delay :)
>
>appCtx -
>http://cvs.sourceforge.net/viewcvs.py/mule/mule-extras/spring/src/test/conf/mule-events-app-context.xml?rev=1.3&view=auto
>
>BPP
>
>http://cvs.sourceforge.net/viewcvs.py/mule/mule-extras/spring/src/java/org/mule/extras/spring/config/AutowireUMOManagerFactoryBean.java?rev=1.1&view=auto
>
>Note that this factory bean now doesn't implement BPP because of the ClassCastException. however I tried implementating FactoryBean and BeanPostProcessor in an isolated test and I still got the exception.
>
>Cheers,
>
>Ross
>
>
>
>
>
>
>>-----Original Message-----
>>From: spr...@li...
>>[mailto:spr...@li...]On Behalf
>>Of Dmitriy Kopylenko
>>Sent: Friday, 9 July 2004 1:27 AM
>>To: spr...@li...
>>Subject: Re: [Springframework-developer] Intercepting bean creation?
>>
>>
>>Ross,
>>
>>can you please attach this BPP and the corresponding appCtx descriptor?
>>
>>Thanks,
>>Dmitriy.
>>
>>Mason, Ross wrote:
>>
>>
>>
>>>Cheers guys. I'm using the BeanPostProcessor.
>>>
>>>When I try using the BeanPostProcessor on a FactoryBean I get
>>>
>>>
>>a ClassCastException. Which at first made sense because I
>>figured it was trying to cast my actual bean instance (not
>>FactoryBean) to a BeanPostProcessor, but then why wouldn't it
>>use the actual factory instance. Anyway here is the stack trace -
>>
>>
>>>java.lang.ClassCastException
>>>at
>>>
>>>
>>org.springframework.context.support.AbstractApplicationContext.
>>registerBeanPostProcessors(AbstractApplicationContext.java:328)
>>
>>
>>>at
>>>
>>>
>>org.springframework.context.support.AbstractApplicationContext.
>>refresh(AbstractApplicationContext.java:264)
>>
>>
>>>at
>>>
>>>
>>org.springframework.context.support.ClassPathXmlApplicationCont
>>ext.<init>(ClassPathXmlApplicationContext.java:58)
>>
>>
>>>at
>>>
>>>
>>org.mule.extras.spring.config.SpringConfigurationBuilder.config
>>ure(SpringConfigurationBuilder.java:40)
>>
>>
>>>at
>>>
>>>
>>org.mule.tck.AbstractConfigBuilderTestCase.setUp(AbstractConfig
>>BuilderTestCase.java:53)
>>
>>
>>>at
>>>
>>>
>>com.intellij.rt.execution.junit2.JUnitStarter.main(JUnitStarter
>>.java:31)
>>
>>
>>>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>at
>>>
>>>
>>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccesso
>>rImpl.java:39)
>>
>>
>>>at
>>>
>>>
>>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho
>>dAccessorImpl.java:25)
>>
>>
>>>at
>>>
>>>
>>com.intellij.rt.execution.application.AppMain.main(AppMain.java:78)
>>
>>
>>>Cheers,
>>>
>>>Ross
>>>
>>>-----Original Message-----
>>>From: spr...@li...
>>>
>>>
>>on behalf of jürgen höller [werk3AT]
>>
>>
>>>Sent: Thu 8/07/2004 10:45 AM
>>>To: spr...@li...
>>>Cc:
>>>Subject: Re: [Springframework-developer] Intercepting bean creation?
>>>
>>>
>>>
>>> I recommend BeanNameAware too, if you just want to
>>>
>>>
>>become aware of the bean name.
>>
>>
>>>
>>> For general post-processing of a newly created bean
>>>
>>>
>>instance, you could define a BeanPostProcessor in the context,
>>which will automatically intercept all beans that this context creates:
>>
>>
>>>
>>>
>>>
>>>
>>http://www.springframework.org/docs/api/org/springframework/bea
>>ns/factory/config/BeanPostProcessor.html
>>
>>
>>>
>>> Juergen
>>>
>>>
>>> -----Original Message-----
>>> From: spr...@li...
>>>
>>>
>>>
>>[mailto:spr...@li...]On Behalf
>>
>>
>>> Of Chistophe Vanfleteren
>>> Sent: Thursday, July 08, 2004 11:26 AM
>>> To: spr...@li...
>>> Subject: Re: [Springframework-developer] Intercepting
>>>
>>>
>>bean creation?
>>
>>
>>>
>>>
>>> On Thursday 08 July 2004 11:12, Mason, Ross wrote:
>>> > Hi,
>>> > I create a lot of different types of object in an
>>>
>>>
>>applicationContext, all
>>
>>
>>> > of which have a name property i.e.
>>> >
>>> > <bean id="jmsConnector"
>>>
>>>
>>className="org.mule.providers.jms.JmsConnector">
>>
>>
>>> > <property
>>>
>>>
>>name="name"><value>jmsConnector</value></property>
>>
>>
>>> > </bean>
>>> >
>>> > I don't like having to include the name property if
>>>
>>>
>>there is a chance I
>>
>>
>>> > could use the bean id instead. Is there any way I can
>>>
>>>
>>uniformly intercept
>>
>>
>>> > bean creation in the context so that straight after
>>>
>>>
>>the constructor is
>>
>>
>>> > called I can get hold of the bean id and set it on my object?
>>> >
>>> > I can't wait until the applicationContext is
>>>
>>>
>>configured and then set the
>>
>>
>>> > names as some objects have a collection of other
>>>
>>>
>>objects which are keyed
>>
>>
>>> > against the name.
>>> >
>>>
>>> You could implement BeanNameAware:
>>>
>>>
>>>
><http://www.springframework.org/docs/api/org/springframework/beans/factory/BeanNameAware.html>
>
>
>>
>> --
>> Kind regards,
>> Christophe Vanfleteren
>>
>>
>> -------------------------------------------------------
>> This SF.Net email sponsored by Black Hat Briefings & Training.
>> Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
>> digital self defense, top technical experts, no vendor pitches,
>> unmatched networking opportunities. Visit www.blackhat.com
>> _______________________________________________
>> Springframework-developer mailing list
>> Spr...@li...
>> https://lists.sourceforge.net/lists/listinfo/springframework-developer
>>
>>
>> -------------------------------------------------------
>> This SF.Net email sponsored by Black Hat Briefings & Training.
>> Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
>> digital self defense, top technical experts, no vendor pitches,
>> unmatched networking opportunities. Visit www.blackhat.com
>> _______________________________________________
>> Springframework-developer mailing list
>> Spr...@li...
>> https://lists.sourceforge.net/lists/listinfo/springframework-developer
>>
>>
>>
>>
>>
>>
>
>
>
>-------------------------------------------------------
>This SF.Net email sponsored by Black Hat Briefings & Training.
>Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
>digital self defense, top technical experts, no vendor pitches,
>unmatched networking opportunities. Visit www.blackhat.com
>_______________________________________________
>Springframework-developer mailing list
>Spr...@li...
>https://lists.sourceforge.net/lists/listinfo/springframework-developer
>N�HS^�隊[)�{(��[�ZrAڴ�y���j)�+�)࢚h�ۧ�؞�X���0�ZrHZ��&J���jg���z������x%��R�����ڙ�(�G^��h����l���q���z�m��?�X���(��~��zw��X�����b��?����jg���z��
>
|
|
From: Mason, R. <ros...@vi...> - 2004-07-14 00:02:59
|
VGhhbmtzIERtaXRyaXkgOikNCiANCisxIGZvciBpbmNsdWRpbmcgdGhpcy4gIFJpZ2h0IG5vdyBJ IGhhdmUgdG8gZGVsY2FyZSBhIEJQUCBpbiBhZGRpdGlvbiB0byBteSBVTU9NYW5hZ2VyRmFjdG9y eUJlYW4ganVzdCB0byBzZXQgdGhlIG5hbWVzIG9mIHRoZSBvYmplY3RzIGluIHRoZSBtYW5hZ2Vy LiBJdCB3b3VsZCBiZSBtdWNoIGNsZWFuZXIgKGxlc3MgY29uZmlndXJhdGlvbikgaWYgSSBjb3Vs ZCByb2xsIHRoZSB0d28gdG9nZXRoZXIuDQogDQpDaGVlcnMsDQogDQpSb3NzDQogDQogDQogLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IHNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXIt YWRtaW5AbGlzdHMuc291cmNlZm9yZ2UubmV0IFttYWlsdG86c3ByaW5nZnJhbWV3b3JrLWRldmVs b3Blci1hZG1pbkBsaXN0cy5zb3VyY2Vmb3JnZS5uZXRdT24gQmVoYWxmIE9mIERtaXRyaXkgS29w eWxlbmtvDQpTZW50OiBXZWRuZXNkYXksIDE0IEp1bHkgMjAwNCAxMjo1OSBBTQ0KVG86IHNwcmlu Z2ZyYW1ld29yay1kZXZlbG9wZXJAbGlzdHMuc291cmNlZm9yZ2UubmV0DQpTdWJqZWN0OiBSZTog W1NwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXJdIEludGVyY2VwdGluZyBiZWFuIGNyZWF0aW9uPw0K DQoNCg0KUm9zcywNCg0KSSBpbnZlc3RpZ2F0ZWQgdGhlIGlzc3VlIGFuZCBmb3VuZCB0aGF0IEZh Y3RvcnlCZWFuIGFuZCBCZWFuUG9zdFByb2Nlc3NvciBkbyBub3Qgd29yayB3ZWxsIHRvZ2V0aGVy LiBJJ3ZlIGNyZWF0ZWQgYSB2ZXJ5IHNpbXBsZSB0ZXN0IGNhc2UgdG8gcHJvdmUgdGhhdC4gVGhl IHJlYXNvbiBpcyB0aGF0IGluIEFic3RyYWN0QXBwbGljYXRpb25Db250ZXh0LnJlZ2lzdGVyQmVh blBvc3RQcm9jZXNzb3JzKCkgaXQgY2FsbHMgdGhlICpnZXRCZWFuKCkqIHRvIHBvcHVsYXRlIHRo ZSBpbnRlcm5hbCBDb2xsZWN0aW9uIG9mIEJlYW5Qb3N0UHJvY2Vzc29ycyBhbmQgdGhlbiByZWdp c3RlciB0aGVtICJnbG9iYWxseSIgYnkgY2FzdGluZyB0byAuLi4gd2VsbCwgQmVhblBvc3RQcm9j ZXNzb3IuIEluIGNhc2Ugb2YgRmFjdG9yeUJlYW4sIGdldEJlYW4oKSBjYWxsIGFjdHVhbGx5IGdl dHMgdGhlIHVuZGVybHlpbmcgaW5zdGFuY2Ugb2YgdGhlIGJlYW4sIG5vdCB0aGUgRmFjdG9yeUJl YW4gaXRzZWxmLCB0aGVyZWZvcmUgcmVzdWx0aW5nIGluIENsYXN0Q2FzdEV4Y2VwdGlvbjoNCg0K cHJpdmF0ZSB2b2lkIHJlZ2lzdGVyQmVhblBvc3RQcm9jZXNzb3JzKCkgdGhyb3dzIEJlYW5zRXhj ZXB0aW9uIHsNCiAgICAgICAgU3RyaW5nW10gYmVhbk5hbWVzID0gZ2V0QmVhbkRlZmluaXRpb25O YW1lcyhCZWFuUG9zdFByb2Nlc3Nvci5jbGFzcyk7ICAgICAgICANCiAgICAgICAgaWYgKGJlYW5O YW1lcy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICBMaXN0IGJlYW5Qcm9jZXNzb3JzID0gbmV3 IEFycmF5TGlzdCgpOw0KICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBiZWFuTmFtZXMu bGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICBiZWFuUHJvY2Vzc29ycy5hZGQoZ2V0QmVh bihiZWFuTmFtZXNbaV0pKTsgDQogICAgICAgICAgICB9DQogICAgICAgICAgICBDb2xsZWN0aW9u cy5zb3J0KGJlYW5Qcm9jZXNzb3JzLCBuZXcgT3JkZXJDb21wYXJhdG9yKCkpOw0KICAgICAgICAg ICAgZm9yIChJdGVyYXRvciBpdCA9IGJlYW5Qcm9jZXNzb3JzLml0ZXJhdG9yKCk7IGl0Lmhhc05l eHQoKTspIHsNCiAgICAgICAgICAgICAgICBnZXRCZWFuRmFjdG9yeSgpLmFkZEJlYW5Qb3N0UHJv Y2Vzc29yKChCZWFuUG9zdFByb2Nlc3NvcilpdC5uZXh0KCkpOw0KICAgICAgICAgICAgfQ0KICAg ICAgICB9DQogfQ0KDQpJJ3ZlIGNoYW5nZWQgdGhpcyBjb2RlIHRvIHRha2UgaW50byBjb25zaWRl cmF0aW9uIHRoZSBCZWFuUG9zdFByb2Nlc3Nvci1GYWN0b3J5QmVhbiBjb21iaW5hdGlvbjoNCg0K cHJpdmF0ZSB2b2lkIHJlZ2lzdGVyQmVhblBvc3RQcm9jZXNzb3JzKCkgdGhyb3dzIEJlYW5zRXhj ZXB0aW9uIHsNCiAgICAgICAgU3RyaW5nW10gYmVhbk5hbWVzID0gZ2V0QmVhbkRlZmluaXRpb25O YW1lcyhCZWFuUG9zdFByb2Nlc3Nvci5jbGFzcyk7ICAgICAgICANCiAgICAgICAgaWYgKGJlYW5O YW1lcy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICBMaXN0IGJlYW5Qcm9jZXNzb3JzID0gbmV3 IEFycmF5TGlzdCgpOw0KICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBiZWFuTmFtZXMu bGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICB0cnl7ICAgIA0KICAgICAgICAgICAgICAg ICAgICBiZWFuUHJvY2Vzc29ycy5hZGQoZ2V0QmVhbigiJiIgKyBiZWFuTmFtZXNbaV0pKTsgLy9D aGVjayBmb3IgRmFjdG9yeUJlYW4NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg Y2F0Y2goQmVhbklzTm90QUZhY3RvcnlFeGNlcHRpb24gZSl7DQogICAgICAgICAgICAgICAgICAg IGJlYW5Qcm9jZXNzb3JzLmFkZChnZXRCZWFuKGJlYW5OYW1lc1tpXSkpOyAvL0l0J3Mgbm90IHRo ZSBGYWN0b3J5QmVhbg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAg ICAgIENvbGxlY3Rpb25zLnNvcnQoYmVhblByb2Nlc3NvcnMsIG5ldyBPcmRlckNvbXBhcmF0b3Io KSk7DQogICAgICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gYmVhblByb2Nlc3NvcnMuaXRlcmF0 b3IoKTsgaXQuaGFzTmV4dCgpOykgew0KICAgICAgICAgICAgICAgIGdldEJlYW5GYWN0b3J5KCku YWRkQmVhblBvc3RQcm9jZXNzb3IoKEJlYW5Qb3N0UHJvY2Vzc29yKWl0Lm5leHQoKSk7DQogICAg ICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCldvcmtzIHdlbGwuDQoNCkp1ZXJnZW4sIGlm IHRoZXJlIGlzIGEgY29tcGVsbGluZyBuZWVkIGZvciB0aGlzIGZlYXR1cmUgKEJQUC9GQiBjb21i aW5hdGlvbikgSSdkIGJlIGhhcHB5IHRvIGNvbW1pdCB0aGlzLg0KDQpSZWdhcmRzLA0KRG1pdHJp eS4NCg0KDQoNCg0KTWFzb24sIFJvc3Mgd3JvdGU6DQoNCg0KRG1pdHJpeSwNCg0KIA0KDQpzb3Jy eSBmb3IgdGhlIGRlbGF5IDopDQoNCg0KDQphcHBDdHggLSANCg0KaHR0cDovL2N2cy5zb3VyY2Vm b3JnZS5uZXQvdmlld2N2cy5weS9tdWxlL211bGUtZXh0cmFzL3NwcmluZy9zcmMvdGVzdC9jb25m L211bGUtZXZlbnRzLWFwcC1jb250ZXh0LnhtbD9yZXY9MS4zIDxodHRwOi8vY3ZzLnNvdXJjZWZv cmdlLm5ldC92aWV3Y3ZzLnB5L211bGUvbXVsZS1leHRyYXMvc3ByaW5nL3NyYy90ZXN0L2NvbmYv bXVsZS1ldmVudHMtYXBwLWNvbnRleHQueG1sP3Jldj0xLjMmdmlldz1hdXRvPiAmdmlldz1hdXRv DQoNCg0KDQpCUFANCg0KDQoNCmh0dHA6Ly9jdnMuc291cmNlZm9yZ2UubmV0L3ZpZXdjdnMucHkv bXVsZS9tdWxlLWV4dHJhcy9zcHJpbmcvc3JjL2phdmEvb3JnL211bGUvZXh0cmFzL3NwcmluZy9j b25maWcvQXV0b3dpcmVVTU9NYW5hZ2VyRmFjdG9yeUJlYW4uamF2YT9yZXY9MS4xIDxodHRwOi8v Y3ZzLnNvdXJjZWZvcmdlLm5ldC92aWV3Y3ZzLnB5L211bGUvbXVsZS1leHRyYXMvc3ByaW5nL3Ny Yy9qYXZhL29yZy9tdWxlL2V4dHJhcy9zcHJpbmcvY29uZmlnL0F1dG93aXJlVU1PTWFuYWdlckZh Y3RvcnlCZWFuLmphdmE/cmV2PTEuMSZ2aWV3PWF1dG8+ICZ2aWV3PWF1dG8NCg0KDQoNCk5vdGUg dGhhdCB0aGlzIGZhY3RvcnkgYmVhbiBub3cgZG9lc24ndCBpbXBsZW1lbnQgQlBQIGJlY2F1c2Ug b2YgdGhlIENsYXNzQ2FzdEV4Y2VwdGlvbi4gaG93ZXZlciBJIHRyaWVkIGltcGxlbWVudGF0aW5n ICBGYWN0b3J5QmVhbiBhbmQgQmVhblBvc3RQcm9jZXNzb3IgaW4gYW4gaXNvbGF0ZWQgdGVzdCBh bmQgSSBzdGlsbCBnb3QgdGhlIGV4Y2VwdGlvbi4NCg0KDQoNCkNoZWVycywNCg0KDQoNClJvc3MN Cg0KDQoNCg0KDQoNCg0KDQoNCiAgDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQoNCkZy b206ICBzcHJpbmdmcmFtZXdvcmstZGV2ZWxvcGVyLWFkbWluQGxpc3RzLnNvdXJjZWZvcmdlLm5l dA0KDQpbIG1haWx0bzpzcHJpbmdmcmFtZXdvcmstZGV2ZWxvcGVyLWFkbWluQGxpc3RzLnNvdXJj ZWZvcmdlLm5ldF1PbiBCZWhhbGYNCg0KT2YgRG1pdHJpeSBLb3B5bGVua28NCg0KU2VudDogRnJp ZGF5LCA5IEp1bHkgMjAwNCAxOjI3IEFNDQoNClRvOiAgc3ByaW5nZnJhbWV3b3JrLWRldmVsb3Bl ckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQNCg0KU3ViamVjdDogUmU6IFtTcHJpbmdmcmFtZXdvcmst ZGV2ZWxvcGVyXSBJbnRlcmNlcHRpbmcgYmVhbiBjcmVhdGlvbj8NCg0KDQoNCg0KDQpSb3NzLA0K DQoNCg0KY2FuIHlvdSBwbGVhc2UgYXR0YWNoIHRoaXMgQlBQIGFuZCB0aGUgY29ycmVzcG9uZGlu ZyBhcHBDdHggZGVzY3JpcHRvcj8NCg0KDQoNClRoYW5rcywNCg0KRG1pdHJpeS4NCg0KDQoNCk1h c29uLCBSb3NzIHdyb3RlOg0KDQoNCg0KICAgIA0KDQpDaGVlcnMgZ3V5cy4gIEknbSB1c2luZyB0 aGUgQmVhblBvc3RQcm9jZXNzb3IuDQoNCg0KDQpXaGVuIEkgdHJ5IHVzaW5nIHRoZSBCZWFuUG9z dFByb2Nlc3NvciBvbiBhIEZhY3RvcnlCZWFuIEkgZ2V0IA0KDQogICAgICANCg0KYSBDbGFzc0Nh c3RFeGNlcHRpb24uICBXaGljaCBhdCBmaXJzdCBtYWRlIHNlbnNlIGJlY2F1c2UgSSANCg0KZmln dXJlZCBpdCB3YXMgdHJ5aW5nIHRvIGNhc3QgbXkgYWN0dWFsIGJlYW4gaW5zdGFuY2UgKG5vdCAN Cg0KRmFjdG9yeUJlYW4pIHRvIGEgQmVhblBvc3RQcm9jZXNzb3IsIGJ1dCB0aGVuIHdoeSB3b3Vs ZG4ndCBpdCANCg0KdXNlIHRoZSBhY3R1YWwgZmFjdG9yeSBpbnN0YW5jZS4gQW55d2F5IGhlcmUg aXMgdGhlIHN0YWNrIHRyYWNlIC0NCg0KICAgIA0KDQpqYXZhLmxhbmcuQ2xhc3NDYXN0RXhjZXB0 aW9uDQoNCmF0IA0KDQogICAgICANCg0Kb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LnN1cHBv cnQuQWJzdHJhY3RBcHBsaWNhdGlvbkNvbnRleHQuDQoNCnJlZ2lzdGVyQmVhblBvc3RQcm9jZXNz b3JzKEFic3RyYWN0QXBwbGljYXRpb25Db250ZXh0LmphdmE6MzI4KQ0KDQogICAgDQoNCmF0IA0K DQogICAgICANCg0Kb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LnN1cHBvcnQuQWJzdHJhY3RB cHBsaWNhdGlvbkNvbnRleHQuDQoNCnJlZnJlc2goQWJzdHJhY3RBcHBsaWNhdGlvbkNvbnRleHQu amF2YToyNjQpDQoNCiAgICANCg0KYXQgDQoNCiAgICAgIA0KDQpvcmcuc3ByaW5nZnJhbWV3b3Jr LmNvbnRleHQuc3VwcG9ydC5DbGFzc1BhdGhYbWxBcHBsaWNhdGlvbkNvbnQNCg0KZXh0Ljxpbml0 PihDbGFzc1BhdGhYbWxBcHBsaWNhdGlvbkNvbnRleHQuamF2YTo1OCkNCg0KICAgIA0KDQphdCAN Cg0KICAgICAgDQoNCm9yZy5tdWxlLmV4dHJhcy5zcHJpbmcuY29uZmlnLlNwcmluZ0NvbmZpZ3Vy YXRpb25CdWlsZGVyLmNvbmZpZw0KDQp1cmUoU3ByaW5nQ29uZmlndXJhdGlvbkJ1aWxkZXIuamF2 YTo0MCkNCg0KICAgIA0KDQphdCANCg0KICAgICAgDQoNCm9yZy5tdWxlLnRjay5BYnN0cmFjdENv bmZpZ0J1aWxkZXJUZXN0Q2FzZS5zZXRVcChBYnN0cmFjdENvbmZpZw0KDQpCdWlsZGVyVGVzdENh c2UuamF2YTo1MykNCg0KICAgIA0KDQphdCANCg0KICAgICAgDQoNCmNvbS5pbnRlbGxpai5ydC5l eGVjdXRpb24uanVuaXQyLkpVbml0U3RhcnRlci5tYWluKEpVbml0U3RhcnRlcg0KDQouamF2YToz MSkNCg0KICAgIA0KDQphdCBzdW4ucmVmbGVjdC5OYXRpdmVNZXRob2RBY2Nlc3NvckltcGwuaW52 b2tlMChOYXRpdmUgTWV0aG9kKQ0KDQphdCANCg0KICAgICAgDQoNCnN1bi5yZWZsZWN0Lk5hdGl2 ZU1ldGhvZEFjY2Vzc29ySW1wbC5pbnZva2UoTmF0aXZlTWV0aG9kQWNjZXNzbw0KDQpySW1wbC5q YXZhOjM5KQ0KDQogICAgDQoNCmF0IA0KDQogICAgICANCg0Kc3VuLnJlZmxlY3QuRGVsZWdhdGlu Z01ldGhvZEFjY2Vzc29ySW1wbC5pbnZva2UoRGVsZWdhdGluZ01ldGhvDQoNCmRBY2Nlc3Nvcklt cGwuamF2YToyNSkNCg0KICAgIA0KDQphdCANCg0KICAgICAgDQoNCmNvbS5pbnRlbGxpai5ydC5l eGVjdXRpb24uYXBwbGljYXRpb24uQXBwTWFpbi5tYWluKEFwcE1haW4uamF2YTo3OCkNCg0KICAg IA0KDQpDaGVlcnMsDQoNCg0KDQpSb3NzDQoNCg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LSANCg0KRnJvbTogIHNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXItYWRtaW5AbGlzdHMuc291cmNl Zm9yZ2UubmV0IA0KDQogICAgICANCg0Kb24gYmVoYWxmIG9mIGrDvHJnZW4gaMO2bGxlciBbd2Vy azNBVF0gDQoNCiAgICANCg0KU2VudDogVGh1IDgvMDcvMjAwNCAxMDo0NSBBTSANCg0KVG86ICBz cHJpbmdmcmFtZXdvcmstZGV2ZWxvcGVyQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCANCg0KQ2M6IA0K DQpTdWJqZWN0OiBSZTogW1NwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXJdIEludGVyY2VwdGluZyBi ZWFuIGNyZWF0aW9uPw0KDQoNCg0KDQoNCg0KDQoJSSByZWNvbW1lbmQgQmVhbk5hbWVBd2FyZSB0 b28sIGlmIHlvdSBqdXN0IHdhbnQgdG8gDQoNCiAgICAgIA0KDQpiZWNvbWUgYXdhcmUgb2YgdGhl IGJlYW4gbmFtZS4NCg0KICAgIA0KDQoJDQoNCglGb3IgZ2VuZXJhbCBwb3N0LXByb2Nlc3Npbmcg b2YgYSBuZXdseSBjcmVhdGVkIGJlYW4gDQoNCiAgICAgIA0KDQppbnN0YW5jZSwgeW91IGNvdWxk IGRlZmluZSBhIEJlYW5Qb3N0UHJvY2Vzc29yIGluIHRoZSBjb250ZXh0LCANCg0Kd2hpY2ggd2ls bCBhdXRvbWF0aWNhbGx5IGludGVyY2VwdCBhbGwgYmVhbnMgdGhhdCB0aGlzIGNvbnRleHQgY3Jl YXRlczoNCg0KICAgIA0KDQoJDQoNCgkNCg0KICAgICAgDQoNCmh0dHA6Ly93d3cuc3ByaW5nZnJh bWV3b3JrLm9yZy9kb2NzL2FwaS9vcmcvc3ByaW5nZnJhbWV3b3JrL2JlYQ0KDQpucy9mYWN0b3J5 L2NvbmZpZy9CZWFuUG9zdFByb2Nlc3Nvci5odG1sDQoNCiAgICANCg0KCQ0KDQoJSnVlcmdlbg0K DQoJDQoNCgkNCg0KCS0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQoNCglGcm9tOiAgc3ByaW5n ZnJhbWV3b3JrLWRldmVsb3Blci1hZG1pbkBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQNCg0KCQ0KDQog ICAgICANCg0KWyBtYWlsdG86c3ByaW5nZnJhbWV3b3JrLWRldmVsb3Blci1hZG1pbkBsaXN0cy5z b3VyY2Vmb3JnZS5uZXRdT24gQmVoYWxmDQoNCiAgICANCg0KCU9mIENoaXN0b3BoZSBWYW5mbGV0 ZXJlbg0KDQoJU2VudDogVGh1cnNkYXksIEp1bHkgMDgsIDIwMDQgMTE6MjYgQU0NCg0KCVRvOiAg c3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQNCg0KCVN1Ympl Y3Q6IFJlOiBbU3ByaW5nZnJhbWV3b3JrLWRldmVsb3Blcl0gSW50ZXJjZXB0aW5nIA0KDQogICAg ICANCg0KYmVhbiBjcmVhdGlvbj8NCg0KICAgIA0KDQoJDQoNCgkNCg0KCU9uIFRodXJzZGF5IDA4 IEp1bHkgMjAwNCAxMToxMiwgTWFzb24sIFJvc3Mgd3JvdGU6DQoNCgk+IEhpLA0KDQoJPiBJIGNy ZWF0ZSBhIGxvdCBvZiBkaWZmZXJlbnQgdHlwZXMgb2Ygb2JqZWN0IGluIGFuIA0KDQogICAgICAN Cg0KYXBwbGljYXRpb25Db250ZXh0LCBhbGwNCg0KICAgIA0KDQoJPiBvZiB3aGljaCBoYXZlIGEg bmFtZSBwcm9wZXJ0eSBpLmUuDQoNCgk+DQoNCgk+IDxiZWFuIGlkPSJqbXNDb25uZWN0b3IiIA0K DQogICAgICANCg0KY2xhc3NOYW1lPSJvcmcubXVsZS5wcm92aWRlcnMuam1zLkptc0Nvbm5lY3Rv ciI+DQoNCiAgICANCg0KCT4gICAgIDxwcm9wZXJ0eSANCg0KICAgICAgDQoNCm5hbWU9Im5hbWUi Pjx2YWx1ZT5qbXNDb25uZWN0b3I8L3ZhbHVlPjwvcHJvcGVydHk+DQoNCiAgICANCg0KCT4gPC9i ZWFuPg0KDQoJPg0KDQoJPiBJIGRvbid0IGxpa2UgaGF2aW5nIHRvIGluY2x1ZGUgdGhlIG5hbWUg cHJvcGVydHkgaWYgDQoNCiAgICAgIA0KDQp0aGVyZSBpcyBhIGNoYW5jZSBJDQoNCiAgICANCg0K CT4gY291bGQgdXNlIHRoZSBiZWFuIGlkIGluc3RlYWQuIElzIHRoZXJlIGFueSB3YXkgSSBjYW4g DQoNCiAgICAgIA0KDQp1bmlmb3JtbHkgaW50ZXJjZXB0DQoNCiAgICANCg0KCT4gYmVhbiBjcmVh dGlvbiBpbiB0aGUgY29udGV4dCBzbyB0aGF0IHN0cmFpZ2h0IGFmdGVyIA0KDQogICAgICANCg0K dGhlIGNvbnN0cnVjdG9yIGlzDQoNCiAgICANCg0KCT4gY2FsbGVkIEkgY2FuIGdldCBob2xkIG9m IHRoZSBiZWFuIGlkIGFuZCBzZXQgaXQgb24gbXkgb2JqZWN0Pw0KDQoJPg0KDQoJPiBJIGNhbid0 IHdhaXQgdW50aWwgdGhlIGFwcGxpY2F0aW9uQ29udGV4dCBpcyANCg0KICAgICAgDQoNCmNvbmZp Z3VyZWQgYW5kIHRoZW4gc2V0IHRoZQ0KDQogICAgDQoNCgk+IG5hbWVzIGFzIHNvbWUgb2JqZWN0 cyBoYXZlIGEgY29sbGVjdGlvbiBvZiBvdGhlciANCg0KICAgICAgDQoNCm9iamVjdHMgd2hpY2gg YXJlIGtleWVkDQoNCiAgICANCg0KCT4gYWdhaW5zdCB0aGUgbmFtZS4NCg0KCT4NCg0KCQ0KDQoJ WW91IGNvdWxkIGltcGxlbWVudCBCZWFuTmFtZUF3YXJlOg0KDQoJDQoNCiAgICAgIA0KDQogPGh0 dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9kb2NzL2FwaS9vcmcvc3ByaW5nZnJhbWV3b3Jr L2JlYW5zL2ZhY3RvcnkvQmVhbk5hbWVBd2FyZS5odG1sPiA8aHR0cDovL3d3dy5zcHJpbmdmcmFt ZXdvcmsub3JnL2RvY3MvYXBpL29yZy9zcHJpbmdmcmFtZXdvcmsvYmVhbnMvZmFjdG9yeS9CZWFu TmFtZUF3YXJlLmh0bWw+DQoNCiAgDQoNCgkNCg0KCS0tDQoNCglLaW5kIHJlZ2FyZHMsDQoNCglD aHJpc3RvcGhlIFZhbmZsZXRlcmVuDQoNCgkNCg0KCQ0KDQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoJVGhpcyBTRi5OZXQgZW1haWwg c3BvbnNvcmVkIGJ5IEJsYWNrIEhhdCBCcmllZmluZ3MgJiBUcmFpbmluZy4NCg0KCUF0dGVuZCBC bGFjayBIYXQgQnJpZWZpbmdzICYgVHJhaW5pbmcsIExhcyBWZWdhcyBKdWx5IDI0LTI5IC0NCg0K CWRpZ2l0YWwgc2VsZiBkZWZlbnNlLCB0b3AgdGVjaG5pY2FsIGV4cGVydHMsIG5vIHZlbmRvciBw aXRjaGVzLA0KDQoJdW5tYXRjaGVkIG5ldHdvcmtpbmcgb3Bwb3J0dW5pdGllcy4gVmlzaXQgIHd3 dy5ibGFja2hhdC5jb20NCg0KCV9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fDQoNCglTcHJpbmdmcmFtZXdvcmstZGV2ZWxvcGVyIG1haWxpbmcgbGlzdA0KDQoJ IFNwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXJAbGlzdHMuc291cmNlZm9yZ2UubmV0DQoNCgkgaHR0 cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vc3ByaW5nZnJhbWV3b3Jr LWRldmVsb3Blcg0KDQoJDQoNCgkNCg0KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KCVRoaXMgU0YuTmV0IGVtYWlsIHNwb25zb3JlZCBi eSBCbGFjayBIYXQgQnJpZWZpbmdzICYgVHJhaW5pbmcuDQoNCglBdHRlbmQgQmxhY2sgSGF0IEJy aWVmaW5ncyAmIFRyYWluaW5nLCBMYXMgVmVnYXMgSnVseSAyNC0yOSAtDQoNCglkaWdpdGFsIHNl bGYgZGVmZW5zZSwgdG9wIHRlY2huaWNhbCBleHBlcnRzLCBubyB2ZW5kb3IgcGl0Y2hlcywNCg0K CXVubWF0Y2hlZCBuZXR3b3JraW5nIG9wcG9ydHVuaXRpZXMuIFZpc2l0ICB3d3cuYmxhY2toYXQu Y29tDQoNCglfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K DQoJU3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlciBtYWlsaW5nIGxpc3QNCg0KCSBTcHJpbmdmcmFt ZXdvcmstZGV2ZWxvcGVyQGxpc3RzLnNvdXJjZWZvcmdlLm5ldA0KDQoJIGh0dHBzOi8vbGlzdHMu c291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3NwcmluZ2ZyYW1ld29yay1kZXZlbG9wZXIN Cg0KCQ0KDQoNCg0KIA0KDQoNCg0KICAgIA0KDQoNCg0KDQoNCg0KDQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClRoaXMgU0YuTmV0IGVt YWlsIHNwb25zb3JlZCBieSBCbGFjayBIYXQgQnJpZWZpbmdzICYgVHJhaW5pbmcuDQoNCkF0dGVu ZCBCbGFjayBIYXQgQnJpZWZpbmdzICYgVHJhaW5pbmcsIExhcyBWZWdhcyBKdWx5IDI0LTI5IC0g DQoNCmRpZ2l0YWwgc2VsZiBkZWZlbnNlLCB0b3AgdGVjaG5pY2FsIGV4cGVydHMsIG5vIHZlbmRv ciBwaXRjaGVzLCANCg0KdW5tYXRjaGVkIG5ldHdvcmtpbmcgb3Bwb3J0dW5pdGllcy4gVmlzaXQg IHd3dy5ibGFja2hhdC5jb20NCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCg0KU3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlciBtYWlsaW5nIGxpc3QNCg0K U3ByaW5nZnJhbWV3b3JrLWRldmVsb3BlckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQNCg0KaHR0cHM6 Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vc3ByaW5nZnJhbWV3b3JrLWRl dmVsb3Blcg0KDQpOGO+/vUhTXu+/vemailsp77+9eyjvv73vv71b77+9GVpyQdq0Gu+/vXnvv73v v73vv71qKe+/vSvvv70p4KKaaO+/vdun77+92J7vv71Y77+977+977+9MO+/vVpySFrvv73vv70m Su+/ve+/vQfvv71qZ++/ve+/ve+/vR1677+977+977+977+977+977+9eCXvv73vv71S77+977+9 77+977+977+92pnvv70o77+9R17vv73vv71o77+977+977+977+9bO+/ve+/ve+/vXHvv73vv70H 77+9eu+/vW3vv73vv70/77+9WO+/ve+/ve+/vSjvv73vv70efu+/ve+/vXp377+977+9WO+/ve+/ ve+/ve+/ve+/vWLvv73vv70/77+977+977+9B++/vWpn77+977+977+9HXrvv73vv70NCg0KDQo= |