jvanzyl     2004/05/07 17:50:36

  Modified:    maven-core/src/main/java/org/apache/maven/plugin/manager
                        DefaultPluginManagerManager.java
               maven-core/src/main/resources/org/apache/maven plexus.xml
  Added:       maven-core/src/main/java/org/apache/maven/plugin
                        PluginConfigurationException.java
               maven-core/src/main/java/org/apache/maven/plugin/manager
                        OgnlProjectValueExtractor.java
                        PlexusPluginManager.java
               maven-core/src/main/java/org/apache/maven/plugin/manager/executor
                        FieldPluginExecutor.java
                        IntegratedPluginExecutor.java PluginExecutor.java
                        SetterPluginExecutor.java
  Removed:     maven-core/src/main/java/org/apache/maven/plugin/plexus
                        OgnlProjectValueExtractor.java
                        PlexusPluginManager.java
                        PluginConfigurationException.java
               maven-core/src/main/java/org/apache/maven/plugin/plexus/executor
                        FieldPluginExecutor.java
                        IntegratedPluginExecutor.java PluginExecutor.java
                        SetterPluginExecutor.java
               maven-core/src/test/java/org/apache/maven/plugin
                        PluginConfiguratorTest.java
  Log:
  o folding everything into a plugin manager which will be dealt with by
    plexus.
  
  Revision  Changes    Path
  1.1                  
maven-components/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java
  
  Index: PluginConfigurationException.java
  ===================================================================
  package org.apache.maven.plugin;
  
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  /**
   *
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
   *
   * @version $Id: PluginConfigurationException.java,v 1.1 2004/05/08 00:50:35 jvanzyl 
Exp $
   */
  public class PluginConfigurationException
      extends Exception
  {
      public PluginConfigurationException( String message )
      {
          super( message );
      }
  
      public PluginConfigurationException( String message, Throwable cause )
      {
          super( message, cause );
      }
  }
  
  
  
  1.14      +0 -1      
maven-components/maven-core/src/main/java/org/apache/maven/plugin/manager/DefaultPluginManagerManager.java
  
  Index: DefaultPluginManagerManager.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/plugin/manager/DefaultPluginManagerManager.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DefaultPluginManagerManager.java  7 May 2004 23:46:51 -0000       1.13
  +++ DefaultPluginManagerManager.java  8 May 2004 00:50:35 -0000       1.14
  @@ -19,7 +19,6 @@
   import org.apache.maven.lifecycle.MavenLifecycleContext;
   import org.apache.maven.plugin.PluginExecutionRequest;
   import org.apache.maven.plugin.PluginExecutionResponse;
  -import org.apache.maven.plugin.plexus.OgnlProjectValueExtractor;
   import org.apache.maven.plugin.descriptor.GoalDescriptor;
   import org.apache.maven.plugin.descriptor.PluginDescriptor;
   import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
  
  
  
  1.1                  
maven-components/maven-core/src/main/java/org/apache/maven/plugin/manager/OgnlProjectValueExtractor.java
  
  Index: OgnlProjectValueExtractor.java
  ===================================================================
  package org.apache.maven.plugin.manager;
  
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  import ognl.Ognl;
  import ognl.OgnlException;
  import org.apache.maven.project.MavenProject;
  
  /**
   *
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
   *
   * @version $Id: OgnlProjectValueExtractor.java,v 1.1 2004/05/08 00:50:35 jvanzyl 
Exp $
   */
  public class OgnlProjectValueExtractor
  {
      public static Object evaluate( String expression, MavenProject project )
      {
          Object value = null;
  
          if ( expression.equals( "#project" ) )
          {
              value = project;
          }
          else if ( expression.startsWith( "#project" ) )
          {
              try
              {
                  value = Ognl.getValue( expression.substring( 9 ), project );
              }
              catch ( OgnlException e )
              {
                  // do nothing
              }
          }
          else if ( expression.startsWith( "#" ) )
          {
              expression = expression.substring( 1 );
  
              value = project.getProperty( expression );
          }
  
  
          // If we strike out we'll just use the expression which allows
          // people to use hardcoded values if they wish.
  
          if ( value == null )
          {
              value = expression;
          }
  
          return value;
      }
  }
  
  
  
  1.1                  
