Paulo Gabriel Poiati | 1 May 2011 02:32
Picon

Re: [groovy-user] Proxy + methodMissing + Dynamic metaMethod :: Not Working

Maybe MetaClass proxies can't be change. I simplified the problem. And this is the result:

class Foo {}

Foo.metaClass.bar = {-> 
    println "Foo#bar() called" 
    Foo.metaClass."baz" = {-> } // Modifying, comment this and it will work
}

def proxy = ProxyMetaClass.getInstance(Foo)

GroovySystem.metaClassRegistry.setMetaClass(Foo, proxy)

println new Foo().bar() // Works
println new Foo().bar() // Error !!

Also, there is a big warning in ProxyMetaClass javadoc. But I think it's only in respect with multithreaded systems.

WARNING: This implementation of ProxyMetaClass is NOT threadsafe and hence should only be used for as a per-instance MetaClass running in a single thread. Do not place this MetaClass in the MetaClassRegistry as it will result in unpredictable behaviour

Groovy experts, plz, help.

[]'s
Paulo Poiati

blog.paulopoiati.com


On Sat, Apr 30, 2011 at 6:35 PM, Paulo Gabriel Poiati <paulogpoiati-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
But that don't explain why when u comment the cache line it works. Really weird.

[]'s
Paulo Poiati

blog.paulopoiati.com


On Sat, Apr 30, 2011 at 6:25 PM, Paulo Gabriel Poiati <paulogpoiati <at> gmail.com> wrote:
Hello virtualeyes.

For me, it seems like the proxy version of your Child MetaClass doesn't carry the static context methodMissing.

When you override the Child MetaClass in the MetaClassRegistry you mess up with your setup. So, the second call (Child.bar()) fails because the method isn't defined and no methodMissing is found either.

Well, that is my guess. 

[]'s
Paulo Poiati

blog.paulopoiati.com



On Sat, Apr 30, 2011 at 10:16 AM, virtualeyes <sit1way-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote:
Hey all.

Following this example:
http://groovy.codehaus.org/Using+methodMissing+and+propertyMissing

I am able to successfully create and cache methods on-the-fly, great, life
is good, nice technique.

However, dynamically adding missing methods via MCL does not appear to work
with proxy enabled objects.  In the below example if I remove the proxy, or
do not MCL-add the missing method on-the-fly, everything works, albeit
without desired functionality.

***************
class Parent {
   def foo() { println "foo method" }
   def bar() { println "bar method"}
}
class Child {}
Child.mixin Parent // child now has non-static parent methods, but we're
going to call them from static context...

new Loader()
Child.foo()  // invoke static methodMissing
Child.foo()  // call now-cached static version of instance method foo
Child.bar() // fails, "No signature...static Child.bar()"
// Why does static.methodMissing (see Loader class below) vanish post-foo
method MCL creation??

class Loader {
   Loader() {
       Child.metaClass.static.methodMissing = {name,args->
           Object method = Child.metaClass.getMetaMethod(name)
           def cached = { Object[] vargs->
               println "Cached method $name called"
               method.invoke(Child)
           }
           Child.metaClass.static."$name" = cached // comment this line and
works, but no method caching!
           return method.invoke(Child)
       }
       def proxy = ProxyMetaClass.getInstance(Child)
       proxy.interceptor = new PogoInterceptor()
       GroovySystem.metaClassRegistry.setMetaClass(Child,proxy) // comment
this line and works, but no proxy!
   }
}
class PogoInterceptor implements PropertyAccessInterceptor {
       boolean doInvoke() { true }
       void beforeSet(Object clazz, String k, Object v) {}
       Object beforeGet(Object clazz, String k) {}
       Object beforeInvoke(Object clazz, String method, Object[] args) {}
       Object afterInvoke(Object clazz, String method, Object[] args, Object
result) {}
}
****************--
View this message in context: http://groovy.329449.n5.nabble.com/Proxy-methodMissing-Dynamic-metaMethod-Not-Working-tp4361137p4361137.html
Sent from the groovy - user mailing list archive at Nabble.com.

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

   http://xircles.codehaus.org/manage_email





