Furthermore, let me add that I agree with Dan Kulp's assessment and
his reasons are not political.  They are technical.

On Mon, Dec 2, 2013 at 11:23 AM, James Carman
<ja...@carmanconsulting.com> wrote:
> Agreed. I'm also -1 on this commit.
>
> On Thu, Nov 28, 2013 at 8:32 AM, Daniel Kulp <dk...@apache.org> wrote:
>>
>> I’m -1 to this commit.   I don’t think we should be adding a bunch of 
>> targets for all the various container/platform integrations.   This starts 
>> going down the road of adding targets for karaf, glassfish, etc…  We should 
>> just provide standard packaging that the hawtio:run command or whatever 
>> would pick up.  (like tomcat:run, jetty:run, etc…)
>>
>> Dan
>>
>>
>> On Nov 28, 2013, at 7:46 AM, davscl...@apache.org wrote:
>>
>>> Updated Branches:
>>>  refs/heads/camel-2.12.x 628b34c0d -> ae5a770e0
>>>
>>>
>>> CAMEL-7023: Added hawtio goal to camel maven plugin.
>>>
>>> Conflicts:
>>>       parent/pom.xml
>>>
>>>
>>> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
>>> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ae5a770e
>>> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ae5a770e
>>> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ae5a770e
>>>
>>> Branch: refs/heads/camel-2.12.x
>>> Commit: ae5a770e01a1a2512412be97e62b18cb7578d640
>>> Parents: 628b34c
>>> Author: Claus Ibsen <davscl...@apache.org>
>>> Authored: Thu Nov 28 13:47:25 2013 +0100
>>> Committer: Claus Ibsen <davscl...@apache.org>
>>> Committed: Thu Nov 28 13:48:16 2013 +0100
>>>
>>> ----------------------------------------------------------------------
>>> parent/pom.xml                                  |  1 +
>>> tooling/maven/camel-maven-plugin/pom.xml        |  7 +++
>>> .../java/org/apache/camel/maven/HawtioMojo.java | 58 ++++++++++++++++++++
>>> .../java/org/apache/camel/maven/RunMojo.java    | 21 +++++--
>>> 4 files changed, 83 insertions(+), 4 deletions(-)
>>> ----------------------------------------------------------------------
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/camel/blob/ae5a770e/parent/pom.xml
>>> ----------------------------------------------------------------------
>>> diff --git a/parent/pom.xml b/parent/pom.xml
>>> index 95f2a9e..d3229bc 100644
>>> --- a/parent/pom.xml
>>> +++ b/parent/pom.xml
>>> @@ -173,6 +173,7 @@
>>>     <hawtbuf-version>1.9</hawtbuf-version>
>>>     <hawtdb-version>1.6</hawtdb-version>
>>>     <hawtdispatch-version>1.18</hawtdispatch-version>
>>> +    <hawtio-version>1.2.0</hawtio-version>
>>>     <hazelcast-version>2.6</hazelcast-version>
>>>     <hbase-version>0.94.10</hbase-version>
>>>     <hbase-bundle-version>0.94.6_1</hbase-bundle-version>
>>>
>>> http://git-wip-us.apache.org/repos/asf/camel/blob/ae5a770e/tooling/maven/camel-maven-plugin/pom.xml
>>> ----------------------------------------------------------------------
>>> diff --git a/tooling/maven/camel-maven-plugin/pom.xml 
>>> b/tooling/maven/camel-maven-plugin/pom.xml
>>> index 160b8ab..940ab77 100644
>>> --- a/tooling/maven/camel-maven-plugin/pom.xml
>>> +++ b/tooling/maven/camel-maven-plugin/pom.xml
>>> @@ -53,6 +53,13 @@
>>>       <artifactId>camel-cdi</artifactId>
>>>     </dependency>
>>>
>>> +    <!--for the hawtio goal -->
>>> +    <dependency>
>>> +      <groupId>io.hawt</groupId>
>>> +      <artifactId>hawtio-app</artifactId>
>>> +      <version>${hawtio-version}</version>
>>> +    </dependency>
>>> +
>>>     <dependency>
>>>       <groupId>org.codehaus.mojo</groupId>
>>>       <artifactId>exec-maven-plugin</artifactId>
>>>
>>> http://git-wip-us.apache.org/repos/asf/camel/blob/ae5a770e/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/HawtioMojo.java
>>> ----------------------------------------------------------------------
>>> diff --git 
>>> a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/HawtioMojo.java
>>>  
>>> b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/HawtioMojo.java
>>> new file mode 100644
>>> index 0000000..1c8f697
>>> --- /dev/null
>>> +++ 
>>> b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/HawtioMojo.java
>>> @@ -0,0 +1,58 @@
>>> +/**
>>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>>> + * contributor license agreements.  See the NOTICE file distributed with
>>> + * this work for additional information regarding copyright ownership.
>>> + * The ASF licenses this file to You 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.
>>> + */
>>> +package org.apache.camel.maven;
>>> +
>>> +import java.lang.reflect.Method;
>>> +
>>> +/**
>>> + * Runs a CamelContext using any Spring or Blueprint XML configuration 
>>> files found in
>>> + * <code>META-INF/spring/*.xml</code>, and 
>>> <code>OSGI-INF/blueprint/*.xml</code>,
>>> + * and <code>camel-*.xml</code> and starting up the context together with
>>> + * <a href="http://hawt.io/";>hawtio</a> as web console.
>>> + *
>>> + * @goal hawtio
>>> + * @requiresDependencyResolution compile+runtime
>>> + * @execute phase="test-compile"
>>> + */
>>> +public class HawtioMojo extends RunMojo {
>>> +
>>> +    /**
>>> +     * The port number to use for the hawtio web console.
>>> +     *
>>> +     * @parameter property="camel.port"
>>> +     *            default-value="8080"
>>> +     */
>>> +    private int port = 8080;
>>> +
>>> +    public HawtioMojo() {
>>> +        extendedPluginDependencyArtifactId = "hawtio-app";
>>> +    }
>>> +
>>> +    @Override
>>> +    void beforeBootstrapCamel() throws Exception {
>>> +        getLog().info("Starting hawtio ...");
>>> +        Method hawtioMain = 
>>> Thread.currentThread().getContextClassLoader().loadClass("io.hawt.app.App")
>>> +                .getMethod("main", new Class[] {String[].class});
>>> +        if (!hawtioMain.isAccessible()) {
>>> +            getLog().debug("Setting accessibility to true in order to 
>>> invoke main().");
>>> +            hawtioMain.setAccessible(true);
>>> +        }
>>> +        String[] args = new String[]{"--port", "" + port, "--join", 
>>> "false"};
>>> +        hawtioMain.invoke(hawtioMain, new Object[]{args});
>>> +    }
>>> +
>>> +}
>>>
>>> http://git-wip-us.apache.org/repos/asf/camel/blob/ae5a770e/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
>>> ----------------------------------------------------------------------
>>> diff --git 
>>> a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
>>>  
>>> b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
>>> index 6f3921d..510333b6 100644
>>> --- 
>>> a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
>>> +++ 
>>> b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
>>> @@ -369,6 +369,7 @@ public class RunMojo extends AbstractExecMojo {
>>>     private Properties originalSystemProperties;
>>>
>>>     private String extraPluginDependencyArtifactId;
>>> +    protected String extendedPluginDependencyArtifactId;
>>>
>>>     /**
>>>      * Execute goal.
>>> @@ -455,7 +456,7 @@ public class RunMojo extends AbstractExecMojo {
>>>             getLog().info("Using org.apache.camel.spring.Main to initiate a 
>>> CamelContext");
>>>             mainClass = "org.apache.camel.spring.Main";
>>>         }
>>> -
>>> +
>>>         arguments = new String[args.size()];
>>>         args.toArray(arguments);
>>>
>>> @@ -474,9 +475,12 @@ public class RunMojo extends AbstractExecMojo {
>>>         }
>>>
>>>         IsolatedThreadGroup threadGroup = new IsolatedThreadGroup(mainClass 
>>> /* name */);
>>> -        Thread bootstrapThread = new Thread(threadGroup, new Runnable() {
>>> +        final Thread bootstrapThread = new Thread(threadGroup, new 
>>> Runnable() {
>>>             public void run() {
>>>                 try {
>>> +                    beforeBootstrapCamel();
>>> +
>>> +                    getLog().info("Starting Camel ...");
>>>                     Method main = 
>>> Thread.currentThread().getContextClassLoader().loadClass(mainClass)
>>>                         .getMethod("main", new Class[] {String[].class});
>>>                     if (!main.isAccessible()) {
>>> @@ -494,6 +498,7 @@ public class RunMojo extends AbstractExecMojo {
>>>                 }
>>>             }
>>>         }, mainClass + ".main()");
>>> +
>>>         bootstrapThread.setContextClassLoader(getClassLoader());
>>>         setSystemProperties();
>>>
>>> @@ -532,6 +537,13 @@ public class RunMojo extends AbstractExecMojo {
>>>         registerSourceRoots();
>>>     }
>>>
>>> +    /**
>>> +     * Allows plugin extensions to do custom logic before bootstrapping 
>>> Camel.
>>> +     */
>>> +    void beforeBootstrapCamel() throws Exception {
>>> +        // noop
>>> +    }
>>> +
>>>     class IsolatedThreadGroup extends ThreadGroup {
>>>         Throwable uncaughtException; // synchronize access to this
>>>
>>> @@ -743,7 +755,7 @@ public class RunMojo extends AbstractExecMojo {
>>>      * @throws MojoExecutionException
>>>      */
>>>     private void addExtraPluginDependenciesToClasspath(Set<URL> path) 
>>> throws MojoExecutionException {
>>> -        if (extraPluginDependencyArtifactId == null) {
>>> +        if (extraPluginDependencyArtifactId == null && 
>>> extendedPluginDependencyArtifactId == null) {
>>>             return;
>>>         }
>>>
>>> @@ -751,7 +763,8 @@ public class RunMojo extends AbstractExecMojo {
>>>             Set<Artifact> artifacts = new 
>>> HashSet<Artifact>(this.pluginDependencies);
>>>             for (Artifact artifact : artifacts) {
>>>                 // must
>>> -                if 
>>> (artifact.getArtifactId().equals(extraPluginDependencyArtifactId)) {
>>> +                if 
>>> (artifact.getArtifactId().equals(extraPluginDependencyArtifactId)
>>> +                        || 
>>> artifact.getArtifactId().equals(extendedPluginDependencyArtifactId)) {
>>>                     getLog().debug("Adding extra plugin dependency 
>>> artifact: " + artifact.getArtifactId()
>>>                             + " to classpath");
>>>                     path.add(artifact.getFile().toURI().toURL());
>>>
>>
>> --
>> Daniel Kulp
>> dk...@apache.org - http://dankulp.com/blog
>> Talend Community Coder - http://coders.talend.com
>>

Reply via email to