maven-components/maven-core/src/main/java/org/apache/maven/plugin/manager/PlexusPluginManager.java
  
  Index: PlexusPluginManager.java
  ===================================================================
  package org.apache.maven.plugin.manager;
  
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  import org.apache.maven.plugin.Plugin;
  import org.apache.maven.plugin.PluginExecutionRequest;
  import org.apache.maven.plugin.PluginExecutionResponse;
  import org.apache.maven.plugin.manager.AbstractPluginManager;
  import org.apache.maven.plugin.manager.executor.PluginExecutor;
  import org.codehaus.plexus.PlexusConstants;
  import org.codehaus.plexus.PlexusContainer;
  import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
  import org.codehaus.plexus.context.Context;
  import org.codehaus.plexus.context.ContextException;
  import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
  
  /**
   * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
   * @version $Id: PlexusPluginManager.java,v 1.1 2004/05/08 00:50:35 jvanzyl Exp $
   */
  public class PlexusPluginManager
      extends AbstractPluginManager
      implements Contextualizable
  {
      private PlexusContainer container;
  
      public void loadPlugin( String name )
          throws Exception
      {
      }
  
      public String getId()
      {
          return "plexus";
      }
  
      public void attainGoal( PluginExecutionRequest request, PluginExecutionResponse 
response )
      {
          try
          {
              Object plugin = container.lookup( Plugin.ROLE, (String) 
request.getContextValue( "id" ) );
  
              request.setPlugin( plugin );
  
              PluginExecutor pluginExecutor =
                  (PluginExecutor) container.lookup( PluginExecutor.ROLE, (String) 
request.getContextValue( "mode" ) );
  
              pluginExecutor.execute( request, response );
          }
          catch ( ComponentLookupException e )
          {
              response.setException( e );
          }
      }
  
      // ----------------------------------------------------------------------
      // Lifecylce Management
      // ----------------------------------------------------------------------
  
      public void contextualize( Context context )
          throws ContextException
      {
          container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
      }
  }
  
  
  
  1.1                  
maven-components/maven-core/src/main/java/org/apache/maven/plugin/manager/executor/FieldPluginExecutor.java
  
  Index: FieldPluginExecutor.java
  ===================================================================
  package org.apache.maven.plugin.manager.executor;
  
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  import org.apache.maven.plugin.PluginExecutionRequest;
  import org.apache.maven.plugin.PluginExecutionResponse;
  import org.apache.maven.plugin.PluginConfigurationException;
  import org.apache.maven.plugin.PluginConfigurationException;
  
  import java.lang.reflect.Field;
  import java.lang.reflect.InvocationTargetException;
  import java.lang.reflect.Method;
  import java.util.Iterator;
  import java.util.Map;
  
  /**
   *
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
   *
   * @version $Id: FieldPluginExecutor.java,v 1.1 2004/05/08 00:50:35 jvanzyl Exp $
   */
  public class FieldPluginExecutor
      implements PluginExecutor
  {
      public void execute( PluginExecutionRequest request, PluginExecutionResponse 
response )
      {
          Object plugin = request.getPlugin();
  
          if ( request.getParameters() != null )
          {
              try
              {
                  plugin = configure( plugin, request.getParameters() );
              }
              catch ( PluginConfigurationException e )
              {
                  response.setException( e );
  
                  return;
              }
          }
  
          Method m = null;
  
          try
          {
              m = plugin.getClass().getMethod( "execute", new Class[0] );
  
              m.invoke( plugin, new Object[0] );
          }
          catch ( NoSuchMethodException e )
          {
              response.setException( e );
          }
          catch ( InvocationTargetException e )
          {
              response.setException( e.getTargetException() );
          }
          catch ( Exception e )
          {
              response.setException( e );
          }
      }
      // ----------------------------------------------------------------------
      //
      // ----------------------------------------------------------------------
  
      protected Object configure( Object plugin, Map parameters )
          throws PluginConfigurationException
      {
          Class pluginClass = plugin.getClass();
  
          for ( Iterator iterator = parameters.keySet().iterator(); 
iterator.hasNext(); )
          {
              String fieldName = (String) iterator.next();
  
              Object value = parameters.get( fieldName );
  
              try
              {
                  Field field = getField( pluginClass, fieldName );
  
                  field.setAccessible( true );
  
                  field.set( plugin, value );
              }
              catch ( Exception e )
              {
                  throw new PluginConfigurationException(
                      "Error setting value of field " + fieldName + " with " + value + 
".", e );
              }
          }
  
          return plugin;
      }
  
      private Field getField( Class clazz, String fieldName )
          throws Exception
      {
          Field field = null;
  
          try
          {
              field = clazz.getDeclaredField( fieldName );
          }
          catch ( NoSuchFieldException e )
          {
              if ( clazz.getSuperclass() != Object.class )
              {
                  field = getField( clazz.getSuperclass(), fieldName );
              }
              else
              {
                  throw e;
              }
          }
          catch ( Exception e )
          {
              throw e;
          }
  
          return field;
      }
  }
  
  
  
  1.1                  