jlaisbett | 1 May 2011 02:53

[groovy-user] Re: Groovy 1.8 <at> Log annotation not working?

The problem is that your groovy script is named log.groovy, if it's named
anything else it will work just fine.

strayph wrote:
> 
> Yep I checked. With 1.7 it would fail trying to import the annotation. 
> 
> Any thoughts based on the error message?
> 
> Sent from my iPhone
> 
> On Apr 29, 2011, at 11:51 PM, "Guillaume Laforge[via Groovy]"
> &lt;ml-node+4360720-1396486366-202270@...&gt; wrote:
> 
>> Works fine here too.
>> 
>> Are you really sure you're running Groovy 1.8?
>> 
>> On Sat, Apr 30, 2011 at 05:39, Paulo Gabriel Poiati <[hidden email]>
>> wrote:
>> Weird...
>> 
>> Works fine here:
>> 
>> Apr 30, 2011 12:38:56 AM java_util_logging_Logger$info call
>> INFO: ...as it should.
>> Apr 30, 2011 12:38:56 AM java_util_logging_Logger$info call
>> INFO: how strange this fails...
>> 
>> []'s
>> Paulo Poiati
>> 
>> blog.paulopoiati.com
>> 
>> 
>> 
>> On Sat, Apr 30, 2011 at 12:22 AM, strayph <[hidden email]> wrote:
>> #!/usr/bin/env groovy
>> import groovy.util.logging.Log
>> 
>>  <at> Log
>> class MyClass {
>>    def fails() { log.info('how strange this fails...') }
>>    def works() { this.log.info('...as it should.') }
>> }
>> 
>> 
>> m = new MyClass()
>> 
>> m.works() //
>> m.fails()
>> 
>> ------
>> Prints:
>> 
>> INFO: ...as it should.
>> Caught: groovy.lang.MissingMethodException: No signature of method:
>> static
>> log.info() is applicable for argument types: (java.lang.String) values:
>> [how
>> strange this fails...]
>> Possible solutions: any(), find(groovy.lang.Closure),
>> is(java.lang.Object),
>> any(groovy.lang.Closure), wait(), run()
>>        at MyClass.fails(log.groovy:6)
>>        at log.run(log.groovy:14)
>> --
>> View this message in context:
>> http://groovy.329449.n5.nabble.com/Groovy-1-8-Log-annotation-not-working-tp4360566p4360566.html
>> Sent from the groovy - user mailing list archive at Nabble.com.
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>> 
>>    http://xircles.codehaus.org/manage_email
>> 
>> 
>> 
>> 
>> 
>> 
>> -- 
>> Guillaume Laforge
>> Groovy Project Manager
>> Head of Groovy Development at SpringSource
>> http://www.springsource.com/g2one
>> 
>> 
>> If you reply to this email, your message will be added to the discussion
>> below:
>> http://groovy.329449.n5.nabble.com/Groovy-1-8-Log-annotation-not-working-tp4360566p4360720.html
>> To unsubscribe from Groovy 1.8  <at> Log annotation not working?, click here.
> 
--
View this message in context: http://groovy.329449.n5.nabble.com/Groovy-1-8-Log-annotation-not-working-tp4360566p4362042.html
Sent from the groovy - user mailing list archive at Nabble.com.

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

    http://xircles.codehaus.org/manage_email

strayph | 1 May 2011 07:46

[groovy-user] Re: Groovy 1.8 <at> Log annotation not working?

Oh my. That is hilarious. What else will  go awry based on my file name?

Sent from my iPhone

On Apr 30, 2011, at 5:53 PM, "jlaisbett[via Groovy]" <[hidden email]> wrote:

The problem is that your groovy script is named log.groovy, if it's named anything else it will work just fine.

strayph wrote:
Yep I checked. With 1.7 it would fail trying to import the annotation.

Any thoughts based on the error message?

Sent from my iPhone

On Apr 29, 2011, at 11:51 PM, "Guillaume Laforge[via Groovy]" <[hidden email]> wrote:

> Works fine here too.
>
> Are you really sure you're running Groovy 1.8?
>
> On Sat, Apr 30, 2011 at 05:39, Paulo Gabriel Poiati <[hidden email]> wrote:
> Weird...
>
> Works fine here:
>
> Apr 30, 2011 12:38:56 AM java_util_logging_Logger$info call
> INFO: ...as it should.
> Apr 30, 2011 12:38:56 AM java_util_logging_Logger$info call
> INFO: how strange this fails...
>
> []'s
> Paulo Poiati
>
> blog.paulopoiati.com
>
>
>
> On Sat, Apr 30, 2011 at 12:22 AM, strayph <[hidden email]> wrote:
> #!/usr/bin/env groovy
> import groovy.util.logging.Log
>
> <at> Log
> class MyClass {
>    def fails() { log.info('how strange this fails...') }
>    def works() { this.log.info('...as it should.') }
> }
>
>
> m = new MyClass()
>
> m.works() //
> m.fails()
>
> ------
> Prints:
>
> INFO: ...as it should.
> Caught: groovy.lang.MissingMethodException: No signature of method: static
> log.info() is applicable for argument types: (java.lang.String) values: [how
> strange this fails...]
> Possible solutions: any(), find(groovy.lang.Closure), is(java.lang.Object),
> any(groovy.lang.Closure), wait(), run()
>        at MyClass.fails(log.groovy:6)
>        at log.run(log.groovy:14)
> --
> View this message in context: http://groovy.329449.n5.nabble.com/Groovy-1-8-Log-annotation-not-working-tp4360566p4360566.html
> Sent from the groovy - user mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>    http://xircles.codehaus.org/manage_email
>
>
>
>
>
>
> --
> Guillaume Laforge
> Groovy Project Manager
> Head of Groovy Development at SpringSource
> http://www.springsource.com/g2one
>
>
> If you reply to this email, your message will be added to the discussion below:
> http://groovy.329449.n5.nabble.com/Groovy-1-8-Log-annotation-not-working-tp4360566p4360720.html
> To unsubscribe from Groovy 1.8 <at> Log annotation not working?, click here.

If you reply to this email, your message will be added to the discussion below:
http://groovy.329449.n5.nabble.com/Groovy-1-8-Log-annotation-not-working-tp4360566p4362042.html
To unsubscribe from Groovy 1.8 <at> Log annotation not working?, click here.

View this message in context: Re: Groovy 1.8 <at> Log annotation not working?
Sent from the groovy - user mailing list archive at Nabble.com.
virtualeyes | 1 May 2011 10:03
Picon
Favicon

[groovy-user] Re: Proxy + methodMissing + Dynamic metaMethod :: Not Working

Paulo, thanks for the help here.

A little background on why I'd like this to work:

1) I really like the idea of being able to invoke an instance method from a
static context:
class Foo {
    def notStatic() {println "I'm really an instance method"}
}
Foo.notStatic() // instead of ugly "new Foo().notStatic()", or with MCL
hack, "Foo.new().notStatic()"

Gain short method calls, and avoid
once-in-static-context-everything-must-be-static trap (for me at least ;--))

2) Caching missing method calls in MCL just makes sense (vs. cost of
invoking missingMethod everytime the "missing" method is called)

3) Running your POGOs through a proxy is really useful, no?
class Foo {
    Date shouldBeDate
}
new Foo(notExist:'boom',shouldBeDate:'crash') // fatal error (but with
PropertyAccessInterceptor you can ignore, catch, verify type, etc.)
*******************

Paulo, your simplified example does illustrate the fact that once a proxy
has been added to the MCL registry, ANY further MCL change(s) on the proxied
class will cause the app to fail (i.e. once you attempt to invoke)

Is there a way to update an MCL registered proxy class? If not, how can we
achieve the same result? Perhaps with a proxy.use {....} block at MCL level?
(have tried, but can't get above functionality)

It may be that we cannot (yet) have our cake and eat it too. The Groovy
functionality is there (the cake), but one has to eat (use) it to realize
just how good it is ;--)

May have to sacrifice the method caching (since PropertyAccessInterceptor
proxy is needed for pogo validation), but would love to hear possible
solutions!

Thanks,
Noah

