mcconnell    2004/01/21 06:17:35

  Modified:    
merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl
                        DefaultAppliance.java
  Log:
  Disable proxy creation is permissions do not allow it.
  
  Revision  Changes    Path
  1.25      +29 -6     
avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/DefaultAppliance.java
  
  Index: DefaultAppliance.java
  ===================================================================
  RCS file: 
/home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/appliance/impl/DefaultAppliance.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- DefaultAppliance.java     21 Jan 2004 12:38:48 -0000      1.24
  +++ DefaultAppliance.java     21 Jan 2004 14:17:35 -0000      1.25
  @@ -55,11 +55,13 @@
   import java.lang.reflect.UndeclaredThrowableException;
   import java.lang.reflect.Method;
   import java.lang.reflect.Proxy;
  +import java.security.AccessControlException;
   import java.security.AccessControlContext;
   import java.security.AccessController;
   import java.security.PrivilegedAction;
   import java.security.PrivilegedActionException;
   import java.security.PrivilegedExceptionAction;
  +import java.security.Permission;
   import java.util.Hashtable;
   import java.util.ArrayList;
   import java.util.Map;
  @@ -102,6 +104,7 @@
   import org.apache.avalon.lifecycle.Creator;
   import org.apache.avalon.meta.info.InfoDescriptor;
   import org.apache.avalon.meta.info.StageDescriptor;
  +import org.apache.avalon.util.exception.ExceptionHelper;
   
   /**
    * DefaultAppliance is the default implementation of a local 
  @@ -1201,6 +1204,25 @@
                 classes,
                 handler );
           }
  +        catch( AccessControlException e )
  +        {
  +            Permission p = e.getPermission();
  +            if( null != p )
  +            {
  +                final String warning = 
  +                  "Proxy creation disabled due to insufficient permission: [" 
  +                  + p.getName()
  +                  + "].";
  +                getLogger().warn( warning );
  +            }
  +            else
  +            {
  +                final String warning = 
  +                  "Proxy creation disabled due to access control restriction."; 
  +                getLogger().warn( warning );
  +            }
  +            return instance;
  +        }
           catch( Throwable e )
           {
               final String error = 
  @@ -1290,8 +1312,9 @@
               m_destroyed = true;
           }
           
  -        private Object secureInvocation( final Method method, final Object object, 
final Object[] args )
  -            throws Exception
  +        private Object secureInvocation( 
  +          final Method method, final Object object, final Object[] args )
  +          throws Exception
           {
               if( ! m_secured )
               {
  @@ -1314,7 +1337,8 @@
           private Throwable handleInvocationThrowable( Throwable e )
           {
               final String error = 
  -            "Delegation error raised by component: " + m_model.getQualifiedName();
  +              "Delegation error raised by component: " 
  +              + m_model.getQualifiedName();
               while( true )
               {
                   if( e instanceof UndeclaredThrowableException )
  @@ -1408,10 +1432,9 @@
               }
               catch( Throwable e )
               {
  +                getLogger().error( e.getMessage() );
                   final String error = 
  -                  "Proxy establishment failure: " 
  -                  + e.getMessage();
  -                getLogger().error( error );
  +                  "Provider publication failure.";
                   throw new LifecycleException( error, e );
               }
           }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to