[proxy] vs proxytoys

classic Classic list List threaded Threaded
26 messages Options
12
Reply | Threaded
Open this post in threaded view
|

[proxy] vs proxytoys

Jörg Schaible
Hi James,

can you tell me, what you are missing with proxytoys? You announced to have
a closer look , but did not write anything further.

- J?rg


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [proxy] vs proxytoys

Joerg Hohwiller
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

J?rg Schaible wrote:
> Hi James,
Hi there,
>
> can you tell me, what you are missing with proxytoys? You announced to have
> a closer look , but did not write anything further.
It seems to be true that proxytoys and "commons-proxy" are quite similar
animals. The API seems to differ slightly (esp. according to the
Invoker/MethodIntercepter)

http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyFactory.java

http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/ProxyFactory.html

The important things are:
"commons-proxy" works on a javassist implementation and has interesting
goodies for various provider stategies:
http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/

proxytoys has interesting goodies called "toys" (btw: why do you call
the methods "object" there?):
http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/toys/

Maybe it would be possible to bring both together, but it may start and
fall by the political classpath thingy. I personally would always trust
a classpath "org.apache.commons.proxy" more thant "com.*" (even
thoughtworks produced a lot of great stuff such as XStream).
On the other hand proxytoys might already be in use so changing the
classpath might not be an option.
However this one is not up to me.

Anyways if this issue is through and commons-proxy is still there,
I could offer help in mavenizing the project (both maven 1 and 2 if you
like) so you'd have some benefits in maintaining the according site, etc.
>
> - J?rg
>
J?rg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDC4U9mPuec2Dcv/8RAotaAJ41P9bstfE98HT7QQ4pEjOla+agAgCePHUa
3Q3HvkGB2oGzRLKMmAKBN8E=
=M6/o
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

James Carman
That's one thing that I could definitely use help with ("mavenization").
I'm not at all familiar with what it takes to get a project set up with
Gump, Maven, and all the other stuff.

-----Original Message-----
From: Joerg Hohwiller [mailto:[hidden email]]
Sent: Tuesday, August 23, 2005 4:21 PM
To: Jakarta Commons Developers List
Subject: Re: [proxy] vs proxytoys

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jörg Schaible wrote:
> Hi James,
Hi there,
>
> can you tell me, what you are missing with proxytoys? You announced to
have
> a closer look , but did not write anything further.
It seems to be true that proxytoys and "commons-proxy" are quite similar
animals. The API seems to differ slightly (esp. according to the
Invoker/MethodIntercepter)

http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java
/org/apache/commons/proxy/ProxyFactory.java

http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/ProxyFactory.ht
ml

The important things are:
"commons-proxy" works on a javassist implementation and has interesting
goodies for various provider stategies:
http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java
/org/apache/commons/proxy/provider/

proxytoys has interesting goodies called "toys" (btw: why do you call
the methods "object" there?):
http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/toys/

Maybe it would be possible to bring both together, but it may start and
fall by the political classpath thingy. I personally would always trust
a classpath "org.apache.commons.proxy" more thant "com.*" (even
thoughtworks produced a lot of great stuff such as XStream).
On the other hand proxytoys might already be in use so changing the
classpath might not be an option.
However this one is not up to me.

Anyways if this issue is through and commons-proxy is still there,
I could offer help in mavenizing the project (both maven 1 and 2 if you
like) so you'd have some benefits in maintaining the according site, etc.
>
> - Jörg
>
Jörg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDC4U9mPuec2Dcv/8RAotaAJ41P9bstfE98HT7QQ4pEjOla+agAgCePHUa
3Q3HvkGB2oGzRLKMmAKBN8E=
=M6/o
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

James Carman
In reply to this post by Joerg Hohwiller
I didn't understand what you meant by your question:

why do you call the methods "object" there?

What methods are you talking about?  Do you mean the getObject() method on
the ObjectProvider interface.  Well, I thought about that.  A provider isn't
a factory, because it doesn't necessarily create the object it's providing,
so I didn't name the method createObject().  I guess I could have called it
provideObject(), but I chose getObject() instead.  It could easily be
changed if anyone has any really strong feelings about it.

-----Original Message-----
From: Joerg Hohwiller [mailto:[hidden email]]
Sent: Tuesday, August 23, 2005 4:21 PM
To: Jakarta Commons Developers List
Subject: Re: [proxy] vs proxytoys

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jörg Schaible wrote:
> Hi James,
Hi there,
>
> can you tell me, what you are missing with proxytoys? You announced to
have
> a closer look , but did not write anything further.
It seems to be true that proxytoys and "commons-proxy" are quite similar
animals. The API seems to differ slightly (esp. according to the
Invoker/MethodIntercepter)

http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java
/org/apache/commons/proxy/ProxyFactory.java

http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/ProxyFactory.ht
ml

The important things are:
"commons-proxy" works on a javassist implementation and has interesting
goodies for various provider stategies:
http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java
/org/apache/commons/proxy/provider/

proxytoys has interesting goodies called "toys" (btw: why do you call
the methods "object" there?):
http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/toys/

Maybe it would be possible to bring both together, but it may start and
fall by the political classpath thingy. I personally would always trust
a classpath "org.apache.commons.proxy" more thant "com.*" (even
thoughtworks produced a lot of great stuff such as XStream).
On the other hand proxytoys might already be in use so changing the
classpath might not be an option.
However this one is not up to me.

Anyways if this issue is through and commons-proxy is still there,
I could offer help in mavenizing the project (both maven 1 and 2 if you
like) so you'd have some benefits in maintaining the according site, etc.
>
> - Jörg
>
Jörg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDC4U9mPuec2Dcv/8RAotaAJ41P9bstfE98HT7QQ4pEjOla+agAgCePHUa
3Q3HvkGB2oGzRLKMmAKBN8E=
=M6/o
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [proxy] vs proxytoys

Joerg Hohwiller
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi James,

James Carman wrote:

> I didn't understand what you meant by your question:
>
> why do you call the methods "object" there?
>
> What methods are you talking about?  Do you mean the getObject() method on
> the ObjectProvider interface.  Well, I thought about that.  A provider isn't
> a factory, because it doesn't necessarily create the object it's providing,
> so I didn't name the method createObject().  I guess I could have called it
> provideObject(), but I chose getObject() instead.  It could easily be
> changed if anyone has any really strong feelings about it.
This one was more targeted at J?rg Schaible, who seems to be commiter on
the proxytoys project. For instance look at this to catch up what I meant:

http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/toys/multicast/Multicasting.html

Regards
  J?rg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDC43kmPuec2Dcv/8RAhiQAJoCkhxTAOmc8+JzgAh4kGhHr1oBxQCfbhD1
lfqAU9pt8WqV5MN5QoMHciU=
=cUK/
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [proxy] vs proxytoys

