Return-Path: Delivered-To: apmail-maven-archiva-dev-archive@locus.apache.org Received: (qmail 621 invoked from network); 28 Feb 2008 16:46:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 28 Feb 2008 16:46:42 -0000 Received: (qmail 54504 invoked by uid 500); 28 Feb 2008 16:46:37 -0000 Delivered-To: apmail-maven-archiva-dev-archive@maven.apache.org Received: (qmail 54468 invoked by uid 500); 28 Feb 2008 16:46:37 -0000 Mailing-List: contact archiva-dev-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: archiva-dev@maven.apache.org Delivered-To: mailing list archiva-dev@maven.apache.org Received: (qmail 54459 invoked by uid 99); 28 Feb 2008 16:46:37 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 28 Feb 2008 08:46:37 -0800 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of nicolas.deloof@gmail.com designates 66.249.92.173 as permitted sender) Received: from [66.249.92.173] (HELO ug-out-1314.google.com) (66.249.92.173) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 28 Feb 2008 16:46:04 +0000 Received: by ug-out-1314.google.com with SMTP id a2so404134ugf.48 for ; Thu, 28 Feb 2008 08:46:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:references:x-google-sender-auth; bh=Kjx2Pp+DlB+z9GMD3GqvNR/99X4ZtlPagcHnRoxvUEM=; b=ncC59EF9zDOlRb2KK56u8eRPKVAR03uYLPpf4Nbqq8GHKLL8slnzeK/v/T4FbXue2OLmbKoUmGr2GOh7UT13JGFPrG30kd5QTYA43sP0Y+G477OPKUhqZ20qX9GC4SasdVkZz14L/nccldKo05RPPc3GXSGCak134kd8C/9PdUc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:references:x-google-sender-auth; b=wr8fj+rGbX4yYHZ1v7/8IICbtIq6el2aqd0LwKTgTRyRTD0tk+ADP0cYUhwQkhk4JN+0PIStTAcDzsAadvhhi8Ad3SOm9H1G4DopYs7DM+K/mB0moj6ApaQekSqSxeRuKThoDn5uBWPGo2/1ZZanUvcIR0tNKb2f1qS39v6Lr+g= Received: by 10.78.106.3 with SMTP id e3mr8764472huc.51.1204217171302; Thu, 28 Feb 2008 08:46:11 -0800 (PST) Received: by 10.78.136.1 with HTTP; Thu, 28 Feb 2008 08:46:11 -0800 (PST) Message-ID: <4c39e3030802280846v39d5f330j2933747f911da19@mail.gmail.com> Date: Thu, 28 Feb 2008 17:46:11 +0100 From: "nicolas de loof" Sender: nicolas.deloof@gmail.com To: archiva-dev@maven.apache.org Subject: Re: from plexus to spring... In-Reply-To: <4c39e3030802280823v44b68874lc38d7cedfdbffdcf@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_19172_6768764.1204217171292" References: <4c39e3030802250137q47fb48c1wf86c50f93528e84e@mail.gmail.com> <47C31B15.8010208@gmail.com> <4c39e3030802251322o42cb4360ve1ff506e37ebc8b0@mail.gmail.com> <47C39864.60405@erdfelt.com> <4c39e3030802260547u2733b980kf6540ced7ea025c@mail.gmail.com> <4c39e3030802270748n6ece26e5mcd7225a56fbf3b24@mail.gmail.com> <4c39e3030802270856k11c3970ei13b894c52d170519@mail.gmail.com> <4c39e3030802280729xca66393pbca89655c5e8c492@mail.gmail.com> <4c39e3030802280823v44b68874lc38d7cedfdbffdcf@mail.gmail.com> X-Google-Sender-Auth: 97762a1e1433a974 X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_19172_6768764.1204217171292 Content-Type: multipart/alternative; boundary="----=_Part_19173_23537228.1204217171292" ------=_Part_19173_23537228.1204217171292 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline That beeing said, with xwork xml files converted I can start archiva and register my admin account RUNNING ON SPRING ! Hey Rahul, seems you can start using plexus-spring on Continuum ! Nicolas 2008/2/28, nicolas de loof : > > Support for plexus to Properties added in plexus-spring, > > Now have the following error when first access to /archiva webapp : > > Caused by: java.lang.ClassNotFoundException: > redbackEnvironmentCheckInterceptor > at org.apache.catalina.loader.WebappClassLoader.loadClass( > WebappClassLoader.java:1352) > at org.apache.catalina.loader.WebappClassLoader.loadClass( > WebappClassLoader.java:1198) > at com.opensymphony.util.ClassLoaderUtil.loadClass( > ClassLoaderUtil.java:104) > at com.opensymphony.xwork.ObjectFactory.getClassInstance( > ObjectFactory.java:88) > at com.opensymphony.xwork.spring.SpringObjectFactory.getClassInstance( > SpringObjectFactory.java:175) > at com.opensymphony.xwork.spring.SpringObjectFactory.buildBean( > SpringObjectFactory.java:116) > > > The expected component is declared in > redback-xwork-integration-1.0-alpha-4.jar : > > > com.opensymphony.xwork.interceptor.Interceptor > redbackForceAdminUserInterceptor > ... > > Using the convention used to convert plexus rold+hint to spring IDs, this > result in a spring bean > id="interceptor#redbackForceAdminUserInterceptor". > > Editing xwork-security to use the expected IDs is not a valid solution as > this file comes from the war overlay. > > Any suggestion ? > > Nicolas. > > > > 2008/2/28, nicolas de loof : > > > > PlexusConfiguration support is now fixed. > > > > archiva-configuration tests pass with no change required, except : > > > > PlexusTestCase --> PlexusInSpringTestCase > > add getSpringConfigLocation() to return path to the new > > spring-context.xml test resource > > > > [INFO] > > ------------------------------------------------------------------------ > > [INFO] BUILD SUCCESSFUL > > [INFO] > > ------------------------------------------------------------------------ > > > > I've also created a PlexusWebApplicationContext and tried to start > > archiva webapp with spring... but this is not so easy : > > > > change webwork.properties for : webwork.objectFactory = spring > > change web.xml to remove PlexusLifecycleListener > > use spring applicationContext to expose the PlexusContainerAdapter as > > "webwork.plexus.container" > > > > The web application starts and initialize many beans, but fails during > > security framework setup : > > > > "The JdoFactory property 'org.jpox.rdbms.dateTimezone' MUST BE Set to > > 'JDK_DEFAULT_TIMEZONE' in order for jpox and JdoKeyManager to operate > > correctly." > > > > The AbstractConfigurableJdoFactory requires conversion from plexus > > elements to Properties... > > > > > > Nicolas. > > > > > > > > 2008/2/27, nicolas de loof : > > > > > > I just committed partial support for PlexusConfiguration : > > > > > > - as XML validation is disabled the XML configuration doesn't require > > > to be in a CDATA section > > > - the namespaceHandler detects structured configuration and creates a > > > DomPlexusConfiguration for it. > > > - Still have to implement DomPlexusConfiguration as > > > XmlPlexusConfiguration requires Xpp3Dom. > > > > > > Still some work on this feature and I expect to pass > > > archiva-configuration tests. > > > > > > Nico. > > > > > > > > > 2008/2/27, nicolas de loof : > > > > > > > > I've solved the main issues, added some tiny doc and unit tests. > > > > > > > > Still early alpha code but now stable and ready for review if you > > > > want to test it on Continuum. > > > > > > > > Some tests (like DefaultPathParserTest) migrate succesfully to > > > > spring context execution using the PlexusInSpringTestCase without any > > > > change. > > > > > > > > Many other archiva tests fails as the XSLT translation cannot > > > > convert XML formated "configuration" to be injected in > > > > CommonsConfigurationRegistry as a PlexusConfiguration : > > > > > > > > > > > > org.codehaus.plexus.registry.Registry > > > > configured > > > > org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry > > > > > > > > > > > > > > > > > > > > > > > config-name="org.apache.maven.archiva" config-at=" > > > > org.apache.maven.archiva"/> > > > > > > > > > > > > > > > > > > > > The current stylesheet converts such to a blank > > > > value. > > > > > > > > To support such configuration, we need > > > > > > > > 1. a String2PlexusConfiguration PropertyEditor (maybe not trivial, > > > > but should be possible) > > > > 2. a XSL way to store the configuration child nodes as XML > > > > attributes. > > > > > > > > I'm a XSL newbee so have no idea how to output the current node and > > > > all it's children as a text content. > > > > I've tested but without the expected result. > > > > > > > > > > > > I also tried to set the configuration value as a nested CDATA > > > > content, but cannot find how to create the plexus:configuration content as > > > > as CDATA element. > > > cdata-section-elements="plexus:configuration"> didn't fix this. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 2008/2/26, nicolas de loof : > > > > > > > > > > For your information, plexus-spring no handle plexus requirement > > > > > without filed-name set. > > > > > > > > > > The -Dplexus-spring.debug=true option can be used to dump the > > > > > translated spring XML (using dom4j) > > > > > > > > > > PlexusInSpringTestCase as been used as replacement for > > > > > PlexusTestCase in archiva-policies with no other change required in the test > > > > > class (only a new spring context file required to declare the LoggerManager) > > > > > > > > > > Some debugging logs have been added to trace the filed-injection > > > > > and dependencies resolution. > > > > > > > > > > > > > > > .. but still not ready as > > > > > CacheFailuresTransferTest.testGetWithCacheFailuresOff pass run > > > > > alone, but not if ran after testGetWithCacheFailuresOn! > > > > > Seems there is some incomplete support on context cleanup / > > > > > dispose > > > > > > > > > > Please be patient, Rahul ;-) > > > > > > > > > > Nico. > > > > > > > > > > > > > > > > > > > > 2008/2/26, Joakim Erdfelt : > > > > > > > > > > > > nicolas, > > > > > > > > > > > > This is way cool! > > > > > > A very slick way of helping the transition. > > > > > > I'm looking forward to some free time to dive into it. > > > > > > > > > > > > > > > > > > - Joakim > > > > > > > > > > > > > > > > > > > > > > > > nicolas de loof wrote: > > > > > > > Hi Rahul, > > > > > > > > > > > > > > Thanks for yout interest for this plexus-to-spring migration > > > > > > helper. > > > > > > > The code is still early experimental and requires some more > > > > > > testing : it > > > > > > > only has been tested on 2 archiva testcases and requires many > > > > > > fixes and > > > > > > > testcases to get stable. > > > > > > > > > > > > > > Please give me one week to test it more, add debugging logs > > > > > > and better error > > > > > > > handling / reporting : The current code is not really easy to > > > > > > debug when > > > > > > > some unexpected IoC occur... I also may improve support for > > > > > > plexus lifecycle > > > > > > > and specificities, as long as I discover requirements from > > > > > > archiva codebase. > > > > > > > > > > > > > > It is allready isolated from archiva for reuse, and can move > > > > > > to plexus when > > > > > > > ready (I've no access to plexus svn). > > > > > > > > > > > > > > I promise to inform you about progress ;-) > > > > > > > > > > > > > > Nicolas. > > > > > > > > > > > > > > 2008/2/25, Rahul Thakur : > > > > > > > > > > > > > >> Hi Nicolas, > > > > > > >> > > > > > > >> Sorry, I have looked at the recent updates to the code, hence > > > > > > my > > > > > > >> question. Is this 'ready' enough to be used outside Archiva? > > > > > > I'd like to > > > > > > >> integrate this into Continuum. > > > > > > >> > > > > > > >> I think it might make sense to have this module in Plexus SVN > > > > > > repo - wdyt? > > > > > > >> > > > > > > >> Good stuff! > > > > > > >> > > > > > > >> Cheers, > > > > > > >> Rahul > > > > > > >> > > > > > > >> nicolas de loof wrote: > > > > > > >> > > > > > > >>> Hello, > > > > > > >>> > > > > > > >>> I've repackaged and improved the spring support for plexus > > > > > > components in > > > > > > >>> > > > > > > >> a > > > > > > >> > > > > > > >>> dedicated poject > > > > > > >>> --> > > > > > > >>> > > > > > > >>> > > > > > > >> > > > > > > https://svn.apache.org/repos/asf/maven/archiva/branches/springy/plexus-spring/ > > > > > > >> > > > > > > >>> This new module provides runtime translation from plexus > > > > > > component > > > > > > >>> descriptors to a Spring XML context, using a simple XSL file > > > > > > and a > > > > > > >>> > > > > > > >> custom > > > > > > >> > > > > > > >>> ApplicationContext. Any existing plexus jars can then be > > > > > > used in a > > > > > > >>> > > > > > > >> spring > > > > > > >> > > > > > > >>> context. > > > > > > >>> > > > > > > >>> It defines a custom spring-namespace. Under the > > > > > > hood a custom > > > > > > >>> FactoryBean handles plexus components field-injection and > > > > > > (some) > > > > > > >>> > > > > > > >> lifecycle > > > > > > >> > > > > > > >>> interfaces. As I discover plexus features by testing on > > > > > > archiva, I'd be > > > > > > >>> pleased to get more infos on plexus IoC specificities. > > > > > > >>> > > > > > > >>> It also provides a PlexusInSpringTestCase that is a > > > > > > replacement class > > > > > > >>> > > > > > > >> for > > > > > > >> > > > > > > >>> PlexusTestCase, providing equivalent methods and behavior. > > > > > > >>> > > > > > > >>> I've applied this (in springy branch) on archiva-policies > > > > > > and > > > > > > >>> > > > > > > >> archiva-proxy > > > > > > >> > > > > > > >>> (with some test failures in latest I have to investigate) > > > > > > >>> > > > > > > >>> On this basis and with the required improvements, I thing > > > > > > this is a nice > > > > > > >>> > > > > > > >> way > > > > > > >> > > > > > > >>> to move archiva (or other plexus-based app) to spring and > > > > > > then gradually > > > > > > >>> refactor plexus components, either using Spring annotation > > > > > > or XML > > > > > > >>> > > > > > > >> context > > > > > > >> > > > > > > >>> files (my +1 for context files). > > > > > > >>> > > > > > > >>> Nicolas. > > > > > > >>> > > > > > > >>> > > > > > > >>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------=_Part_19173_23537228.1204217171292 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline That beeing said, with xwork xml files converted I can start archiva and register my admin account RUNNING ON SPRING !

