[jira] Created: (CARGO-584) Discover implementations at runtime

View: New views
10 Messages — Rating Filter:   Alert me  

[jira] Created: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Discover implementations at runtime
-----------------------------------

                 Key: CARGO-584
                 URL: http://jira.codehaus.org/browse/CARGO-584
             Project: Cargo
          Issue Type: Improvement
          Components: Core
    Affects Versions: 0.9
            Reporter: Kohsuke Kawaguchi


As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.

But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.

In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.

I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



[jira] Commented: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/CARGO-584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=140998#action_140998 ]

Matt Wringe commented on CARGO-584:
-----------------------------------

cargo fully supports custom container implementations without having to make any changes to cargo itself, all you have to do is specify the implementation class to use:

{code:xml}
<plugin>
 <groupId>org.codehaus.cargo</groupId>
 <artifactId>cargo-maven2-plugin</artifactId>
 <configuration>
   <container>
     <containerId>foo</containerId>        
     <implementation>com.foo.Container</implementation>
     ...
    </container>
     <configuration>
       <implementation>com.foo.Configuration</implementation>
       ...
     </configuration>
     <deployer>
        <implementation>com.foo.Deployer</implementation>
         ...
     </deployer>
 </configuration>
</plugin>
{code}

Discussing the rest in emails.

> Discover implementations at runtime
> -----------------------------------
>
>                 Key: CARGO-584
>                 URL: http://jira.codehaus.org/browse/CARGO-584
>             Project: Cargo
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.9
>            Reporter: Kohsuke Kawaguchi
>
> As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.
> But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.
> In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.
> I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



[jira] Commented: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/CARGO-584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=141104#action_141104 ]

Kohsuke Kawaguchi commented on CARGO-584:
-----------------------------------------

This is an useful feature, but there are several issues with this.

First, this only works when you use cargo-maven2-plugin, but the maven plugin is just one of the offerings.

Second, it violates the DRY principle. When the user added additional container implementation through <dependency> in the plugin configuration, that should be a signal enough for Cargo. The users shouldn't be asked to put lengthy information like this.

The point of factory is so that users won't need to worry about the actual implementation class names. If they need to hard-code it, they must just as well call the {{new FooContainer()}} themselves.

> Discover implementations at runtime
> -----------------------------------
>
>                 Key: CARGO-584
>                 URL: http://jira.codehaus.org/browse/CARGO-584
>             Project: Cargo
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.9
>            Reporter: Kohsuke Kawaguchi
>
> As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.
> But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.
> In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.
> I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



[jira] Commented: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/CARGO-584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=141105#action_141105 ]

Matt Wringe commented on CARGO-584:
-----------------------------------

please discuss this on the mailing lists

> Discover implementations at runtime
> -----------------------------------
>
>                 Key: CARGO-584
>                 URL: http://jira.codehaus.org/browse/CARGO-584
>             Project: Cargo
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.9
>            Reporter: Kohsuke Kawaguchi
>
> As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.
> But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.
> In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.
> I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



[jira] Commented: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/CARGO-584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=141134#action_141134 ]

Kohsuke Kawaguchi commented on CARGO-584:
-----------------------------------------

Pointer to the discussion in the ML for others to follow: http://www.nabble.com/Implementation-pluggability-td18330148.html

> Discover implementations at runtime
> -----------------------------------
>
>                 Key: CARGO-584
>                 URL: http://jira.codehaus.org/browse/CARGO-584
>             Project: Cargo
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.9
>            Reporter: Kohsuke Kawaguchi
>
> As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.
> But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.
> In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.
> I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



[jira] Commented: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/CARGO-584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=141496#action_141496 ]

Vincent Massol commented on CARGO-584:
--------------------------------------

Definitely +1 from me for this as this is something I had wanted to do since the beginning but had always left for later.

> Discover implementations at runtime
> -----------------------------------
>
>                 Key: CARGO-584
>                 URL: http://jira.codehaus.org/browse/CARGO-584
>             Project: Cargo
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.9
>            Reporter: Kohsuke Kawaguchi
>
> As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.
> But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.
> In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.
> I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



[jira] Assigned: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


     [ http://jira.codehaus.org/browse/CARGO-584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kohsuke Kawaguchi reassigned CARGO-584:
---------------------------------------

    Assignee: Kohsuke Kawaguchi

> Discover implementations at runtime
> -----------------------------------
>
>                 Key: CARGO-584
>                 URL: http://jira.codehaus.org/browse/CARGO-584
>             Project: Cargo
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.9
>            Reporter: Kohsuke Kawaguchi
>            Assignee: Kohsuke Kawaguchi
>         Attachments: CARGO-584.diff
>
>
> As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.
> But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.
> In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.
> I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



[jira] Updated: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


     [ http://jira.codehaus.org/browse/CARGO-584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kohsuke Kawaguchi updated CARGO-584:
------------------------------------

    Attachment: CARGO-584.diff

Patch that shows the direction of changes.
Sanity checking before I proceed on doing the same for all the other factories.

> Discover implementations at runtime
> -----------------------------------
>
>                 Key: CARGO-584
>                 URL: http://jira.codehaus.org/browse/CARGO-584
>             Project: Cargo
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.9
>            Reporter: Kohsuke Kawaguchi
>            Assignee: Kohsuke Kawaguchi
>         Attachments: CARGO-584.diff
>
>
> As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.
> But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.
> In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.
> I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



[jira] Updated: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


     [ http://jira.codehaus.org/browse/CARGO-584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kohsuke Kawaguchi updated CARGO-584:
------------------------------------

    Attachment: CARGO-584.diff

Applied the same technique to all the factory types.

> Discover implementations at runtime
> -----------------------------------
>
>                 Key: CARGO-584
>                 URL: http://jira.codehaus.org/browse/CARGO-584
>             Project: Cargo
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.9
>            Reporter: Kohsuke Kawaguchi
>            Assignee: Kohsuke Kawaguchi
>         Attachments: CARGO-584.diff, CARGO-584.diff
>
>
> As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.
> But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.
> In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.
> I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



[jira] Closed: (CARGO-584) Discover implementations at runtime

by JIRA jira@codehaus.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


     [ http://jira.codehaus.org/browse/CARGO-584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kohsuke Kawaguchi closed CARGO-584.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: 1.0

Committed as rev.1681.

> Discover implementations at runtime
> -----------------------------------
>
>                 Key: CARGO-584
>                 URL: http://jira.codehaus.org/browse/CARGO-584
>             Project: Cargo
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.9
>            Reporter: Kohsuke Kawaguchi
>            Assignee: Kohsuke Kawaguchi
>             Fix For: 1.0
>
>         Attachments: CARGO-584.diff, CARGO-584.diff
>
>
> As it stands right now, Cargo DefaultXXXFactory only knows about implementations that are hard-coded in them. This makes it unnecessarily hard for people (like me) to develop container implementations. I can't provide the same level of usability to users unless I get into the core.
> But this needs not be the case. We should use the standard META-INF/services look up to discover implementations at runtime.
> In this way, there's an easier path for additional container implementations --- they can start on their own outside Cargo, be proven usable, and then gradually get into the Cargo project itself if that makes sense. If for whatever reasons it needs to stay outside the main Cargo project, that can work, too.
> I'm willing to provide a patch for this change if the developers are OK with the direction.

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email