Jörg Schaible
In reply to this post by Joerg Hohwiller
Joerg Hohwiller wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> J?rg Schaible wrote:
>> Hi James,
> Hi there,
>>
>> can you tell me, what you are missing with proxytoys? You announced to
>> have a closer look , but did not write anything further.
> It seems to be true that proxytoys and "commons-proxy" are quite similar
> animals. The API seems to differ slightly (esp. according to the
> Invoker/MethodIntercepter)
>
>
http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyFactory.java
>
>
http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/ProxyFactory.html
>
> The important things are:
> "commons-proxy" works on a javassist implementation

Nobody provided a ProxyFactory impl based on JavaAssist for ProxyToys yet :)

> and has interesting
> goodies for various provider stategies:
>
http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/
>
> proxytoys has interesting goodies called "toys"

Decoration is the toy for interceptors, but they don't follow AOP Alliance
(at least yet). Personally I have no experiance with AOP though.

> (btw: why do you call the methods "object" there?):

Can't say, I did not invent this ... so it's historical :)

> http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/toys/
>
> Maybe it would be possible to bring both together, but it may start and
> fall by the political classpath thingy. I personally would always trust
> a classpath "org.apache.commons.proxy" more thant "com.*" (even
> thoughtworks produced a lot of great stuff such as XStream).

This is not my decision, but I might address this.

> On the other hand proxytoys might already be in use so changing the
> classpath might not be an option.

but it's not 1.0 yet :)

> However this one is not up to me.

.. and not only to me, I am also not a ThoughtWorker.

- J?rg



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

James Carman
To be quite honest, nobody has fully provided the JavassistProxyFactory
implementation to commons-proxy yet, either. :-)  I started on it but
couldn't get the intercepted proxies working.  

One key difference, it seems, between proxytoys and commons-proxy is that
commons-proxy somewhat assumes that there will be a "target" object (some
actual object that implements the core functionality) to the invocation.
ProxyToys doesn't seem to make that assumption (correct me if I'm wrong).
One problem that I see with ProxyToys is in the implementation of the
DelegatingInvoker and SimpleInvoker (what I would have to use if I did have
a target object) class.  No matter what ProxyFactory you're using,
DelegatingInvoker and SimpleInvoker ultimately use JDK reflection to invoke
the method on the delegate/target.  Commons-proxy doesn't do that.
Commons-proxy doesn't do that.  ProxyToys, ultimately, should be much
slower, which is illustrated by the following code:

public class CompareToProxyToys
{
    private static final int N = 100000000;

    public static void main( String[] args )
    {
        final EchoImpl impl = new EchoImpl();
        final Echo proxyToys = ( Echo )new
com.thoughtworks.proxy.factory.CglibProxyFactory().createProxy( new Class[]
{ Echo.class }, new SimpleInvoker( impl ) );
        final Echo commonsProxy = ( Echo )new
CglibProxyFactory().createProxy( new ConstantProvider<Echo>( impl ),
Echo.class );
        System.out.println( MessageFormat.format( "Average duration of
ProxyToys is approximately {0,number,0.00#} times slower than
commons-proxy.", new Double( averageDuration( proxyToys ) /
averageDuration(commonsProxy ) ) ) );
    }

    private static double averageDuration( Echo echo )
    {
        final long before = System.nanoTime();
        for( int i= 0; i < N; ++i )
        {
            echo.echoBack( "Hello, World!" );
        }
        final long after = System.nanoTime();
        return ( ( after - before ) * 1.0 / N );
    }
}

ProxyToys' average duration was approximately 7x slower than commons-proxy
using this crude test (I'm not saying these are the best metrics in the
world).  Again, I allowed both implementations to use a CGLIB-based proxy.
 
-----Original Message-----
From: news [mailto:[hidden email]] On Behalf Of Jörg Schaible
Sent: Wednesday, August 24, 2005 1:29 PM
To: [hidden email]
Subject: Re: [proxy] vs proxytoys

Joerg Hohwiller wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Jörg Schaible wrote:
>> Hi James,
> Hi there,
>>
>> can you tell me, what you are missing with proxytoys? You announced to
>> have a closer look , but did not write anything further.
> It seems to be true that proxytoys and "commons-proxy" are quite similar
> animals. The API seems to differ slightly (esp. according to the
> Invoker/MethodIntercepter)
>
>
http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java
/org/apache/commons/proxy/ProxyFactory.java
>
>
http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/ProxyFactory.ht
ml
>
> The important things are:
> "commons-proxy" works on a javassist implementation

Nobody provided a ProxyFactory impl based on JavaAssist for ProxyToys yet :)

> and has interesting
> goodies for various provider stategies:
>
http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java
/org/apache/commons/proxy/provider/
>
> proxytoys has interesting goodies called "toys"

Decoration is the toy for interceptors, but they don't follow AOP Alliance
(at least yet). Personally I have no experiance with AOP though.

> (btw: why do you call the methods "object" there?):

Can't say, I did not invent this ... so it's historical :)

> http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/toys/
>
> Maybe it would be possible to bring both together, but it may start and
> fall by the political classpath thingy. I personally would always trust
> a classpath "org.apache.commons.proxy" more thant "com.*" (even
> thoughtworks produced a lot of great stuff such as XStream).

This is not my decision, but I might address this.

> On the other hand proxytoys might already be in use so changing the
> classpath might not be an option.

but it's not 1.0 yet :)

> However this one is not up to me.

.. and not only to me, I am also not a ThoughtWorker.

- Jörg



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [proxy] vs proxytoys

Jörg Schaible
On Wednesday 24 August 2005 23:32, James Carman wrote:
JC> To be quite honest, nobody has fully provided the JavassistProxyFactory
JC> implementation to commons-proxy yet, either. :-)  I started on it but
JC> couldn't get the intercepted proxies working.  

:))

JC> One key difference, it seems, between proxytoys and commons-proxy is that
JC> commons-proxy somewhat assumes that there will be a "target" object (some
JC> actual object that implements the core functionality) to the invocation.
JC> ProxyToys doesn't seem to make that assumption (correct me if I'm wrong).

Right. Some view toy proxies can act without a target.

JC> One problem that I see with ProxyToys is in the implementation of the
JC> DelegatingInvoker and SimpleInvoker (what I would have to use if I did
have
JC> a target object) class.  No matter what ProxyFactory you're using,
JC> DelegatingInvoker and SimpleInvoker ultimately use JDK reflection to
invoke
JC> the method on the delegate/target.

Yes. In the end it the proxy uses always InvocationHandler.invoke() as
callback.

JC> Commons-proxy doesn't do that.  

Must have a look at the code :)