Hey Rahul, seems you can start using plexus-spring on Continuum !

Nicolas


2008/2/28, nicolas de loof <nicolas@apache.org>:
Support for plexus <property> to Properties added in plexus-spring,

Now have the following error when first access to /archiva webapp :

Caused by: java.lang.ClassNotFoundException: redbackEnvironmentCheckInterceptor
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
    at com.opensymphony.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:104)
    at com.opensymphony.xwork.ObjectFactory.getClassInstance(ObjectFactory.java:88)
    at com.opensymphony.xwork.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:175)
    at com.opensymphony.xwork.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:116)


The expected component is declared in redback-xwork-integration-1.0-alpha-4.jar :

 <component>
      <role>com.opensymphony.xwork.interceptor.Interceptor</role>
      <role-hint>redbackForceAdminUserInterceptor</role-hint>
      ...

Using the convention used to convert plexus rold+hint to spring IDs, this result in a spring bean
id="interceptor#redbackForceAdminUserInterceptor".

Editing xwork-security to use the expected IDs is not a valid solution as this file comes from the war overlay.

Any suggestion ?

Nicolas.



2008/2/28, nicolas de loof <nicolas@apache.org>:
PlexusConfiguration support is now fixed.

archiva-configuration tests pass with no change required, except :

PlexusTestCase --> PlexusInSpringTestCase
add getSpringConfigLocation() to return path to the new spring-context.xml test resource

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

