You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Tom Amiro <To...@Sun.COM> on 2002/11/15 23:01:02 UTC
Re: [PATCH] For allowing xalan to read property files without opening
upcontainer permissions
Morris,
Thanks so much. I know Ramesh pretty well and can atest that
he would have verified it in the J2EE environment. We can
follow up nonetheless.
Tom
mkwan@ca.ibm.com wrote:
>
> The patch looks reasonable. I will commit it. I don't have a J2EE
> enviroment to test it with though. I assume that Ramesh already tested the
> code with that environment.
>
> Morris Kwan
> XSLT Development
> IBM Toronto Lab
> Tel: (905)413-3729
> Email: mkwan@ca.ibm.com
>
>
> Tom Amiro
> <Tom.Amiro@Sun.CO To: xalan-dev@xml.apache.org
> M> cc: ramesh.mandava@Sun.COM
> Sent by: Subject: Re: [PATCH] For allowing xalan to read property files without opening up
> Tom.Amiro@Sun.COM container permissions
>
>
> 11/15/2002 11:37
> AM
> Please respond to
> xalan-dev
>
>
>
> Hi,
>
> I remember running into this problem with the Petstore application
> and getting around it by opening up the permissions. But we,
> Santiago and I, discussed changing Xalan so it would use
> reasonable defaults if it couldn't read the output properties
> file. For some reason, we never got around to doing anything about
> itt. Ramesh, I'm glad you resurrected this probem and even present a
> solution.
>
> Anyone on the Toronto team want to check the patch out and
> commit it if it looks good?
>
> Tom
>
> Ramesh Mandava wrote:
> >
> > Hi:
> > Xalan as it stands right now, throws the following exception when tried
> to use
> > as part of secure container, such as J2EE RI.
> >
> > ==
> >
> > org.apache.xml.utils.WrappedRuntimeException: Could not load
> > output_text.properties (check CLASSPATH), now using just the
> > defaults
> > at
> > org.apache.xalan.templates.OutputProperties.loadPropertiesFile(OutputProp
> > erties.java:219)
> > at
> > org.apache.xalan.templates.OutputProperties.getDefaultMethodProperties(Ou
> > tputProperties.java:333)
> > at
> > org.apache.xalan.templates.OutputProperties.setMethodDefaults(OutputPrope
> > rties.java:635)
> > at
> > org.apache.xalan.templates.OutputProperties.setProperty(OutputProperties.
> > java:419)
> > at
> > org.apache.xalan.templates.OutputProperties.setQNameProperty(OutputProper
> > ties.java:652)
> > at
> > org.apache.xalan.processor.ProcessorOutputElem.setMethod(ProcessorOutputE
> > lem.java:155
> >
> > ==
> >
> > For avoiding this we need to give File read permission for the jar
> file.
> >
> > This is happening because we don't have doPrivileged block in
> >
> > "org.apache.xalan.templates.OutputProperties.java"
> >
> > while trying to read property files. And as xalan is trying to read
> internal
> > property file, forcing users to opening the permission is not a good
> idea.
> >
> > I am providing the patched file as an attachment to this email. I am
> also
> > attaching "cvs diff" as "diffs".
> >
> > Can somebody review the code and check-in the code.
> >
> > Thanks
> > -Ramesh
> >
> >
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> > Name: OutputProperties.java
> > OutputProperties.java Type: unspecified type
> (APPLICATION/octet-stream)
> > Encoding: BASE64
> > Description: OutputProperties.java
> >
> >
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> > Index: OutputProperties.java
> > ===================================================================
> > RCS file:
> /home/cvspublic/xml-xalan/java/src/org/apache/xalan/templates/OutputProperties.java,v
>
> > retrieving revision 1.22
> > diff -r1.22 OutputProperties.java
> > 68a69,70
> > > import java.security.AccessController;
> > > import java.security.PrivilegedAction;
> > 192c194
> > < static private Properties loadPropertiesFile(String resourceName,
> Properties defaults)
> > ---
> > > static private Properties loadPropertiesFile(final String
> resourceName, Properties defaults)
> > 207,211c209,228
> > < java.lang.reflect.Method getCCL = Thread.class.getMethod
> ("getContextClassLoader", NO_CLASSES);
> > < if (getCCL != null) {
> > < ClassLoader contextClassLoader = (ClassLoader)
> getCCL.invoke(Thread.currentThread(), NO_OBJS);
> > < is = contextClassLoader.getResourceAsStream
> ("org/apache/xalan/templates/" + resourceName);
> > < }
> > ---
> > > // Using doPrivileged to be able to read property file without
> opening
> > > // up secured container permissions like J2EE container
> > > is =(InputStream)AccessController.doPrivileged( new
> PrivilegedAction() {
> > > public Object run() {
> > > try {
> > > java.lang.reflect.Method getCCL = Thread.class.getMethod(
> > > "getContextClassLoader", NO_CLASSES);
> > > if (getCCL != null) {
> > > ClassLoader contextClassLoader = (ClassLoader)
> > > getCCL.invoke(Thread.currentThread(), NO_OBJS);
> > > return ( contextClassLoader.getResourceAsStream (
> > > "org/apache/xalan/templates/" + resourceName) );
> > > }
> > > }
> > > catch ( Exception e ) { }
> > >
> > > return null;
> > >
> > > }
> > > });
> > 216c233,238
> > < is = OutputProperties.class.getResourceAsStream(resourceName);
> > ---
> > > is = (InputStream)AccessController.doPrivileged( new
> PrivilegedAction(){
> > > public Object run() {
> > > return
> OutputProperties.class.getResourceAsStream(resourceName);
> > > }
> > > });
> > >
>
> --
> Tom Amiro -- SQE Engineer
> WTS - Interoperability and Quality
> voice: 781-442-0589 Fax: 781-442-1437
> eMail: tom.amiro@.sun.com
--
Tom Amiro -- SQE Engineer
WTS - Interoperability and Quality
voice: 781-442-0589 Fax: 781-442-1437
eMail: tom.amiro@.sun.com
Re: [PATCH] For allowing xalan to read property files without opening
upcontainer permissions
Posted by Ramesh Mandava <ra...@sun.com>.
Thank you Morris and Tom. I have tested it aginst J2EE RI and Petstore app.
Morris: I just read your concern about running against JDK 1.1.8. If
that is the requirement then I can modify the Patch to take care of this
situation. Thanks again for considering the patch.
Regards
-Ramesh
PS: Sorry for the delayed response.
Tom Amiro wrote:
>Morris,
>
>Thanks so much. I know Ramesh pretty well and can atest that
>he would have verified it in the J2EE environment. We can
>follow up nonetheless.
>
>Tom
>
>
>mkwan@ca.ibm.com wrote:
>
>
>>The patch looks reasonable. I will commit it. I don't have a J2EE
>>enviroment to test it with though. I assume that Ramesh already tested the
>>code with that environment.
>>
>>Morris Kwan
>>XSLT Development
>>IBM Toronto Lab
>>Tel: (905)413-3729
>>Email: mkwan@ca.ibm.com
>>
>>
>> Tom Amiro
>> <Tom.Amiro@Sun.CO To: xalan-dev@xml.apache.org
>> M> cc: ramesh.mandava@Sun.COM
>> Sent by: Subject: Re: [PATCH] For allowing xalan to read property files without opening up
>> Tom.Amiro@Sun.COM container permissions
>>
>>
>> 11/15/2002 11:37
>> AM
>> Please respond to
>> xalan-dev
>>
>>
>>
>>Hi,
>>
>>I remember running into this problem with the Petstore application
>>and getting around it by opening up the permissions. But we,
>>Santiago and I, discussed changing Xalan so it would use
>>reasonable defaults if it couldn't read the output properties
>>file. For some reason, we never got around to doing anything about
>>itt. Ramesh, I'm glad you resurrected this probem and even present a
>>solution.
>>
>>Anyone on the Toronto team want to check the patch out and
>>commit it if it looks good?
>>
>>Tom
>>
>>Ramesh Mandava wrote:
>>
>>
>>>Hi:
>>> Xalan as it stands right now, throws the following exception when tried
>>>
>>>
>>to use
>>
>>
>>>as part of secure container, such as J2EE RI.
>>>
>>> ==
>>>
>>> org.apache.xml.utils.WrappedRuntimeException: Could not load
>>> output_text.properties (check CLASSPATH), now using just the
>>>defaults
>>> at
>>>org.apache.xalan.templates.OutputProperties.loadPropertiesFile(OutputProp
>>> erties.java:219)
>>> at
>>>org.apache.xalan.templates.OutputProperties.getDefaultMethodProperties(Ou
>>> tputProperties.java:333)
>>> at
>>>org.apache.xalan.templates.OutputProperties.setMethodDefaults(OutputPrope
>>> rties.java:635)
>>> at
>>>org.apache.xalan.templates.OutputProperties.setProperty(OutputProperties.
>>> java:419)
>>> at
>>>org.apache.xalan.templates.OutputProperties.setQNameProperty(OutputProper
>>> ties.java:652)
>>> at
>>>org.apache.xalan.processor.ProcessorOutputElem.setMethod(ProcessorOutputE
>>> lem.java:155
>>>
>>> ==
>>>
>>> For avoiding this we need to give File read permission for the jar
>>>
>>>
>>file.
>>
>>
>>> This is happening because we don't have doPrivileged block in
>>>
>>> "org.apache.xalan.templates.OutputProperties.java"
>>>
>>> while trying to read property files. And as xalan is trying to read
>>>
>>>
>>internal
>>
>>
>>>property file, forcing users to opening the permission is not a good
>>>
>>>
>>idea.
>>
>>
>>> I am providing the patched file as an attachment to this email. I am
>>>
>>>
>>also
>>
>>
>>>attaching "cvs diff" as "diffs".
>>>
>>> Can somebody review the code and check-in the code.
>>>
>>> Thanks
>>> -Ramesh
>>>
>>>
>>>
>>>
>>>
>>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>>
>>
>>> Name: OutputProperties.java
>>> OutputProperties.java Type: unspecified type
>>>
>>>
>>(APPLICATION/octet-stream)
>>
>>
>>> Encoding: BASE64
>>> Description: OutputProperties.java
>>>
>>>
>>>
>>>
>>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>>
>>
>>>Index: OutputProperties.java
>>>===================================================================
>>>RCS file:
>>>
>>>
>>/home/cvspublic/xml-xalan/java/src/org/apache/xalan/templates/OutputProperties.java,v
>>
>>
>>
>>>retrieving revision 1.22
>>>diff -r1.22 OutputProperties.java
>>>68a69,70
>>>
>>>
>>>>import java.security.AccessController;
>>>>import java.security.PrivilegedAction;
>>>>
>>>>
>>>192c194
>>>< static private Properties loadPropertiesFile(String resourceName,
>>>
>>>
>>Properties defaults)
>>
>>
>>>---
>>>
>>>
>>>> static private Properties loadPropertiesFile(final String
>>>>
>>>>
>>resourceName, Properties defaults)
>>
>>
>>>207,211c209,228
>>>< java.lang.reflect.Method getCCL = Thread.class.getMethod
>>>
>>>
>>("getContextClassLoader", NO_CLASSES);
>>
>>
>>>< if (getCCL != null) {
>>>< ClassLoader contextClassLoader = (ClassLoader)
>>>
>>>
>>getCCL.invoke(Thread.currentThread(), NO_OBJS);
>>
>>
>>>< is = contextClassLoader.getResourceAsStream
>>>
>>>
>>("org/apache/xalan/templates/" + resourceName);
>>
>>
>>>< }
>>>---
>>>
>>>
>>>> // Using doPrivileged to be able to read property file without
>>>>
>>>>
>>opening
>>
>>
>>>> // up secured container permissions like J2EE container
>>>> is =(InputStream)AccessController.doPrivileged( new
>>>>
>>>>
>>PrivilegedAction() {
>>
>>
>>>> public Object run() {
>>>> try {
>>>> java.lang.reflect.Method getCCL = Thread.class.getMethod(
>>>> "getContextClassLoader", NO_CLASSES);
>>>> if (getCCL != null) {
>>>> ClassLoader contextClassLoader = (ClassLoader)
>>>> getCCL.invoke(Thread.currentThread(), NO_OBJS);
>>>> return ( contextClassLoader.getResourceAsStream (
>>>> "org/apache/xalan/templates/" + resourceName) );
>>>> }
>>>> }
>>>> catch ( Exception e ) { }
>>>>
>>>> return null;
>>>>
>>>> }
>>>> });
>>>>
>>>>
>>>216c233,238
>>>< is = OutputProperties.class.getResourceAsStream(resourceName);
>>>---
>>>
>>>
>>>> is = (InputStream)AccessController.doPrivileged( new
>>>>
>>>>
>>PrivilegedAction(){
>>
>>
>>>> public Object run() {
>>>> return
>>>>
>>>>
>>OutputProperties.class.getResourceAsStream(resourceName);
>>
>>
>>>> }
>>>> });
>>>>
>>>>
>>>>
>>--
>> Tom Amiro -- SQE Engineer
>> WTS - Interoperability and Quality
>> voice: 781-442-0589 Fax: 781-442-1437
>> eMail: tom.amiro@.sun.com
>>
>>
>
>
>