JC> ProxyToys, ultimately, should be much
JC> slower, which is illustrated by the following code:
JC>
JC> public class CompareToProxyToys
JC> {
JC>     private static final int N = 100000000;
JC>
JC>     public static void main( String[] args )
JC>     {
JC>         final EchoImpl impl = new EchoImpl();
JC>         final Echo proxyToys = ( Echo )new
JC> com.thoughtworks.proxy.factory.CglibProxyFactory().createProxy( new
Class[]
JC> { Echo.class }, new SimpleInvoker( impl ) );
JC>         final Echo commonsProxy = ( Echo )new
JC> CglibProxyFactory().createProxy( new ConstantProvider<Echo>( impl ),
JC> Echo.class );
JC>         System.out.println( MessageFormat.format( "Average duration of
JC> ProxyToys is approximately {0,number,0.00#} times slower than
JC> commons-proxy.", new Double( averageDuration( proxyToys ) /
JC> averageDuration(commonsProxy ) ) ) );
JC>     }
JC>
JC>     private static double averageDuration( Echo echo )
JC>     {
JC>         final long before = System.nanoTime();
JC>         for( int i= 0; i < N; ++i )
JC>         {
JC>             echo.echoBack( "Hello, World!" );
JC>         }
JC>         final long after = System.nanoTime();
JC>         return ( ( after - before ) * 1.0 / N );
JC>     }
JC> }
JC>
JC> ProxyToys' average duration was approximately 7x slower than commons-proxy
JC> using this crude test (I'm not saying these are the best metrics in the
JC> world).

I'll investigate.

JC> Again, I allowed both implementations to use a CGLIB-based proxy.

Well, no <g>

The CglibProxyFactory of ProxyToys will use internally a JDK proxy if the
proxy implements exactly one interface. Don't ask me why, that is not my
code. But I'll try this without that "optimization".

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

James Carman
Jörg,

Out of curiosity, what is the (real-life) use case where you would actually
have a proxy object which doesn't delegate to some implementation?  I'm not
saying there isn't one.  I may very well be just too ignorant to come up
with one on my own. :-)  I can be quite narrow-minded at times.

However, we could support a similar concept in commons-proxy by just using a
MethodInterceptor and not actually calling MethodInvocation.proceed().  That
way, it would never really get to the target object.  We could create a
NullProvider (actually I just did it) which always returns null (extended
ConstantProvider) and could be the target for that type of proxy.  

James

-----Original Message-----
From: Jörg Schaible [mailto:[hidden email]]
Sent: Wednesday, August 24, 2005 6:49 PM
To: James Carman
Cc: 'Jakarta Commons Developers List'
Subject: Re: [proxy] vs proxytoys

On Wednesday 24 August 2005 23:32, James Carman wrote:
JC> To be quite honest, nobody has fully provided the JavassistProxyFactory
JC> implementation to commons-proxy yet, either. :-)  I started on it but
JC> couldn't get the intercepted proxies working.  

:))

JC> One key difference, it seems, between proxytoys and commons-proxy is
that
JC> commons-proxy somewhat assumes that there will be a "target" object
(some
JC> actual object that implements the core functionality) to the invocation.
JC> ProxyToys doesn't seem to make that assumption (correct me if I'm
wrong).

Right. Some view toy proxies can act without a target.

JC> One problem that I see with ProxyToys is in the implementation of the
JC> DelegatingInvoker and SimpleInvoker (what I would have to use if I did
have
JC> a target object) class.  No matter what ProxyFactory you're using,
JC> DelegatingInvoker and SimpleInvoker ultimately use JDK reflection to
invoke
JC> the method on the delegate/target.

Yes. In the end it the proxy uses always InvocationHandler.invoke() as
callback.

JC> Commons-proxy doesn't do that.  

Must have a look at the code :)

JC> ProxyToys, ultimately, should be much
JC> slower, which is illustrated by the following code:
JC>
JC> public class CompareToProxyToys
JC> {
JC>     private static final int N = 100000000;
JC>
JC>     public static void main( String[] args )
JC>     {
JC>         final EchoImpl impl = new EchoImpl();
JC>         final Echo proxyToys = ( Echo )new
JC> com.thoughtworks.proxy.factory.CglibProxyFactory().createProxy( new
Class[]
JC> { Echo.class }, new SimpleInvoker( impl ) );
JC>         final Echo commonsProxy = ( Echo )new
JC> CglibProxyFactory().createProxy( new ConstantProvider<Echo>( impl ),
JC> Echo.class );
JC>         System.out.println( MessageFormat.format( "Average duration of
JC> ProxyToys is approximately {0,number,0.00#} times slower than
JC> commons-proxy.", new Double( averageDuration( proxyToys ) /
JC> averageDuration(commonsProxy ) ) ) );
JC>     }
JC>
JC>     private static double averageDuration( Echo echo )
JC>     {
JC>         final long before = System.nanoTime();
JC>         for( int i= 0; i < N; ++i )
JC>         {
JC>             echo.echoBack( "Hello, World!" );
JC>         }
JC>         final long after = System.nanoTime();
JC>         return ( ( after - before ) * 1.0 / N );
JC>     }
JC> }
JC>
JC> ProxyToys' average duration was approximately 7x slower than
commons-proxy
JC> using this crude test (I'm not saying these are the best metrics in the
JC> world).

I'll investigate.

JC> Again, I allowed both implementations to use a CGLIB-based proxy.

Well, no <g>

The CglibProxyFactory of ProxyToys will use internally a JDK proxy if the
proxy implements exactly one interface. Don't ask me why, that is not my
code. But I'll try this without that "optimization".

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]




---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

Jörg Schaible-2
In reply to this post by Jörg Schaible
James Carman wrote on Thursday, August 25, 2005 1:09 AM:

> Jörg,
>
> Out of curiosity, what is the (real-life) use case where you
> would actually have a proxy object which doesn't delegate to
> some implementation?  I'm not saying there isn't one.  I may
> very well be just too ignorant to come up with one on my own.
> :-)  I can be quite narrow-minded at times.

The NullObject does not have a target and interestingly the Echoing toy (and therefore the decorator as poor man's AOP can do without), but don't ask me why, there are at least unit tests that ensure this ;-)
Another one is the multicaster that can have a lot or none targets.

> However, we could support a similar concept in commons-proxy
> by just using a MethodInterceptor and not actually calling
> MethodInvocation.proceed().  That way, it would never really
> get to the target object.  We could create a NullProvider
> (actually I just did it) which always returns null (extended
> ConstantProvider) and could be the target for that type of proxy.

Such a proxy seems quite natural <g>

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

James Carman
In reply to this post by James Carman
Actually, I just checked in the completed JavassistProxyFactory class.  It
works for my simple test cases that I have, but I'm sure it'll mess
something up when I get into duplicate methods in interfaces and stuff.
I'll beef up the test cases soon and fix the logic.

-----Original Message-----
From: James Carman [mailto:[hidden email]]
Sent: Wednesday, August 24, 2005 5:32 PM
To: 'Jakarta Commons Developers List'; [hidden email]
Subject: RE: [proxy] vs proxytoys

To be quite honest, nobody has fully provided the JavassistProxyFactory
implementation to commons-proxy yet, either. :-)  I started on it but
couldn't get the intercepted proxies working.  