I've also created a PlexusWebApplicationContext and tried to start archiva webapp with spring... but this is not so easy :

  change webwork.properties for : webwork.objectFactory = spring
  change web.xml to remove PlexusLifecycleListener
  use spring applicationContext to expose the PlexusContainerAdapter as "webwork.plexus.container"

The web application starts and initialize many beans, but fails during security framework setup :

"The JdoFactory property 'org.jpox.rdbms.dateTimezone' MUST BE Set to 'JDK_DEFAULT_TIMEZONE' in order for jpox and JdoKeyManager to operate correctly."

The AbstractConfigurableJdoFactory requires conversion from plexus <configuration> elements to Properties...


Nicolas.




2008/2/27, nicolas de loof <nicolas@apache.org>:
I just committed partial support for PlexusConfiguration :

- as XML validation is disabled the XML configuration doesn't require to be in a CDATA section
- the namespaceHandler detects structured configuration and creates a DomPlexusConfiguration for it.
- Still have to implement DomPlexusConfiguration  as XmlPlexusConfiguration requires Xpp3Dom.

Still some work on this feature and I expect to pass archiva-configuration tests.

Nico.


2008/2/27, nicolas de loof <nicolas@apache.org>:
I've solved the main issues, added some tiny doc and unit tests.

Still early alpha code but now stable and ready for review if you want to test it on Continuum.