--
View this message in context: http://groovy.329449.n5.nabble.com/Proxy-methodMissing-tp4361137p4362445.html
Sent from the groovy - user mailing list archive at Nabble.com.

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

    http://xircles.codehaus.org/manage_email

Tim Yates | 1 May 2011 11:26
Picon
Gravatar

Re: [groovy-user] Re: NullPointerException problem

Ahhh...nabble is trying to be clever, and has broken the code...

I've created a gist here:

https://gist.github.com/544f6a177bc0335d1620

I think this *could* be a bug...

I think Groovy is seeing that the class does not have a method

Object iterator() { ... }

So it is adding one in to the metaClass.  This is overriding the existing

public Iterator<LocusInfo> iterator() { ... }

method, which is then never called (but is required for the class to initialise itself)

Can anyone else confirm or deny this?

Tim

On 30 April 2011 23:27, trx <mictadlo-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
Thank you for your solution, but I can not read this line with "tempIterator
= [hidden email]();".

What do I have put instead of hidden email?

Do you thing it is a bug in Groovy?--
View this message in context: http://groovy.329449.n5.nabble.com/NullPointerException-problem-tp4360426p4361911.html
Sent from the groovy - user mailing list archive at Nabble.com.

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

   http://xircles.codehaus.org/manage_email



Rene Groeschke | 2 May 2011 00:10
Gravatar

Re: [groovy-user] groovy 1.8.0 gradle build

Hi there,
please find attached a patch for the following build issues:

1. replaced TaskContainer.alltasks by taskContainer.all
2. updated the gradle.properties file to the properties described in build.properties
3. fixed the ReplaceToken problem as described before in the distSpec copy specification

I also run into weired problems with the binaryJarsMetaInf copyspec and the used LineFilter, but havn't a proper solution yet. I'll ask on the gradle mailinglist for support and hope to come up with a solution soon.

regards,
René

Am 28.04.11 11:19, schrieb Guillaume Laforge:
Hi René,

Yeah, we haven't updated the gradle build accordingly, and we still used ant for building and for the releases.
We really have to update the gradle build and make it the default soon.
If you want to come up with a patch to fix the issues you've noticed below, that would be very handy!

Guillaume

On Thu, Apr 28, 2011 at 11:13, Rene Groeschke <grails-So656aZnn7pWk0Htik3J/w@public.gmane.org> wrote:
Hi there,
I had some issues with building groovy 1.8.0 from source and noticed some issues with the gradle build of the 1.8.0 release.

1. the gradle.properties still points to version 1.8.0-beta-4-SNAPSHOT
2. the distSpec defined in assemble.gradle contains the line
       filter(ReplaceTokens, tokens: [token: 'GROOVYJAR', value: jar.archiveName])
   This does not work (at least not for me) I replaced it with
       filter(ReplaceTokens, tokens: [GROOVYJAR:jar.archiveName])
3. The LineFilter defined in filter binaryJarsMetaInf does not work for me. the created jar does not contain the replacements. I havn't found the time yet to have a deeper look on this third issue, sorry.

regards,
René


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

  http://xircles.codehaus.org/manage_email





--
Guillaume Laforge
Groovy Project Manager
Head of Groovy Development at SpringSource
http://www.springsource.com/g2one

Index: gradle.properties
===================================================================
--- gradle.properties	(revision 22113)
+++ gradle.properties	(working copy)
 <at>  <at>  -1,6 +1,6  <at>  <at> 
-groovyVersion = 1.8.0-beta-4-SNAPSHOT
+groovyVersion = 1.9.0-beta-1-SNAPSHOT
 # bundle version format: major('.'minor('.'micro('.'qualifier)?)?)? (first 3 only digits)
-groovyBundleVersion = 1.8.0.beta-4-SNAPSHOT
+groovyBundleVersion = 1.9.0.beta-1-SNAPSHOT

 #  Many people have reported problems testing UberTestCaseGroovySourceSubPackages, others have no
difficulties with the default
 #  values ant junit task uses.  The decision has been taken to provide the values to try and cause the least