One key difference, it seems, between proxytoys and commons-proxy is that
commons-proxy somewhat assumes that there will be a "target" object (some
actual object that implements the core functionality) to the invocation.
ProxyToys doesn't seem to make that assumption (correct me if I'm wrong).
One problem that I see with ProxyToys is in the implementation of the
DelegatingInvoker and SimpleInvoker (what I would have to use if I did have
a target object) class.  No matter what ProxyFactory you're using,
DelegatingInvoker and SimpleInvoker ultimately use JDK reflection to invoke
the method on the delegate/target.  Commons-proxy doesn't do that.
Commons-proxy doesn't do that.  ProxyToys, ultimately, should be much
slower, which is illustrated by the following code:

public class CompareToProxyToys
{
    private static final int N = 100000000;

    public static void main( String[] args )
    {
        final EchoImpl impl = new EchoImpl();
        final Echo proxyToys = ( Echo )new
com.thoughtworks.proxy.factory.CglibProxyFactory().createProxy( new Class[]
{ Echo.class }, new SimpleInvoker( impl ) );
        final Echo commonsProxy = ( Echo )new
CglibProxyFactory().createProxy( new ConstantProvider<Echo>( impl ),
Echo.class );
        System.out.println( MessageFormat.format( "Average duration of
ProxyToys is approximately {0,number,0.00#} times slower than
commons-proxy.", new Double( averageDuration( proxyToys ) /
averageDuration(commonsProxy ) ) ) );
    }

    private static double averageDuration( Echo echo )
    {
        final long before = System.nanoTime();
        for( int i= 0; i < N; ++i )
        {
            echo.echoBack( "Hello, World!" );
        }
        final long after = System.nanoTime();
        return ( ( after - before ) * 1.0 / N );
    }
}

ProxyToys' average duration was approximately 7x slower than commons-proxy
using this crude test (I'm not saying these are the best metrics in the
world).  Again, I allowed both implementations to use a CGLIB-based proxy.
 
-----Original Message-----
From: news [mailto:[hidden email]] On Behalf Of Jörg Schaible
Sent: Wednesday, August 24, 2005 1:29 PM
To: [hidden email]
Subject: Re: [proxy] vs proxytoys

Joerg Hohwiller wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Jörg Schaible wrote:
>> Hi James,
> Hi there,
>>
>> can you tell me, what you are missing with proxytoys? You announced to
>> have a closer look , but did not write anything further.
> It seems to be true that proxytoys and "commons-proxy" are quite similar
> animals. The API seems to differ slightly (esp. according to the
> Invoker/MethodIntercepter)
>
>
http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java
/org/apache/commons/proxy/ProxyFactory.java
>
>
http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/ProxyFactory.ht
ml
>
> The important things are:
> "commons-proxy" works on a javassist implementation

Nobody provided a ProxyFactory impl based on JavaAssist for ProxyToys yet :)

> and has interesting
> goodies for various provider stategies:
>
http://svn.apache.org/repos/asf/jakarta/commons/sandbox/proxy/trunk/src/java
/org/apache/commons/proxy/provider/
>
> proxytoys has interesting goodies called "toys"

Decoration is the toy for interceptors, but they don't follow AOP Alliance
(at least yet). Personally I have no experiance with AOP though.

> (btw: why do you call the methods "object" there?):

Can't say, I did not invent this ... so it's historical :)

> http://proxytoys.codehaus.org/javadoc/com/thoughtworks/proxy/toys/
>
> Maybe it would be possible to bring both together, but it may start and
> fall by the political classpath thingy. I personally would always trust
> a classpath "org.apache.commons.proxy" more thant "com.*" (even
> thoughtworks produced a lot of great stuff such as XStream).

This is not my decision, but I might address this.

> On the other hand proxytoys might already be in use so changing the
> classpath might not be an option.

but it's not 1.0 yet :)

> However this one is not up to me.

.. and not only to me, I am also not a ThoughtWorker.

- Jörg



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]




---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [proxy] vs proxytoys

Joerg Hohwiller
In reply to this post by James Carman
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi James,

James Carman wrote:
> That's one thing that I could definitely use help with ("mavenization").
> I'm not at all familiar with what it takes to get a project set up with
> Gump, Maven, and all the other stuff.
Promise is promise:
I made it and it works quite well. You only have to get the jaxrpc.jar
yourself and put it into ~/.maven/repository/jaxrpc/jars/jaxrpc-1.1.jar
I used maven 1.0.2 and a simple
"maven jar" builds the project and "maven site" builds the website
that will occur under target/docs/index.html and is quite nice for 1
hour work :)

I could not check in the maven config to the subversion so I will post
it here. Befor you call "svn add", do not forget to add the following
lines to "~/.subversion/config" in the "[auto-props]" section at the end
 of the file:
*.java = svn:keywords=Id;svn:eol-style=native
*.properties = svn:keywords=Id;svn:eol-style=native
*.xml = svn:keywords=Id;svn:eol-style=native

Put the files on toplevel (in the trunk folder):

project.xml
- -----------
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- $Id: project.xml$ -->
<project>
  <pomVersion>3</pomVersion>
  <id>commons-proxy</id>
  <name>Commons Proxy</name>
  <groupId>commons-proxy</groupId>
  <currentVersion>0.1</currentVersion>
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://apache.org</url>
    <logo>http://apache.org/images/asf_logo_wide.png</logo>
  </organization>
  <inceptionYear>2005</inceptionYear>
  <package>org.apache.commons.proxy</package>
  <logo>/images/logo.png</logo>
  <shortDescription>Java library for dynamic proxying</shortDescription>
  <url>http://jakarta.apache.org/commons/sandbox/proxy</url>
  <issueTrackingUrl>http://issues.apache.org/bugzilla</issueTrackingUrl>
  <siteAddress>jakarta.apache.org</siteAddress>
  <siteDirectory>/somewhere/commons/sandbox/proxy/</siteDirectory>
  <description><![CDATA[
    <p>
    Commons proxy is a java library for creating dynamic proxys.
    </p>
    <section name="Features">
      <p>
        Commons-proxy comes with the follwing features
        <ul>
          <li>simple and easy to use API</li>
          <li>based on AOP Alliance</li>
          <li>implementations using java.reflect.Proxy,cglib and
javassist</li>
          <li>really fast</li>
        </ul>
      </p>
    </section>
  ]]></description>

  <repository>

<connection>scm:svn:http:svn.apache.org:repos/asf/jakarta/commons/sandbox/proxy:trunk</connection>

<developerConnection>scm:svn:https:svn.apache.org:repos/asf/jakarta/commons/sandbox/proxy:trunk</developerConnection>