Some tests (like DefaultPathParserTest) migrate succesfully to spring context execution using the PlexusInSpringTestCase without any change.

Many other archiva tests fails as the XSLT translation cannot convert XML formated "configuration" to be injected in CommonsConfigurationRegistry as a PlexusConfiguration :

    <component>
      <role>org.codehaus.plexus.registry.Registry</role>
      <role-hint>configured</role-hint>      <implementation>org.codehaus.plexus.registry.commons.CommonsConfigurationRegistry</implementation>
      <configuration>
        <properties>
          <system/>
          <xml fileName="${basedir}/src/test/conf/repository-manager.xml"
               config-name="org.apache.maven.archiva" config-at="org.apache.maven.archiva"/>
        </properties>
      </configuration>
    </component>

The current stylesheet converts such <configuration> to a blank value.

To support such configuration, we need

1.  a String2PlexusConfiguration PropertyEditor (maybe not  trivial, but should be possible)
2.  a XSL way to store the configuration child nodes as XML attributes.

I'm a XSL newbee so have no idea how to output the current node and all it's children as a text content.
I've tested <xsl:copy-of slect="."> but without the expected result.

I also tried to set the configuration value as a nested CDATA content, but cannot find how to create the plexus:configuration content as as CDATA element.  <xsl:output cdata-section-elements="plexus:configuration"> didn't fix this.