maven-components/maven-core/src/main/java/org/apache/maven/plugin/manager/executor/IntegratedPluginExecutor.java
  
  Index: IntegratedPluginExecutor.java
  ===================================================================
  package org.apache.maven.plugin.manager.executor;
  
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  import org.apache.maven.plugin.PluginExecutionRequest;
  import org.apache.maven.plugin.PluginExecutionResponse;
  import org.apache.maven.plugin.Plugin;
  import org.apache.maven.plugin.manager.OgnlProjectValueExtractor;
  import org.apache.maven.plugin.descriptor.ParameterDescriptor;
  
  import java.util.List;
  import java.util.Map;
  import java.util.HashMap;
  
  /**
   *
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
   *
   * @version $Id: IntegratedPluginExecutor.java,v 1.1 2004/05/08 00:50:35 jvanzyl Exp 
$
   */
  public class IntegratedPluginExecutor
      implements PluginExecutor
  {
      public void execute( PluginExecutionRequest request, PluginExecutionResponse 
response )
      {
          try
          {
              ((Plugin) request.getPlugin()).execute( request, response );
          }
          catch ( Exception e )
          {
              response.setException( e );
          }
      }
  }
  
  
  
  1.1                  
maven-components/maven-core/src/main/java/org/apache/maven/plugin/manager/executor/PluginExecutor.java
  
  Index: PluginExecutor.java
  ===================================================================
  package org.apache.maven.plugin.manager.executor;
  
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  import org.apache.maven.plugin.PluginExecutionResponse;
  import org.apache.maven.plugin.PluginExecutionRequest;
  
  /**
   *
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
   *
   * @version $Id: PluginExecutor.java,v 1.1 2004/05/08 00:50:35 jvanzyl Exp $
   */
  public interface PluginExecutor
  {
      String ROLE = PluginExecutor.class.getName();
  
      void execute( PluginExecutionRequest request, PluginExecutionResponse response );
  }
  
  
  
  1.1                  