<url>http://svn.apache.org/viewcvs.cgi/jakarta/commons/sandbox/proxy/trunk/</url>
  </repository>

  <versions>
    <version>
      <id>0.1</id>
      <name>0.1</name>
      <tag>Version_0_1</tag>
    </version>
  </versions>

  <branches>
  </branches>

  <mailingLists>
    <mailingList>[hidden email]</mailingList>
  </mailingLists>

  <developers>
    <developer>
      <name>James Carman</name>
      <id>carman</id>
      <email>[hidden email]</email>
      <organization>carmanconsulting.com</organization>
      <roles>
        <role>admin</role>
        <role>designer</role>
        <role>developer</role>
      </roles>
      <url>http://www.carmanconsulting.com/</url>
      <timezone>+1</timezone>
    </developer>

  </developers>

  <contributors>
    <contributor>
      <name>J#246;rg Hohwiller</name>
      <email>[hidden email]</email>
      <organization/>
      <roles>
        <role>mavenizer</role>
      </roles>
      <url></url>
    </contributor>
    <contributor>
      <name>J#246;rg Schaible</name>
      <email>[hidden email]</email>
      <organization/>
      <roles>
        <role></role>
      </roles>
      <url></url>
    </contributor>
  </contributors>

  <licenses>
    <license>
      <name>ASL</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repro</distribution>
    </license>
  </licenses>

  <dependencies>
    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>2.1</version>
      <url>http://cglib.sourceforge.net</url>
      <properties>
        <comment>code generation library</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.0</version>
      <url>http://www.csg.is.titech.ac.jp/~chiba/javassist/</url>
      <properties>
        <comment>java programming assistant - library for bytecode