2008/2/26, nicolas de loof <nicolas@apache.org>:
For your information, plexus-spring no handle plexus requirement without filed-name set.

The -Dplexus-spring.debug=true option can be used to dump the translated spring XML (using dom4j)

PlexusInSpringTestCase as been used as replacement for PlexusTestCase in archiva-policies with no other change required in the test class (only a new spring context file required to declare the LoggerManager)

Some debugging logs have been added to trace the filed-injection and dependencies resolution.


.. but still not ready as CacheFailuresTransferTest.testGetWithCacheFailuresOff pass run alone, but not if ran after testGetWithCacheFailuresOn!
Seems there is some incomplete support on context cleanup / dispose

Please be patient, Rahul ;-)

Nico.



2008/2/26, Joakim Erdfelt <joakim@erdfelt.com>:
nicolas,

This is way cool!
A very slick way of helping the transition.
I'm looking forward to some free time to dive into it.


- Joakim



nicolas de loof wrote:
> Hi Rahul,
>
> Thanks for yout interest for this plexus-to-spring migration helper.
> The code is still early experimental and requires some more testing : it
> only has been tested on 2 archiva testcases and requires many fixes and
> testcases to get stable.
>
> Please give me one week to test it more, add debugging logs and better error
> handling / reporting : The current code is not really easy to debug when
> some unexpected IoC occur... I also may improve support for plexus lifecycle
> and specificities, as long as I discover requirements from archiva codebase.
>
> It is allready isolated from archiva for reuse, and can move to plexus when
> ready (I've no access to plexus svn).
>
> I promise to inform you about progress ;-)
>
> Nicolas.
>
> 2008/2/25, Rahul Thakur <rahul.thakur.xdev@gmail.com>:
>
>> Hi Nicolas,
>>
>> Sorry, I have looked at the recent updates to the code, hence my
>> question. Is this 'ready' enough to be used outside Archiva? I'd like to
>> integrate this into Continuum.
>>
>> I think it might make sense to have this module in Plexus SVN repo - wdyt?
>>
>> Good stuff!
>>
>> Cheers,
>> Rahul
>>
>> nicolas de loof wrote:
>>
>>> Hello,
>>>
>>> I've repackaged and improved the spring support for plexus components in
>>>
>> a
>>
>>> dedicated poject
>>> -->
>>>
>>>
>> https://svn.apache.org/repos/asf/maven/archiva/branches/springy/plexus-spring/
>>
>>> This new module provides runtime translation from plexus component
>>> descriptors to a Spring XML context, using a simple XSL file and a
>>>
>> custom
>>
>>> ApplicationContext. Any existing plexus jars can then be used in a
>>>
>> spring
>>
>>> context.
>>>
>>> It defines a custom <plexus:> spring-namespace. Under the hood a custom
>>> FactoryBean handles plexus components field-injection and (some)
>>>
>> lifecycle
>>
>>> interfaces. As I discover plexus features by testing on archiva, I'd be
>>> pleased to get more infos on plexus IoC specificities.
>>>
>>> It also provides a PlexusInSpringTestCase that is a replacement class
>>>
>> for
>>
>>> PlexusTestCase, providing equivalent methods and behavior.
>>>
>>> I've applied this (in springy branch) on archiva-policies and
>>>
>> archiva-proxy
>>
>>> (with some test failures in latest I have to investigate)
>>>
>>> On this basis and with the required improvements, I thing this is a nice
>>>
>> way
>>
>>> to move archiva (or other plexus-based app) to spring and then gradually
>>> refactor plexus components, either using Spring annotation or XML
>>>
>> context
>>
>>> files (my +1 for context files).
>>>
>>> Nicolas.
>>>
>>>
>>>
>
>







------=_Part_19173_23537228.1204217171292-- ------=_Part_19172_6768764.1204217171292--