You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@locus.apache.org on 2000/11/03 07:46:56 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core StandardContext.java

remm        00/11/02 22:46:55

  Modified:    catalina/src/share/org/apache/catalina/core
                        StandardContext.java
  Log:
  - Fix for a dumb initialization problem of the naming context, where naming
    entries which were including paths could be bound to an incorrect path.
  - Add an easy to specify additional parameters for resources (by using env-entry
    elements).
  
  Revision  Changes    Path
  1.27      +29 -7     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java
  
  Index: StandardContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- StandardContext.java	2000/11/03 00:21:15	1.26
  +++ StandardContext.java	2000/11/03 06:46:54	1.27
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.26 2000/11/03 00:21:15 craigmcc Exp $
  - * $Revision: 1.26 $
  - * $Date: 2000/11/03 00:21:15 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.27 2000/11/03 06:46:54 remm Exp $
  + * $Revision: 1.27 $
  + * $Date: 2000/11/03 06:46:54 $
    *
    * ====================================================================
    *
  @@ -84,6 +84,9 @@
   import javax.naming.InitialContext;
   import javax.naming.Reference;
   import javax.naming.StringRefAddr;
  +import javax.naming.NamingEnumeration;
  +import javax.naming.Binding;
  +import javax.naming.StringRefAddr;
   import org.apache.naming.NamingContext;
   import org.apache.naming.ContextBindings;
   import org.apache.naming.ContextAccessController;
  @@ -127,7 +130,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.26 $ $Date: 2000/11/03 00:21:15 $
  + * @version $Revision: 1.27 $ $Date: 2000/11/03 06:46:54 $
    */
   
   public final class StandardContext
  @@ -3017,7 +3020,7 @@
                    ejb.getRunAs());
               Reference ref = new Reference(ejb.getType(), ejbRefAddr);
               // Adding the additional parameters, if any
  -            
  +            addAdditionalParameters(envCtx, ref, ejb.getName());
               try {
                   createSubcontexts(compCtx, ejb.getName());
                   compCtx.bind(ejb.getName(), ref);
  @@ -3038,7 +3041,7 @@
                    resource.getScope(), resource.getAuth());
               Reference ref = new Reference(resource.getType(), resourceRefAddr);
               // Adding the additional parameters, if any
  -            
  +            addAdditionalParameters(envCtx, ref, resource.getName());
               try {
                   createSubcontexts(compCtx, resource.getName());
                   compCtx.bind(resource.getName(), ref);
  @@ -3059,7 +3062,7 @@
               ref.add(new StringRefAddr("name", key));
               ref.add(new StringRefAddr("type", type));
               // Adding the additional parameters, if any
  -            
  +            addAdditionalParameters(envCtx, ref, key);
               try {
                   createSubcontexts(compCtx, key);
                   compCtx.bind(key, ref);
  @@ -3092,11 +3095,30 @@
                   } catch (NamingException e) {
                       // Silent catch. Probably an object is already bound in
                       // the context.
  +                    currentContext = 
  +                        (javax.naming.Context) currentContext.lookup(token);
                   }
               }
           }
       }
       
  +
  +    /**
  +     * Add additional parameters to the reference.
  +     */
  +    private void addAdditionalParameters(javax.naming.Context ctx,
  +                                         Reference ref, String name) {
  +        try {
  +            NamingEnumeration enum = ctx.listBindings(name);
  +            while (enum.hasMore()) {
  +                Binding binding = (Binding) enum.next();
  +                StringRefAddr refAddr = new StringRefAddr
  +                    (binding.getName(), binding.getObject().toString());
  +                ref.add(refAddr);
  +            }
  +        } catch (NamingException e) {
  +        }
  +    }
   
   
       /**