maniplation</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>aopalliance</groupId>
      <artifactId>aopalliance</artifactId>
      <version>1.0</version>
      <url>http://aopalliance.sourceforge.net/</url>
      <properties>
        <comment>AOP standard API</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>jaxrpc</groupId>
      <artifactId>jaxrpc</artifactId>
      <version>1.1</version>
      <url>http://java.sun.com/j2ee/</url>
      <properties>
        <comment>XML remote procedure call API</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>hessian</groupId>
      <artifactId>hessian</artifactId>
      <version>3.0.1</version>
      <url>http://www.caucho.com/hessian/</url>
      <properties>
        <comment>binary webservices protocol</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>burlap</groupId>
      <artifactId>burlap</artifactId>
      <version>2.1.7</version>
      <url>http://www.caucho.com/burlap/</url>
      <properties>
        <comment>library for building webservices really easy</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.0.4</version>
      <url>http://jakarta.apache.org/commons/logging/</url>
      <properties>
        <comment>logging abstraction layer</comment>
      </properties>
    </dependency>
  </dependencies>

  <build>
    <nagEmailAddress>[hidden email]</nagEmailAddress>
    <sourceDirectory>${basedir}/src/java</sourceDirectory>
    <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>
    <integrationUnitTestSourceDirectory/>
    <aspectSourceDirectory/>

    <unitTest>
      <includes>
        <include>**/*TC.java</include>
      </includes>
      <excludes></excludes>
      <resources>
        <resource>
          <directory>${maven.src.dir}/test</directory>
          <includes>
            <include>**/*.dtd</include>
            <include>**/*.properties</include>
            <include>**/*.x*</include>
            <include>**/*.mf</include>
            <include>**/*.jar</include>
          </includes>
        </resource>
      </resources>
    </unitTest>

    <resources>
      <resource>
        <directory>${maven.src.dir}/java</directory>
        <includes>
          <include>**/*.dtd</include>
          <include>**/*.properties</include>
          <include>**/*.x*</include>
        </includes>
      </resource>
      <!--
      <resource>
        <directory>${maven.src.dir}/conf</directory>
        <targetPath>BLOCK-INF</targetPath>
        <includes>
          <include>block.xml</include>
        </includes>
      </resource>
      -->
    </resources>
    <jars></jars>
  </build>

  <reports>
    <report>maven-changes-plugin</report>
    <report>maven-changelog-plugin</report>
    <report>maven-developer-activity-plugin</report>
    <report>maven-file-activity-plugin</report>
    <report>maven-checkstyle-plugin</report>
    <report>maven-javadoc-plugin</report>
    <report>maven-jdepend-plugin</report>
    <report>maven-junit-report-plugin</report>
    <report>maven-jxr-plugin</report>
    <report>maven-license-plugin</report>
    <report>maven-linkcheck-plugin</report>
    <report>maven-tasklist-plugin</report>
    <report>maven-faq-plugin</report>
    <!--
        <report>maven-pmd-plugin</report>
        <report>maven-clover-plugin</report>
        <report>maven-simian-plugin</report>
        <report>maven-statcvs-plugin</report>
        <report>maven-xhtml-plugin</report>
    -->
  </reports>

</project>

project.properties
- ------------------
#$Id: project.properties$

#enable subversion support
maven.changelog.factory=org.apache.maven.svnlib.SvnChangeLogFactory

#xdoc settings
maven.xdoc.data=left

#checkstyle settings
#maven.checkstyle.properties=${basedir}/checkstyle.xml
#maven.checkstyle.header.file=${basedir}/checkstyle.header.txt

###########EOF#############
Take care
  J?rg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDDjWUmPuec2Dcv/8RAm+kAJ40zM4ugxpBEdWbPziuYk9Kb0x3cACeO43/
Q8f3BPIf8jl1W0FBw63f9LI=
=+GXf
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

James Carman
Joerg,

Thank you so much!  That worked almost flawlessly.  I just had to adjust the
jaxrpc stuff to download the Axis jars instead (I use Axis for unit testing
of the JaxRpcProvider).  I also added some new classes that I'm tinkering
around with (cached providers, i.e. threaded/pooled).  I don't know if it's
too much for something like commons-proxy or that it might belong in some
other package.  Good thing this is in the sandbox!  I will check in the
changes to project.xml and project.properties (along with my new classes)
when SVN comes back online.

Jim

-----Original Message-----
From: Joerg Hohwiller [mailto:[hidden email]]
Sent: Thursday, August 25, 2005 5:18 PM
To: Jakarta Commons Developers List
Subject: Re: [proxy] vs proxytoys

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi James,

James Carman wrote:
> That's one thing that I could definitely use help with ("mavenization").
> I'm not at all familiar with what it takes to get a project set up with
> Gump, Maven, and all the other stuff.
Promise is promise:
I made it and it works quite well. You only have to get the jaxrpc.jar
yourself and put it into ~/.maven/repository/jaxrpc/jars/jaxrpc-1.1.jar
I used maven 1.0.2 and a simple
"maven jar" builds the project and "maven site" builds the website
that will occur under target/docs/index.html and is quite nice for 1
hour work :)

I could not check in the maven config to the subversion so I will post
it here. Befor you call "svn add", do not forget to add the following
lines to "~/.subversion/config" in the "[auto-props]" section at the end
 of the file:
*.java = svn:keywords=Id;svn:eol-style=native
*.properties = svn:keywords=Id;svn:eol-style=native
*.xml = svn:keywords=Id;svn:eol-style=native

Put the files on toplevel (in the trunk folder):

project.xml
- -----------
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- $Id: project.xml$ -->
<project>
  <pomVersion>3</pomVersion>
  <id>commons-proxy</id>
  <name>Commons Proxy</name>
  <groupId>commons-proxy</groupId>
  <currentVersion>0.1</currentVersion>
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://apache.org</url>
    <logo>http://apache.org/images/asf_logo_wide.png</logo>
  </organization>
  <inceptionYear>2005</inceptionYear>
  <package>org.apache.commons.proxy</package>
  <logo>/images/logo.png</logo>
  <shortDescription>Java library for dynamic proxying</shortDescription>
  <url>http://jakarta.apache.org/commons/sandbox/proxy</url>
  <issueTrackingUrl>http://issues.apache.org/bugzilla</issueTrackingUrl>
  <siteAddress>jakarta.apache.org</siteAddress>
  <siteDirectory>/somewhere/commons/sandbox/proxy/</siteDirectory>
  <description><![CDATA[
    <p>
    Commons proxy is a java library for creating dynamic proxys.
    </p>
    <section name="Features">
      <p>
        Commons-proxy comes with the follwing features
        <ul>
          <li>simple and easy to use API</li>
          <li>based on AOP Alliance</li>
          <li>implementations using java.reflect.Proxy,cglib and
javassist</li>
          <li>really fast</li>
        </ul>
      </p>
    </section>
  ]]></description>

  <repository>

<connection>scm:svn:http:svn.apache.org:repos/asf/jakarta/commons/sandbox/pr
oxy:trunk</connection>

<developerConnection>scm:svn:https:svn.apache.org:repos/asf/jakarta/commons/
sandbox/proxy:trunk</developerConnection>

<url>http://svn.apache.org/viewcvs.cgi/jakarta/commons/sandbox/proxy/trunk/<
/url>
  </repository>

  <versions>
    <version>
      <id>0.1</id>
      <name>0.1</name>
      <tag>Version_0_1</tag>
    </version>
  </versions>

  <branches>
  </branches>

  <mailingLists>
    <mailingList>[hidden email]</mailingList>
  </mailingLists>

  <developers>
    <developer>
      <name>James Carman</name>
      <id>carman</id>
      <email>[hidden email]</email>
      <organization>carmanconsulting.com</organization>
      <roles>
        <role>admin</role>
        <role>designer</role>
        <role>developer</role>
      </roles>
      <url>http://www.carmanconsulting.com/</url>
      <timezone>+1</timezone>
    </developer>

  </developers>

  <contributors>
    <contributor>
      <name>J#246;rg Hohwiller</name>
      <email>[hidden email]</email>
      <organization/>
      <roles>
        <role>mavenizer</role>
      </roles>
      <url></url>
    </contributor>
    <contributor>
      <name>J#246;rg Schaible</name>
      <email>[hidden email]</email>
      <organization/>
      <roles>
        <role></role>
      </roles>
      <url></url>
    </contributor>
  </contributors>

  <licenses>
    <license>
      <name>ASL</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repro</distribution>
    </license>
  </licenses>

  <dependencies>
    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>2.1</version>
      <url>http://cglib.sourceforge.net</url>
      <properties>
        <comment>code generation library</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.0</version>
      <url>http://www.csg.is.titech.ac.jp/~chiba/javassist/</url>
      <properties>
        <comment>java programming assistant - library for bytecode
maniplation</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>aopalliance</groupId>
      <artifactId>aopalliance</artifactId>
      <version>1.0</version>
      <url>http://aopalliance.sourceforge.net/</url>
      <properties>
        <comment>AOP standard API</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>jaxrpc</groupId>
      <artifactId>jaxrpc</artifactId>
      <version>1.1</version>
      <url>http://java.sun.com/j2ee/</url>
      <properties>
        <comment>XML remote procedure call API</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>hessian</groupId>
      <artifactId>hessian</artifactId>
      <version>3.0.1</version>
      <url>http://www.caucho.com/hessian/</url>
      <properties>
        <comment>binary webservices protocol</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>burlap</groupId>
      <artifactId>burlap</artifactId>
      <version>2.1.7</version>
      <url>http://www.caucho.com/burlap/</url>
      <properties>
        <comment>library for building webservices really easy</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.0.4</version>
      <url>http://jakarta.apache.org/commons/logging/</url>
      <properties>
        <comment>logging abstraction layer</comment>
      </properties>
    </dependency>
  </dependencies>

  <build>
    <nagEmailAddress>[hidden email]</nagEmailAddress>
    <sourceDirectory>${basedir}/src/java</sourceDirectory>
    <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>
    <integrationUnitTestSourceDirectory/>
    <aspectSourceDirectory/>

    <unitTest>
      <includes>
        <include>**/*TC.java</include>
      </includes>
      <excludes></excludes>
      <resources>
        <resource>
          <directory>${maven.src.dir}/test</directory>
          <includes>
            <include>**/*.dtd</include>
            <include>**/*.properties</include>
            <include>**/*.x*</include>
            <include>**/*.mf</include>
            <include>**/*.jar</include>
          </includes>
        </resource>
      </resources>
    </unitTest>

    <resources>
      <resource>
        <directory>${maven.src.dir}/java</directory>
        <includes>
          <include>**/*.dtd</include>
          <include>**/*.properties</include>
          <include>**/*.x*</include>
        </includes>
      </resource>
      <!--
      <resource>
        <directory>${maven.src.dir}/conf</directory>
        <targetPath>BLOCK-INF</targetPath>
        <includes>
          <include>block.xml</include>
        </includes>
      </resource>
      -->
    </resources>
    <jars></jars>
  </build>

  <reports>
    <report>maven-changes-plugin</report>
    <report>maven-changelog-plugin</report>
    <report>maven-developer-activity-plugin</report>
    <report>maven-file-activity-plugin</report>
    <report>maven-checkstyle-plugin</report>
    <report>maven-javadoc-plugin</report>
    <report>maven-jdepend-plugin</report>
    <report>maven-junit-report-plugin</report>
    <report>maven-jxr-plugin</report>
    <report>maven-license-plugin</report>
    <report>maven-linkcheck-plugin</report>
    <report>maven-tasklist-plugin</report>
    <report>maven-faq-plugin</report>
    <!--
        <report>maven-pmd-plugin</report>
        <report>maven-clover-plugin</report>
        <report>maven-simian-plugin</report>
        <report>maven-statcvs-plugin</report>
        <report>maven-xhtml-plugin</report>
    -->
  </reports>

</project>

project.properties
- ------------------
#$Id: project.properties$

#enable subversion support
maven.changelog.factory=org.apache.maven.svnlib.SvnChangeLogFactory

#xdoc settings
maven.xdoc.data=left

#checkstyle settings
#maven.checkstyle.properties=${basedir}/checkstyle.xml
#maven.checkstyle.header.file=${basedir}/checkstyle.header.txt

