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
>>    
>>
>
>  
>