Index: build.gradle
===================================================================
--- build.gradle	(revision 22113)
+++ build.gradle	(working copy)
 <at>  <at>  -245,7 +245,7  <at>  <at> 
 // ignore CodeNarc on examples
 task codenarcExamples(overwrite: true) << {};
 // don't fail build on CodeNarc tasks
-tasks.withType(CodeNarc).allTasks { codeNarcTask ->
+tasks.withType(CodeNarc).all { codeNarcTask ->
     codeNarcTask.ignoreFailures = true
 }

Index: gradle/assemble.gradle
===================================================================
--- gradle/assemble.gradle	(revision 22113)
+++ gradle/assemble.gradle	(working copy)
 <at>  <at>  -162,7 +162,7  <at>  <at> 
     }
     into("bin") {
         from("src/bin") {
-            filter(ReplaceTokens, tokens: [token: 'GROOVYJAR', value: jar.archiveName])
+            filter(ReplaceTokens, tokens: [GROOVYJAR:jar.archiveName])
             fileMode = 0755
         }
         from("src/tools/org/codehaus/groovy/tools/groovy.ico")

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

    http://xircles.codehaus.org/manage_email
Hamlet DArcy | 2 May 2011 09:02
Favicon

Re: [groovy-user] GroovyASTTransformation

I'd like to resurrect this thread that was never answered. 

It looks like script variables and local variables are not automatically called by Ast Transformations,
even though they are of type AnnotatedNodes. 

Is this expected? 

--
Hamlet

----- Original Message -----
> Hi
> After searching and founding only "old topics" on the forum on the
> question,
> I was just wondering if I was doing something wrong with
> GroovyASTTransformation.
> I followed the example in
> http://groovy.codehaus.org/Local+AST+Transformations
> But instead of targeting a method, I wanted to target "variables":
> Field,
> Local_Variable or Parameter with an annotation like:
> 
>  <at> Retention(RetentionPolicy.SOURCE)
>  <at> Target({ElementType.LOCAL_VARIABLE,ElementType.FIELD,ElementType.PARAMETER})
>  <at> GroovyASTTransformationClass("Injection")
> public  <at> interface Inject {
> 	String name() default "";
> 	String providerName() default "";
> }
> 
> And a transformation like that:
> 
>  <at> GroovyASTTransformation(phase=CompilePhase.CANONICALIZATION)
> public class Injection implements ASTTransformation {
> 
> 	public void visit(ASTNode[] nodes, SourceUnit source) {
> 		 if (nodes.length != 2 || !(nodes[0] instanceof AnnotationNode) ||
> !(nodes[1] instanceof AnnotatedNode)) {
> 	            throw new RuntimeException("Internal error: expecting
> [AnnotationNode, AnnotatedNode] but got: " + Arrays.asList(nodes));
> 	        }
> 
> 		 System.out.println(" ====================================== GROOVY
> 		 AST
> "+nodes[1]+"//"+nodes[0]);
>       }
> }
> 
> When I run the following script:
> 
> class Test {
> 	 <at> Inject def a
> 	
> 	def meth( <at> Inject b) {
> 		 <at> Inject int c;
> 	}
> }
> 
>  <at> Inject int d
> 
> Only a and b variables are detected directly. If I want other
> annotations, I
> have to do something like described in the Groovy link.
> I am surprised because I expected that the visitor would fetch all
> the nodes
> where I set the annotation and I got only some .
> 
> I started my script in GroovyConsole and looked in the AST Browser at
> different phases and d and c had no annotations shown.
> Did I make something wrong ?
> (For info I run my tests with groovy 1.7.8)
> 
> Thanks in advance for any advice
> 
> 
> 
> --
> View this message in context:
> http://groovy.329449.n5.nabble.com/GroovyASTTransformation-tp4328632p4328632.html
> Sent from the groovy - user mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>     http://xircles.codehaus.org/manage_email
> 
> 
> 

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

    http://xircles.codehaus.org/manage_email

Guillaume Laforge | 2 May 2011 10:13
Gravatar

Re: [groovy-user] GroovyASTTransformation

Indeed to properly support and handle annotations on local variables, we'd need to have those annotations being visited.

That would be good if we could handle that properly.

On Mon, May 2, 2011 at 09:02, Hamlet DArcy <hamlet.darcy-vS5zOjhOW+wAvxtiuMwx3w@public.gmane.org> wrote:
I'd like to resurrect this thread that was never answered.

It looks like script variables and local variables are not automatically called by Ast Transformations, even though they are of type AnnotatedNodes.

Is this expected?

--
Hamlet



----- Original Message -----
> Hi
> After searching and founding only "old topics" on the forum on the
> question,
> I was just wondering if I was doing something wrong with
> GroovyASTTransformation.
> I followed the example in
> http://groovy.codehaus.org/Local+AST+Transformations
> But instead of targeting a method, I wanted to target "variables":
> Field,
> Local_Variable or Parameter with an annotation like:
>
> <at> Retention(RetentionPolicy.SOURCE)
> <at> Target({ElementType.LOCAL_VARIABLE,ElementType.FIELD,ElementType.PARAMETER})
> <at> GroovyASTTransformationClass("Injection")
> public <at> interface Inject {
>       String name() default "";
>       String providerName() default "";
> }
>
> And a transformation like that:
>
> <at> GroovyASTTransformation(phase=CompilePhase.CANONICALIZATION)
> public class Injection implements ASTTransformation {
>
>       public void visit(ASTNode[] nodes, SourceUnit source) {
>                if (nodes.length != 2 || !(nodes[0] instanceof AnnotationNode) ||
> !(nodes[1] instanceof AnnotatedNode)) {
>                   throw new RuntimeException("Internal error: expecting
> [AnnotationNode, AnnotatedNode] but got: " + Arrays.asList(nodes));
>               }
>
>                System.out.println(" ====================================== GROOVY
>                AST
> "+nodes[1]+"//"+nodes[0]);
>       }
> }
>
> When I run the following script:
>
> class Test {
>       <at> Inject def a
>
>       def meth( <at> Inject b) {
>               <at> Inject int c;
>       }
> }
>
> <at> Inject int d
>
> Only a and b variables are detected directly. If I want other
> annotations, I
> have to do something like described in the Groovy link.
> I am surprised because I expected that the visitor would fetch all
> the nodes
> where I set the annotation and I got only some .
>
> I started my script in GroovyConsole and looked in the AST Browser at
> different phases and d and c had no annotations shown.
> Did I make something wrong ?
> (For info I run my tests with groovy 1.7.8)
>
> Thanks in advance for any advice
>
>
>
> --
> View this message in context:
> http://groovy.329449.n5.nabble.com/GroovyASTTransformation-tp4328632p4328632.html
> Sent from the groovy - user mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email
>
>
>

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

   http://xircles.codehaus.org/manage_email





--
Guillaume Laforge
Groovy Project Manager
Head of Groovy Development at SpringSource
http://www.springsource.com/g2one
Russel Winder | 2 May 2011 12:52
Picon
Gravatar

[groovy-user] JSR166 artefacts

Prompted by a request from Alex Tkachman, I have added javadoc artefacts
and sourcecode artefacts for all the binary artefacts published via the
jsr166-mirror project at Codehaus.  The artefacts are still all snapshot
ones for now, I am discussing with Doug Lea how best to formally publish
so we can get artefacts into the main Codehaus repository and thence the
Maven repository. 
--

-- 
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder <at> ekiga.net
41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@...
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder
Alex Tkachman | 2 May 2011 13:09
Picon

Re: [groovy-user] JSR166 artefacts

Thanks a lot, Russel. It works perfectly.

On Mon, May 2, 2011 at 12:52 PM, Russel Winder <russel@...> wrote:
> Prompted by a request from Alex Tkachman, I have added javadoc artefacts
> and sourcecode artefacts for all the binary artefacts published via the
> jsr166-mirror project at Codehaus.  The artefacts are still all snapshot
> ones for now, I am discussing with Doug Lea how best to formally publish
> so we can get artefacts into the main Codehaus repository and thence the
> Maven repository.
> --
> Russel.
> =============================================================================
> Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@...
> 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@....uk
> London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder
>

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

    http://xircles.codehaus.org/manage_email


Gmane