001 package org.apache.maven.script.beanshell;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import bsh.EvalError;
023 import bsh.Interpreter;
024 import org.apache.maven.plugin.AbstractMojo;
025 import org.apache.maven.plugin.Mojo;
026 import org.apache.maven.plugin.MojoExecutionException;
027 import org.apache.maven.plugin.MojoFailureException;
028 import org.codehaus.plexus.component.factory.bsh.BshComponent;
029
030 /**
031 * Mojo adapter for a Beanshell Mojo.
032 *
033 * @todo should log be passed in, or rely on getLog() ?
034 *
035 * @author <a href="mailto:brett@apache.org">Brett Porter</a>
036 * @version $Id: BeanshellMojoAdapter.java 640549 2008-03-24 20:05:11Z bentmann $
037 */
038 public class BeanshellMojoAdapter
039 extends AbstractMojo
040 implements BshComponent
041 {
042 private Mojo mojo;
043
044 private Interpreter interpreter;
045
046 public BeanshellMojoAdapter( Mojo mojo, Interpreter interpreter )
047 {
048 this.mojo = mojo;
049 this.interpreter = interpreter;
050 }
051
052 public void execute()
053 throws MojoExecutionException, MojoFailureException
054 {
055 try
056 {
057 interpreter.set( "logger", getLog() );
058
059 // TODO: set out, err to a print stream that will log at info, error respectively
060 }
061 catch ( EvalError evalError )
062 {
063 throw new MojoExecutionException( "Unable to establish mojo", evalError );
064 }
065
066 mojo.execute();
067 }
068
069 public Interpreter getInterpreter()
070 {
071 return interpreter;
072 }
073 }