###########EOF#############
Take care
  Jörg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDDjWUmPuec2Dcv/8RAm+kAJ40zM4ugxpBEdWbPziuYk9Kb0x3cACeO43/
Q8f3BPIf8jl1W0FBw63f9LI=
=+GXf
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

Jörg Schaible-2
In reply to this post by Jörg Schaible
Joerg Hohwiller wrote on Thursday, August 25, 2005 11:18 PM:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi James,
>
> James Carman wrote:
>> That's one thing that I could definitely use help with
>> ("mavenization"). I'm not at all familiar with what it takes to get a
>> project set up with Gump, Maven, and all the other stuff.
> Promise is promise:
> I made it and it works quite well. You only have to get the
> jaxrpc.jar yourself and put it into
> ~/.maven/repository/jaxrpc/jars/jaxrpc-1.1.jar

Have you tried the one from Geronimo? I started to use these at least for compile time everywhere.

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

James Carman
I actually use the Axis version for unit testing and this works quite fine.
The maven files are checked in, now that everything seems to be back online
at Apache.

-----Original Message-----
From: Jörg Schaible [mailto:[hidden email]]
Sent: Friday, August 26, 2005 3:36 AM
To: Jakarta Commons Developers List
Subject: RE: [proxy] vs proxytoys

Joerg Hohwiller wrote on Thursday, August 25, 2005 11:18 PM:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi James,
>
> James Carman wrote:
>> That's one thing that I could definitely use help with
>> ("mavenization"). I'm not at all familiar with what it takes to get a
>> project set up with Gump, Maven, and all the other stuff.
> Promise is promise:
> I made it and it works quite well. You only have to get the
> jaxrpc.jar yourself and put it into
> ~/.maven/repository/jaxrpc/jars/jaxrpc-1.1.jar

Have you tried the one from Geronimo? I started to use these at least for
compile time everywhere.

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]




---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

James Carman
In reply to this post by Joerg Hohwiller
Jörg (is that pronounced "yorg" or "george"?),

I checked in the maven files and everything looks great (as you mentioned).
How do I actually get the generated site to be viewable when you go to...

http://jakarta.apache.org/commons/sandbox/proxy



-----Original Message-----
From: Joerg Hohwiller [mailto:[hidden email]]
Sent: Thursday, August 25, 2005 5:18 PM
To: Jakarta Commons Developers List
Subject: Re: [proxy] vs proxytoys

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi James,

James Carman wrote:
> That's one thing that I could definitely use help with ("mavenization").
> I'm not at all familiar with what it takes to get a project set up with
> Gump, Maven, and all the other stuff.
Promise is promise:
I made it and it works quite well. You only have to get the jaxrpc.jar
yourself and put it into ~/.maven/repository/jaxrpc/jars/jaxrpc-1.1.jar
I used maven 1.0.2 and a simple
"maven jar" builds the project and "maven site" builds the website
that will occur under target/docs/index.html and is quite nice for 1
hour work :)

I could not check in the maven config to the subversion so I will post
it here. Befor you call "svn add", do not forget to add the following
lines to "~/.subversion/config" in the "[auto-props]" section at the end
 of the file:
*.java = svn:keywords=Id;svn:eol-style=native
*.properties = svn:keywords=Id;svn:eol-style=native
*.xml = svn:keywords=Id;svn:eol-style=native

Put the files on toplevel (in the trunk folder):

project.xml
- -----------
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- $Id: project.xml$ -->
<project>
  <pomVersion>3</pomVersion>
  <id>commons-proxy</id>
  <name>Commons Proxy</name>
  <groupId>commons-proxy</groupId>
  <currentVersion>0.1</currentVersion>
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://apache.org</url>
    <logo>http://apache.org/images/asf_logo_wide.png</logo>
  </organization>
  <inceptionYear>2005</inceptionYear>
  <package>org.apache.commons.proxy</package>
  <logo>/images/logo.png</logo>
  <shortDescription>Java library for dynamic proxying</shortDescription>
  <url>http://jakarta.apache.org/commons/sandbox/proxy</url>
  <issueTrackingUrl>http://issues.apache.org/bugzilla</issueTrackingUrl>
  <siteAddress>jakarta.apache.org</siteAddress>
  <siteDirectory>/somewhere/commons/sandbox/proxy/</siteDirectory>
  <description><![CDATA[
    <p>
    Commons proxy is a java library for creating dynamic proxys.
    </p>
    <section name="Features">
      <p>
        Commons-proxy comes with the follwing features
        <ul>
          <li>simple and easy to use API</li>
          <li>based on AOP Alliance</li>
          <li>implementations using java.reflect.Proxy,cglib and
javassist</li>
          <li>really fast</li>
        </ul>
      </p>
    </section>
  ]]></description>

  <repository>

<connection>scm:svn:http:svn.apache.org:repos/asf/jakarta/commons/sandbox/pr
oxy:trunk</connection>

<developerConnection>scm:svn:https:svn.apache.org:repos/asf/jakarta/commons/
sandbox/proxy:trunk</developerConnection>

<url>http://svn.apache.org/viewcvs.cgi/jakarta/commons/sandbox/proxy/trunk/<
/url>
  </repository>

  <versions>
    <version>
      <id>0.1</id>
      <name>0.1</name>
      <tag>Version_0_1</tag>
    </version>
  </versions>

  <branches>
  </branches>

  <mailingLists>
    <mailingList>[hidden email]</mailingList>
  </mailingLists>

  <developers>
    <developer>
      <name>James Carman</name>
      <id>carman</id>
      <email>[hidden email]</email>
      <organization>carmanconsulting.com</organization>
      <roles>
        <role>admin</role>
        <role>designer</role>
        <role>developer</role>
      </roles>
      <url>http://www.carmanconsulting.com/</url>
      <timezone>+1</timezone>
    </developer>

  </developers>

  <contributors>
    <contributor>
      <name>J#246;rg Hohwiller</name>
      <email>[hidden email]</email>
      <organization/>
      <roles>
        <role>mavenizer</role>
      </roles>
      <url></url>
    </contributor>
    <contributor>
      <name>J#246;rg Schaible</name>
      <email>[hidden email]</email>
      <organization/>
      <roles>
        <role></role>
      </roles>
      <url></url>
    </contributor>
  </contributors>

  <licenses>
    <license>
      <name>ASL</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repro</distribution>
    </license>
  </licenses>

  <dependencies>
    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>2.1</version>
      <url>http://cglib.sourceforge.net</url>
      <properties>
        <comment>code generation library</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.0</version>
      <url>http://www.csg.is.titech.ac.jp/~chiba/javassist/</url>
      <properties>
        <comment>java programming assistant - library for bytecode