maven-components/maven-core/src/main/java/org/apache/maven/plugin/manager/executor/SetterPluginExecutor.java
  
  Index: SetterPluginExecutor.java
  ===================================================================
  package org.apache.maven.plugin.manager.executor;
  
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  import org.apache.maven.plugin.PluginExecutionRequest;
  import org.apache.maven.plugin.PluginExecutionResponse;
  import org.apache.maven.plugin.PluginConfigurationException;
  import org.apache.maven.plugin.PluginConfigurationException;
  
  import java.lang.reflect.InvocationTargetException;
  import java.lang.reflect.Method;
  import java.util.Iterator;
  import java.util.Map;
  
  /**
   *
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
   *
   * @version $Id: SetterPluginExecutor.java,v 1.1 2004/05/08 00:50:35 jvanzyl Exp $
   */
  public class SetterPluginExecutor
      implements PluginExecutor
  {
      public void execute( PluginExecutionRequest request, PluginExecutionResponse 
response )
      {
          Object plugin = request.getPlugin();
  
          if ( request.getParameters() != null )
          {
              try
              {
                  plugin = configure( plugin, request.getParameters() );
              }
              catch ( PluginConfigurationException e )
              {
                  response.setException( e );
  
                  return;
              }
          }
  
          Method m = null;
  
          try
          {
              m = plugin.getClass().getMethod( "execute", new Class[0] );
  
              m.invoke( plugin, new Object[0] );
          }
          catch ( NoSuchMethodException e )
          {
              response.setException( e );
          }
          catch ( InvocationTargetException e )
          {
              response.setException( e.getTargetException() );
          }
          catch ( Exception e )
          {
              response.setException( e );
          }
      }
  
      // ----------------------------------------------------------------------
      //
      // ----------------------------------------------------------------------
  
      public Object configure( Object plugin, Map parameters )
          throws PluginConfigurationException
      {
          Class pluginClass = plugin.getClass();
  
          for ( Iterator iterator = parameters.keySet().iterator(); 
iterator.hasNext(); )
          {
              String key = (String) iterator.next();
  
              Object value = parameters.get( key);
  
              String methodName = "set" + capitalise( key );
  
              try
              {
                  Method method = pluginClass.getMethod( methodName, new 
Class[]{value.getClass()} );
  
                  method.invoke( plugin, new Object[]{value} );
              }
              catch ( Exception e )
              {
                  throw new PluginConfigurationException(
                      "Error setting value with method " + methodName + " with " + 
value + ".", e );
              }
          }
  
          return plugin;
      }
  
      private String capitalise( String str )
      {
          return new StringBuffer( str.length() )
              .append( Character.toTitleCase( str.charAt( 0 ) ) )
              .append( str.substring( 1 ) )
              .toString();
      }
  }
  
  
  
  1.10      +7 -12     
maven-components/maven-core/src/main/resources/org/apache/maven/plexus.xml
  
  Index: plexus.xml
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-core/src/main/resources/org/apache/maven/plexus.xml,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- plexus.xml        16 Apr 2004 13:56:09 -0000      1.9
  +++ plexus.xml        8 May 2004 00:50:35 -0000       1.10
  @@ -29,27 +29,22 @@
       <component>
         <role>org.apache.maven.plugin.manager.PluginManager</role>
         <role-hint>plexus</role-hint>
  -      
<implementation>org.apache.maven.plugin.plexus.PlexusPluginManager</implementation>
  +      
<implementation>org.apache.maven.plugin.manager.PlexusPluginManager</implementation>
       </component>
       <component>
  -      <role>org.apache.maven.plugin.plexus.executor.PluginExecutor</role>
  +      <role>org.apache.maven.plugin.manager.executor.PluginExecutor</role>
         <role-hint>field</role-hint>
  -      
<implementation>org.apache.maven.plugin.plexus.executor.FieldPluginExecutor</implementation>
  +      
<implementation>org.apache.maven.plugin.manager.executor.FieldPluginExecutor</implementation>
       </component>
       <component>
  -      <role>org.apache.maven.plugin.plexus.executor.PluginExecutor</role>
  +      <role>org.apache.maven.plugin.manager.executor.PluginExecutor</role>
         <role-hint>setter</role-hint>
  -      
<implementation>org.apache.maven.plugin.plexus.executor.SetterPluginExecutor</implementation>
  +      
<implementation>org.apache.maven.plugin.manager.executor.SetterPluginExecutor</implementation>
       </component>
       <component>
  -      <role>org.apache.maven.plugin.plexus.executor.PluginExecutor</role>
  -      <role-hint>singleton</role-hint>
  -      
<implementation>org.apache.maven.plugin.plexus.executor.SingletonPluginExecutor</implementation>
  -    </component>
  -    <component>
  -      <role>org.apache.maven.plugin.plexus.executor.PluginExecutor</role>
  +      <role>org.apache.maven.plugin.manager.executor.PluginExecutor</role>
         <role-hint>integrated</role-hint>
  -      
<implementation>org.apache.maven.plugin.plexus.executor.IntegratedPluginExecutor</implementation>
  +      
<implementation>org.apache.maven.plugin.manager.executor.IntegratedPluginExecutor</implementation>
       </component>
     </components>
   </configuration>
  
  
  

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

Reply via email to