maniplation</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>aopalliance</groupId>
      <artifactId>aopalliance</artifactId>
      <version>1.0</version>
      <url>http://aopalliance.sourceforge.net/</url>
      <properties>
        <comment>AOP standard API</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>jaxrpc</groupId>
      <artifactId>jaxrpc</artifactId>
      <version>1.1</version>
      <url>http://java.sun.com/j2ee/</url>
      <properties>
        <comment>XML remote procedure call API</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>hessian</groupId>
      <artifactId>hessian</artifactId>
      <version>3.0.1</version>
      <url>http://www.caucho.com/hessian/</url>
      <properties>
        <comment>binary webservices protocol</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>burlap</groupId>
      <artifactId>burlap</artifactId>
      <version>2.1.7</version>
      <url>http://www.caucho.com/burlap/</url>
      <properties>
        <comment>library for building webservices really easy</comment>
      </properties>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.0.4</version>
      <url>http://jakarta.apache.org/commons/logging/</url>
      <properties>
        <comment>logging abstraction layer</comment>
      </properties>
    </dependency>
  </dependencies>

  <build>
    <nagEmailAddress>[hidden email]</nagEmailAddress>
    <sourceDirectory>${basedir}/src/java</sourceDirectory>
    <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>
    <integrationUnitTestSourceDirectory/>
    <aspectSourceDirectory/>

    <unitTest>
      <includes>
        <include>**/*TC.java</include>
      </includes>
      <excludes></excludes>
      <resources>
        <resource>
          <directory>${maven.src.dir}/test</directory>
          <includes>
            <include>**/*.dtd</include>
            <include>**/*.properties</include>
            <include>**/*.x*</include>
            <include>**/*.mf</include>
            <include>**/*.jar</include>
          </includes>
        </resource>
      </resources>
    </unitTest>

    <resources>
      <resource>
        <directory>${maven.src.dir}/java</directory>
        <includes>
          <include>**/*.dtd</include>
          <include>**/*.properties</include>
          <include>**/*.x*</include>
        </includes>
      </resource>
      <!--
      <resource>
        <directory>${maven.src.dir}/conf</directory>
        <targetPath>BLOCK-INF</targetPath>
        <includes>
          <include>block.xml</include>
        </includes>
      </resource>
      -->
    </resources>
    <jars></jars>
  </build>

  <reports>
    <report>maven-changes-plugin</report>
    <report>maven-changelog-plugin</report>
    <report>maven-developer-activity-plugin</report>
    <report>maven-file-activity-plugin</report>
    <report>maven-checkstyle-plugin</report>
    <report>maven-javadoc-plugin</report>
    <report>maven-jdepend-plugin</report>
    <report>maven-junit-report-plugin</report>
    <report>maven-jxr-plugin</report>
    <report>maven-license-plugin</report>
    <report>maven-linkcheck-plugin</report>
    <report>maven-tasklist-plugin</report>
    <report>maven-faq-plugin</report>
    <!--
        <report>maven-pmd-plugin</report>
        <report>maven-clover-plugin</report>
        <report>maven-simian-plugin</report>
        <report>maven-statcvs-plugin</report>
        <report>maven-xhtml-plugin</report>
    -->
  </reports>

</project>

project.properties
- ------------------
#$Id: project.properties$

#enable subversion support
maven.changelog.factory=org.apache.maven.svnlib.SvnChangeLogFactory

#xdoc settings
maven.xdoc.data=left

#checkstyle settings
#maven.checkstyle.properties=${basedir}/checkstyle.xml
#maven.checkstyle.header.file=${basedir}/checkstyle.header.txt

###########EOF#############
Take care
  Jörg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDDjWUmPuec2Dcv/8RAm+kAJ40zM4ugxpBEdWbPziuYk9Kb0x3cACeO43/
Q8f3BPIf8jl1W0FBw63f9LI=
=+GXf
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

Jörg Schaible-2
In reply to this post by Jörg Schaible
James Carman wrote on Friday, August 26, 2005 2:02 PM:

> Jörg (is that pronounced "yorg" or "george"?),

"yerk" seems closest

:)

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [proxy] vs proxytoys

Rahul Akolkar
In reply to this post by James Carman
On 8/26/05, James Carman <[hidden email]> wrote:
<snip/>
> How do I actually get the generated site to be viewable when you go to...
>
> http://jakarta.apache.org/commons/sandbox/proxy
<snap/>

See "Updating the public site" on [
http://jakarta.apache.org/commons/building.html ]

-Rahul

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

James Carman
I met all of the qualifications, but my site:sshdeploy fails...

site:sshdeploy:
    [echo]
      siteAddress = cvs.apache.org
      siteDirectory = /www/jakarta.apache.org/commons/proxy/
      siteUser = jcarman

    [tar] Building tar: C:\Documents and
Settings\jcarman\IdeaProjects\commons-p
roxy\target\commons-proxy-0.1-site.tar
    [gzip] Building: C:\Documents and
Settings\jcarman\IdeaProjects\commons-prox
y\target\commons-proxy-0.1-site.tar.gz
    [delete] Deleting: C:\Documents and
Settings\jcarman\IdeaProjects\commons-pr
oxy\target\commons-proxy-0.1-site.tar
    [exec] xfree: NULL pointer given as argument
    [exec] lost connection
    [exec] [ERROR] Result: 1
    [exec] commons-proxy-0.1-site.tar.gz: No such file or directory
    [exec] tar: Error opening archive: Failed to open
'commons-proxy-0.1-site.ta
r': No such file or directory
    [exec] chmod: *: No such file or directory
    [exec] rm: commons-proxy-0.1-site.tar: No such file or directory
    [exec] [ERROR] Result: 1
    [delete] Deleting: C:\Documents and
Settings\jcarman\IdeaProjects\commons-pr
oxy\target\commons-proxy-0.1-site.tar.gz
BUILD SUCCESSFUL
Total time: 6 seconds
Finished at: Fri Aug 26 10:49:33 EDT 2005

-----Original Message-----
From: Rahul Akolkar [mailto:[hidden email]]
Sent: Friday, August 26, 2005 10:15 AM
To: Jakarta Commons Developers List
Subject: Re: [proxy] vs proxytoys

On 8/26/05, James Carman <[hidden email]> wrote:
<snip/>
> How do I actually get the generated site to be viewable when you go to...
>
> http://jakarta.apache.org/commons/sandbox/proxy
<snap/>

See "Updating the public site" on [
http://jakarta.apache.org/commons/building.html ]

-Rahul

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]




---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: [proxy] vs proxytoys

Jörg Schaible-2
In reply to this post by Jörg Schaible
James Carman wrote on Friday, August 26, 2005 4:51 PM:

> I met all of the qualifications, but my site:sshdeploy fails...
>
> site:sshdeploy:
>     [echo]
>       siteAddress = cvs.apache.org
>       siteDirectory = /www/jakarta.apache.org/commons/proxy/  

should go to /www/jakarta.apache.org/commons/sandbox/proxy/ though ...
   
- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

12