mcconnell    2002/09/14 17:19:37

  Modified:    assembly build.xml default.properties
               assembly/src/java/org/apache/excalibur/merlin/assembly
                        ContainerManager.java TypeRegistry.java
                        UnresolvedProviderException.java
               assembly/src/java/org/apache/excalibur/merlin/model/verifier
                        AssemblyVerifier.java MetaDataVerifier.java
               assembly/src/java/org/apache/excalibur/merlin/resource
                        DefaultComponentManager.java DefaultManager.java
                        DefaultServiceManager.java DeploymentHelper.java
               assembly/src/java/org/apache/excalibur/merlin/service
                        DefaultRegistry.java ServiceURLConnection.java
  Removed:     assembly/lib corbaloc-1.0.jar openorb-1.3.0.jar orb-2.0.jar
               assembly/src/etc activation.mf
               assembly/src/etc/activator client.xml server.xml
               assembly/src/idl demo.idl
               assembly/src/java/org/apache/excalibur/merlin/activation
                        ActivationException.java
                        ActivationRuntimeException.java
                        DefaultRemoteResource.java
                        DefaultRemoteResourceFactory.java
                        DefaultRemoteResourceFactory.xinfo
                        DefaultServantActivator.java Directory.java
                        Directory.xinfo RemoteResource.java
                        RemoteResourceFactory.java package.html
               assembly/src/java/org/apache/excalibur/playground/activation
                        ActivationClient.java ActivationClient.xinfo
                        TestCase.xservice TestServant.java
                        TestServant.xinfo
               assembly/tools openorb_tools-1.3.0.jar
  Log:
  Removal of CORBA depedencies from the Merlin 2 project (these are isolated
  under the activation package and sufficient progress has been achieved in the 
core
  to be able to introduce this as a pluggable extension.
  
  Revision  Changes    Path
  1.65      +238 -405  jakarta-avalon-excalibur/assembly/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/build.xml,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- build.xml 13 Sep 2002 17:43:13 -0000      1.64
  +++ build.xml 15 Sep 2002 00:19:34 -0000      1.65
  @@ -2,447 +2,309 @@
   
   <project name="Merlin 2" default="main" basedir=".">
   
  -    <property file="${user.home}/build.properties"/>
  -    <property file="${basedir}/../ant.properties"/>
  -    <property file="${basedir}/ant.properties"/>
  -    <property file="${user.home}/.ant.properties"/>
  -    <property file="${basedir}/../default.properties"/>
  -    <property file="${basedir}/default.properties"/>
  -
  -    <!-- Classpath for product -->
  -    <path id="project.class.path">
  -      <pathelement location="${logkit.jar}"/>
  -      <pathelement location="${avalon-framework.jar}"/>
  -      <pathelement location="${excalibur-i18n.jar}"/>
  -      <pathelement location="${excalibur-configuration.jar}"/>
  -      <pathelement location="${excalibur-container.jar}"/>
  -      <pathelement location="${excalibur-meta.jar}"/>
  -      <pathelement location="${excalibur-extension.jar}"/>
  -      <pathelement location="${excalibur-logger.jar}"/>
  -      <pathelement location="${excalibur-event.jar}"/>
  -      <pathelement location="${build.classes}"/>
  -      <pathelement location="${checkstyle.jar}"/>
  -      <pathelement location="${xml-apis.jar}"/>
  -      <pathelement location="${openorb.jar}"/>
  -      <pathelement location="${idl-compiler.jar}"/>
  -      <pathelement location="${orb.jar}"/>
  -      <pathelement location="${corbaloc.jar}"/>
  -      <pathelement path="${java.class.path}"/>
  -    </path>
  -
  -    <path id="tools.class.path">
  -        <pathelement location="${junit.jar}"/>
  -    </path>
  -
  -    <path id="test.class.path">
  -        <pathelement location="${build.testclasses}"/>
  -        <pathelement location="${junit.jar}"/>
  -        <path refid="project.class.path"/>
  -    </path>
  -    <property name="cp" refid="test.class.path"/>
  -
  -    <target name="main" depends="deploy" description="Build the project"/>
  -    <target name="rebuild" depends="clean,main" description="Rebuild the 
project"/>
  -
  -    <target name="dependencies" description="Check dependencies" 
unless="skip.dependencies">
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkCommon"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkLogkit"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkFramework"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkI18N"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkConfiguration"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkContainer"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkMeta"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkExtension"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkLogger"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkEvent"/>
  -
  -        <!-- secondary depedencies -->
  -
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkUtil"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkCollections"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkThreadcontext"/>
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkConcurrent"/>
  -
  -    </target>
  -
  -    <target name="dependencies-test" depends="dist-jar, dependencies"
  -        description="Check unit test dependencies" 
unless="skip.dependencies">
  -        <!-- Need the jar to prevent recursive deps. -->
  -
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkJUnit"/>
  -    </target>
  -
  -    <target name="deploy" depends="jar">
  -       <mkdir dir="${extension.dir}"/>
  -       <copy todir="${extension.dir}" file="${build.lib}/${activation.jar}"/>
  -       <copy todir="${extension.dir}" file="${build.lib}/${jar.name}"/>
  -       <copy todir="${extension.dir}" file="${logkit.jar}"/>
  -       <copy todir="${extension.dir}" file="${avalon-framework.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-i18n.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-container.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-configuration.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-extension.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-logger.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-meta.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-event.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-collections.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-concurrent.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-threadcontext.jar}"/>
  -       <copy todir="${extension.dir}" file="${excalibur-util.jar}"/>
  -       <copy todir="${extension.dir}" preservelastmodified="true">
  -         <fileset dir="${lib.dir}">
  -           <include name="xerces-2.0.1.jar"/>
  -           <include name="xml-apis.jar"/>
  -           <include name="xalan-2.3.1.jar"/>
  -           <include name="openorb*.jar"/>
  -           <include name="orb*.jar"/>
  -           <include name="corbaloc*.jar"/>
  -         </fileset>
  -       </copy>
  -    </target>
  -
  -  <target name="idl.context" depends="dependencies,orb.update">
  -    <mkdir dir="${build.dir}/src"/>
  -    <uptodate property="idl.modified" targetfile="${idl.dir}/demo.idl">
  -      <srcfiles dir="${build.dir}/src">
  -       <include name="**/*"/>
  -      </srcfiles>
  -    </uptodate>
  -  </target>
  -
  -  <!-- gump debugging -->
  -  <target name="idl.info" depends="idl.context">
  -    <available file="${idl-compiler.jar}" property="idl.available"/>
  -    <echo message="The jar file ${idl-compiler.jar} exists : 
${idl.available}"/>
  -  </target>
  -
  -  <target name="idl" depends="idl.info,idl.context" if="idl.modified">
  -      <echo message="Generating demo idl."/>
  -     <java failonerror="true" classname="${idl.class}" fork="true">
  -          <classpath>
  -             <path refid="project.class.path"/>
  -         </classpath>
  -         <arg line="-silence"/>
  -         <arg line="-native URL java.net.URL"/>
  -         <arg line="-d ${build.dir}/src"/>
  -         <arg line="-I ${idl.dir}"/>
  -         <arg line="demo.idl" />
  -      </java>
  +  <property file="${user.home}/build.properties"/>
  +  <property file="${basedir}/../ant.properties"/>
  +  <property file="${basedir}/ant.properties"/>
  +  <property file="${user.home}/.ant.properties"/>
  +  <property file="${basedir}/../default.properties"/>
  +  <property file="${basedir}/default.properties"/>
  +
  +  <!-- Classpath for product -->
  +  <path id="project.class.path">
  +    <pathelement location="${logkit.jar}"/>
  +    <pathelement location="${avalon-framework.jar}"/>
  +    <pathelement location="${excalibur-i18n.jar}"/>
  +    <pathelement location="${excalibur-configuration.jar}"/>
  +    <pathelement location="${excalibur-container.jar}"/>
  +    <pathelement location="${excalibur-meta.jar}"/>
  +    <pathelement location="${excalibur-extension.jar}"/>
  +    <pathelement location="${excalibur-logger.jar}"/>
  +    <pathelement location="${excalibur-event.jar}"/>
  +    <pathelement location="${build.classes}"/>
  +    <pathelement location="${checkstyle.jar}"/>
  +    <pathelement location="${xml-apis.jar}"/>
  +    <pathelement path="${java.class.path}"/>
  +  </path>
  +
  +  <target name="main" depends="deploy" description="Build the project"/>
  +  <target name="rebuild" depends="clean,main" description="Rebuild the 
project"/>
  +  <target name="all" depends="rebuild,docs" description="Rebuild the 
project"/>
  +
  +  <target name="dependencies" description="Check dependencies" 
unless="skip.dependencies">
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkCommon"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkLogkit"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkFramework"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkI18N"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkConfiguration"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkContainer"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkMeta"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkExtension"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkLogger"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkEvent"/>
  +
  +    <!-- secondary depedencies -->
  +
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkUtil"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkCollections"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkThreadcontext"/>
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkConcurrent"/>
  +
  +  </target>
  +
  +  <target name="dependencies-test" depends="dist-jar, dependencies"
  +      description="Check unit test dependencies" unless="skip.dependencies">
  +      <!-- Need the jar to prevent recursive deps. -->
  +
  +    <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkJUnit"/>
  +  </target>
  +
  +  <target name="deploy" depends="jar">
  +     <mkdir dir="${extension.dir}"/>
  +     <copy todir="${extension.dir}" file="${build.lib}/${jar.name}"/>
  +     <copy todir="${extension.dir}" file="${logkit.jar}"/>
  +     <copy todir="${extension.dir}" file="${avalon-framework.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-i18n.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-container.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-configuration.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-extension.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-logger.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-meta.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-event.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-collections.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-concurrent.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-threadcontext.jar}"/>
  +     <copy todir="${extension.dir}" file="${excalibur-util.jar}"/>
  +     <copy todir="${extension.dir}" preservelastmodified="true">
  +       <fileset dir="${lib.dir}">
  +         <include name="xerces-2.0.1.jar"/>
  +         <include name="xml-apis.jar"/>
  +         <include name="xalan-2.3.1.jar"/>
  +       </fileset>
  +     </copy>
     </target>
   
     <!-- Compiles the source code -->
  -  <target name="compile" depends="idl,corbaloc.update" 
  +  <target name="compile" depends="dependencies" 
          description="Compiles the source code">
   
  -        <mkdir dir="${build.classes}"/>
  +    <mkdir dir="${build.classes}"/>
   
  -        <!-- Compile all classes excluding the tests. -->
  -        <javac srcdir="${java.dir}"
  -            destdir="${build.classes}"
  -            debug="${build.debug}"
  -            optimize="${build.optimize}"
  -            deprecation="${build.deprecation}"
  -            target="1.2">
  -          <src path="${java.dir}" />
  -          <src path="${build.dir}/src" />
  -          <classpath refid="project.class.path" />
  -          <include name="**/*.java"/>
  -        </javac>
  -
  -        <!-- copy resources to same location as .class files -->
  -        <copy todir="${build.classes}">
  -            <fileset dir="${java.dir}">
  -                <exclude name="**/*.java"/>
  -                <exclude name="**/package.html"/>
  -            </fileset>
  -        </copy>
  -
  -  </target>
  -
  -
  -  <!-- Compiles the unit test source code -->
  -  <target name="compile-test" depends="compile, dependencies-test" 
  -          description="Compiles the source code">
  -        <mkdir dir="${build.testsrc}"/>
  -
  -        <!-- Copy over all of the tests applying test filters -->
  -        <copy todir="${build.testsrc}">
  -            <fileset dir="${test.dir}"/>
  -        </copy>
  -
  -        <mkdir dir="${build.testclasses}"/>
  -
  -        <!-- Compile all test classes. -->
  -        <javac srcdir="${build.testsrc}"
  -            destdir="${build.testclasses}"
  -            debug="${build.debug}"
  -            optimize="${build.optimize}"
  -            deprecation="${build.deprecation}"
  -            target="1.2">
  -            <classpath refid="test.class.path" />
  -            <include name="**/*.java"/>
  -        </javac>
  -
  -        <copy todir="${build.testclasses}">
  -            <fileset dir="${test.dir}">
  -                <exclude name="**/*.java"/>
  -                <exclude name="**/package.html"/>
  -            </fileset>
  -        </copy>
  +    <!-- Compile all classes excluding the tests. -->
  +    <javac srcdir="${java.dir}"
  +       destdir="${build.classes}"
  +       debug="${build.debug}"
  +       optimize="${build.optimize}"
  +       deprecation="${build.deprecation}"
  +       target="1.2">
  +      <src path="${java.dir}" />
  +      <!--<src path="${build.dir}/src" />-->
  +      <classpath refid="project.class.path" />
  +      <include name="**/*.java"/>
  +    </javac>
  +
  +    <!-- copy resources to same location as .class files -->
  +    <copy todir="${build.classes}">
  +      <fileset dir="${java.dir}">
  +        <exclude name="**/*.java"/>
  +        <exclude name="**/package.html"/>
  +      </fileset>
  +    </copy>
   
     </target>
   
     <!-- Copies and filters the license. Used by jar and dist -->
     <target name="prepare-conf">
  -        <mkdir dir="${build.conf}"/>
  -        <copy todir="${build.conf}" flatten="true">
  -            <fileset dir="../" includes="LICENSE.txt"/>
  -            <filterset>
  -                <filter token="year" value="${year}"/>
  -            </filterset>
  -        </copy>
  +    <mkdir dir="${build.conf}"/>
  +    <copy todir="${build.conf}" flatten="true">
  +      <fileset dir="../" includes="LICENSE.txt"/>
  +      <filterset>
  +        <filter token="year" value="${year}"/>
  +      </filterset>
  +   </copy>
     </target>
   
     <!-- Creates all the .jar file -->
     <target name="jar" depends="compile, prepare-conf" description="Generates 
the jar files">
   
  -        <mkdir dir="${build.lib}"/>
  +    <mkdir dir="${build.lib}"/>
   
  -        <jar jarfile="${build.lib}/${jar.name}"
  -            basedir="${build.classes}"
  -            compress="${build.compress}"
  -            manifest="${src.dir}/etc/project.mf">
  -            <exclude name="**/test/**"/>
  -            <exclude name="**/playground/**"/>
  -            <exclude name="**/activation/**"/>
  -            <zipfileset dir="${build.conf}" prefix="META-INF/">
  -                <include name="LICENSE.txt"/>
  -            </zipfileset>
  -        </jar>
  -
  -        <jar jarfile="${build.lib}/${demo.jar}"
  -            basedir="${build.classes}"
  -            compress="${build.compress}"
  -            manifest="${src.dir}/etc/demo.mf">
  -            <exclude name="**/merlin/**"/>
  -            <zipfileset dir="${build.conf}" prefix="META-INF/">
  -                <include name="LICENSE.txt"/>
  -            </zipfileset>
  -        </jar>
  -
  -        <jar jarfile="${build.lib}/${activation.jar}"
  -            basedir="${build.classes}"
  -            compress="${build.compress}"
  -            manifest="${src.dir}/etc/activation.mf">
  -            <include name="**/activation/**"/>
  -            <zipfileset dir="${build.conf}" prefix="META-INF/">
  -                <include name="LICENSE.txt"/>
  -            </zipfileset>
  -        </jar>
  +    <jar jarfile="${build.lib}/${jar.name}"
  +       basedir="${build.classes}"
  +       compress="${build.compress}"
  +       manifest="${src.dir}/etc/project.mf">
  +      <exclude name="**/test/**"/>
  +      <exclude name="**/playground/**"/>
  +      <zipfileset dir="${build.conf}" prefix="META-INF/">
  +        <include name="LICENSE.txt"/>
  +      </zipfileset>
  +    </jar>
  +
  +    <jar jarfile="${build.lib}/${demo.jar}"
  +        basedir="${build.classes}"
  +        compress="${build.compress}"
  +        manifest="${src.dir}/etc/demo.mf">
  +      <exclude name="**/merlin/**"/>
  +      <zipfileset dir="${build.conf}" prefix="META-INF/">
  +         <include name="LICENSE.txt"/>
  +      </zipfileset>
  +    </jar>
   
     </target>
   
     <!-- Creates all the .sar file -->
     <target name="sar" depends="deploy" description="Generates the sar files">
   
  -        <mkdir dir="${build.lib}"/>
  +    <mkdir dir="${build.lib}"/>
   
  -        <jar jarfile="${build.lib}/${sar.name}"
  -            compress="${build.compress}"
  -            manifest="${src.dir}/etc/project.mf">
  -            <zipfileset dir="${build.conf}" prefix="META-INF/">
  -                <include name="LICENSE.txt"/>
  -            </zipfileset>
  -            <zipfileset dir="${src.dir}/etc/conf" prefix="SAR-INF/">
  -                <include name="assembly.xml"/>
  -                <include name="config.xml"/>
  -                <include name="environment.xml"/>
  -            </zipfileset>
  -            <zipfileset dir="${extension.dir}" prefix="SAR-INF/lib">
  -                <include name="*.jar"/>
  -            </zipfileset>
  -        </jar>
  +    <jar jarfile="${build.lib}/${sar.name}"
  +       compress="${build.compress}"
  +       manifest="${src.dir}/etc/project.mf">
  +      <zipfileset dir="${build.conf}" prefix="META-INF/">
  +        <include name="LICENSE.txt"/>
  +      </zipfileset>
  +      <zipfileset dir="${src.dir}/etc/conf" prefix="SAR-INF/">
  +        <include name="assembly.xml"/>
  +        <include name="config.xml"/>
  +        <include name="environment.xml"/>
  +      </zipfileset>
  +      <zipfileset dir="${extension.dir}" prefix="SAR-INF/lib">
  +        <include name="*.jar"/>
  +      </zipfileset>
  +    </jar>
   
     </target>
   
     <!-- Creates all the Javadocs -->
     <target name="javadocs" depends="compile" 
             description="Generates the javadocs" unless="skip.javadocs">
  -        <mkdir dir="${build.javadocs}"/>
  -        <javadoc packagenames="org.apache.excalibur.merlin.*"
  -            sourcepath="${java.dir}"
  -            destdir="${build.javadocs}">
  -            <classpath refid="project.class.path" />
  -            <doclet name="com.sun.tools.doclets.standard.Standard">
  -                <param name="-author"/>
  -                <param name="-version"/>
  -                <param name="-doctitle" value="${Name}"/>
  -                <param name="-windowtitle" value="${Name} API"/>
  -                <param name="-link" 
value="http://java.sun.com/j2se/1.4/docs/api/"/>
  -                <param name="-link" 
value="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/"/>
  -                <param name="-link" 
value="http://jakarta.apache.org/avalon/api/"/>
  -                <param name="-bottom"
  -                    value="&quot;Copyright &#169; ${year} Apache Jakarta 
Project. All Rights Reserved.&quot;"/>
  -            </doclet>
  -        </javadoc>
  -  </target>
  -
  -  <target name="test" depends="compile-test" description="Perform the unit 
tests" unless="skip.tests">
  -
  -        <echo message="Performing Unit Tests" />
  -
  -        <mkdir dir="${build.tests}"/>
  -
  -        <junit fork="true"
  -            haltonfailure="${junit.failonerror}"
  -            printsummary="yes"
  -            dir="${build.tests}">
  -            <classpath refid="test.class.path"/>
  -
  -            <formatter type="xml"/>    <!-- xml reports for junitreport -->
  -            <formatter type="plain" usefile="false"/>  <!-- text reports for 
humans     -->
  -
  -            <batchtest todir="${build.tests}">
  -                <fileset dir="${build.testclasses}">
  -                    <include name="**/test/*TestCase.class"/>
  -                    <exclude name="**/Abstract*"/>
  -                </fileset>
  -            </batchtest>
  -        </junit>
  -
  -  </target>
  -
  -  <target name="test-reports" depends="test" description="Generate Reports 
for the unit tests">
  -
  -        <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkBSF"/>
  -
  -        <mkdir dir="${build.reports}/junit"/>
  -
  -        <junitreport todir="${build.reports}/junit">
  -            <fileset dir="${build.tests}">
  -                <include name="TEST-*.xml"/>
  -            </fileset>
  -            <report format="frames" todir="${build.reports}/junit"/>
  -        </junitreport>
  -
  -        <!-- Clean up the xml reports used by the junitreport task -->
  -        <!--
  -        <delete>
  -            <fileset dir="${build.tests}" includes="TEST-*.xml"/>
  -            <fileset dir="${build.tests}" includes="TESTS-*.xml"/>
  -        </delete>
  -        -->
  -
  +    <mkdir dir="${build.javadocs}"/>
  +    <javadoc packagenames="org.apache.excalibur.merlin.*"
  +       sourcepath="${java.dir}"
  +       destdir="${build.javadocs}">
  +      <classpath refid="project.class.path" />
  +      <doclet name="com.sun.tools.doclets.standard.Standard">
  +        <param name="-author"/>
  +        <param name="-version"/>
  +        <param name="-doctitle" value="${Name}"/>
  +        <param name="-windowtitle" value="${Name} API"/>
  +        <param name="-link" value="http://java.sun.com/j2se/1.4/docs/api/"/>
  +        <param name="-link" 
value="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/"/>
  +        <param name="-link" value="http://jakarta.apache.org/avalon/api/"/>
  +        <param name="-bottom"
  +           value="&quot;Copyright &#169; ${year} Apache Jakarta Project. All 
Rights Reserved.&quot;"/>
  +      </doclet>
  +    </javadoc>
     </target>
   
     <target name="checkstyle" if="do.checkstyle" description="Checkstyle">
   
  -        <!-- this invocation of checkstyle requires that checkstyle be 
downloaded and setup -->
  -        <!-- thats why you are required to define do.checkstyle property to 
generate the report -->
  -        <taskdef name="checkstyle"
  -            classname="com.puppycrawl.tools.checkstyle.CheckStyleTask">
  -            <classpath refid="project.class.path"/>
  -        </taskdef>
  -        <checkstyle
  -            lcurlyType="nl"
  -            lcurlyMethod="nl"
  -            lcurlyOther="nl"
  -            rcurly="ignore"
  -            allowProtected="false"
  -            allowPackage="false"
  -            allowNoAuthor="false"
  -            maxLineLen="250"
  -            maxMethodLen="180"
  -            maxConstructorLen="100"
  -            memberPattern="^m_[a-z][a-zA-Z0-9]*$"
  -            staticPattern="^c_[a-z][a-zA-Z0-9]*$"
  -            constPattern="(^c_[a-z][a-zA-Z0-9]*$)|([A-Z_]*$)"
  -            ignoreImportLen="true"
  -            allowTabs="false"
  -            javadocScope="protected"
  -            ignoreWhitespace="true"
  -            cacheFile="checkstyle.cache"
  -            failOnViolation="false"
  -            ignoreCastWhitespace="true">
  -            <fileset dir="${java.dir}">
  -                <include name="**/*.java"/>
  -            </fileset>
  -            <formatter type="plain"/>
  -            <formatter type="xml" 
toFile="${build.dir}/checkstyle-results.xml"/>
  -        </checkstyle>
  +    <!-- this invocation of checkstyle requires that checkstyle be 
downloaded and setup -->
  +    <!-- thats why you are required to define do.checkstyle property to 
generate the report -->
  +
  +    <taskdef name="checkstyle"
  +       classname="com.puppycrawl.tools.checkstyle.CheckStyleTask">
  +      <classpath refid="project.class.path"/>
  +    </taskdef>
  +    <checkstyle
  +       lcurlyType="nl"
  +       lcurlyMethod="nl"
  +       lcurlyOther="nl"
  +       rcurly="ignore"
  +       allowProtected="false"
  +       allowPackage="false"
  +       allowNoAuthor="false"
  +       maxLineLen="250"
  +       maxMethodLen="180"
  +       maxConstructorLen="100"
  +       memberPattern="^m_[a-z][a-zA-Z0-9]*$"
  +       staticPattern="^c_[a-z][a-zA-Z0-9]*$"
  +       constPattern="(^c_[a-z][a-zA-Z0-9]*$)|([A-Z_]*$)"
  +       ignoreImportLen="true"
  +       allowTabs="false"
  +       javadocScope="protected"
  +       ignoreWhitespace="true"
  +       cacheFile="checkstyle.cache"
  +       failOnViolation="false"
  +       ignoreCastWhitespace="true">
  +      <fileset dir="${java.dir}">
  +        <include name="**/*.java"/>
  +      </fileset>
  +      <formatter type="plain"/>
  +      <formatter type="xml" toFile="${build.dir}/checkstyle-results.xml"/>
  +    </checkstyle>
     </target>
   
     <target name="checkstyle-report"
  -        depends="checkstyle"
  -        if="do.checkstyle"
  -        description="Generate Checkstyle Report">
  -
  -        <mkdir dir="${build.reports}/checkstyle"/>
  -        <property name="checkstyle.pathhack" location="."/>
  -        <style style="${tools.dir}/etc/checkstyle-frames.xsl" 
in="${build.dir}/checkstyle-results.xml"
  -            out="${build.reports}/checkstyle/delete-me.html">
  -            <param name="pathhack" expression="${checkstyle.pathhack}"/>
  -        </style>
  +     depends="checkstyle"
  +     if="do.checkstyle"
  +     description="Generate Checkstyle Report">
  +
  +    <mkdir dir="${build.reports}/checkstyle"/>
  +    <property name="checkstyle.pathhack" location="."/>
  +    <style style="${tools.dir}/etc/checkstyle-frames.xsl" 
in="${build.dir}/checkstyle-results.xml"
  +       out="${build.reports}/checkstyle/delete-me.html">
  +      <param name="pathhack" expression="${checkstyle.pathhack}"/>
  +    </style>
   
     </target>
   
     <!-- Creates the distribution -->
     <target name="dist"
  -        depends="dist-jar, test-reports, checkstyle-report, javadocs"
  -        description="Generates a distribution (jar + javadocs + unit tests + 
checkstyle reports)">
  +     depends="dist-jar, checkstyle-report, javadocs"
  +     description="Generates a distribution (jar + javadocs + unit tests + 
checkstyle reports)">
   
  -        <copy file="${build.conf}/LICENSE.txt" todir="${dist.dir}"/>
  -        <copy file="../KEYS" todir="${dist.dir}"/>
  +    <copy file="${build.conf}/LICENSE.txt" todir="${dist.dir}"/>
  +    <copy file="../KEYS" todir="${dist.dir}"/>
   
  -        <zip zipfile="${dist.dir}/src.zip" compress="false">
  -            <zipfileset dir="src/java"/>
  -        </zip>
  +    <zip zipfile="${dist.dir}/src.zip" compress="false">
  +      <zipfileset dir="src/java"/>
  +    </zip>
   
  -        <mkdir dir="${dist.base}"/>
  +    <mkdir dir="${dist.base}"/>
   
  -        <zip zipfile="${dist.base}/${dist.name}.zip" compress="true">
  -            <zipfileset dir="${dist.dir}" prefix="${dist.name}"/>
  -        </zip>
  +    <zip zipfile="${dist.base}/${dist.name}.zip" compress="true">
  +      <zipfileset dir="${dist.dir}" prefix="${dist.name}"/>
  +    </zip>
   
  -        <delete dir="${dist.dir}" />
  +    <delete dir="${dist.dir}" />
   
     </target>
   
     <!-- Creates a mini jar-only distribution -->
     <target name="dist-jar" depends="jar">
  -        <mkdir dir="${dist.dir}"/>
  -        <copy todir="${dist.dir}">
  -            <fileset dir="${build.lib}">
  -                <include name="*.jar"/>
  -            </fileset>
  -        </copy>
  +    <mkdir dir="${dist.dir}"/>
  +    <copy todir="${dist.dir}">
  +      <fileset dir="${build.lib}">
  +        <include name="*.jar"/>
  +      </fileset>
  +    </copy>
     </target>
   
     <!-- Creates a minimal distribution -->
     <target name="dist.lite"
  -        depends="dist-jar, test, javadocs"
  -        description="Generates a minimal distribution (jar + javadocs)">
  +     depends="dist-jar, javadocs"
  +     description="Generates a minimal distribution (jar + javadocs)">
   
  -        <copy file="../LICENSE.txt" todir="${dist.dir}"/>
  -        <copy file="../KEYS" todir="${dist.dir}"/>
  +    <copy file="../LICENSE.txt" todir="${dist.dir}"/>
  +    <copy file="../KEYS" todir="${dist.dir}"/>
   
     </target>
   
     <target name="docs" depends="javadocs, xdocs" 
  -         description="generates all the Avalon documentation"/>
  +     description="generates all the Avalon documentation"/>
   
     <target name="xdocs" description="generates the xdocs-based documentation">
  -      <ant antfile="${basedir}/../cocoonbuild.xml"/>
  +    <ant antfile="${basedir}/../cocoonbuild.xml"/>
     </target>
   
     <target name="site" depends="javadocs, docs" 
  -           description=" Places Docs ready for hosting on website">
  -        <mkdir dir="../site/dist/docs/${dir-name}"/>
  -        <copy todir="../site/dist/docs/${dir-name}">
  -            <fileset dir="${docs.dir}">
  -                <include name="**"/>
  -            </fileset>
  -        </copy>
  +     description=" Places Docs ready for hosting on website">
  +    <mkdir dir="../site/dist/docs/${dir-name}"/>
  +    <copy todir="../site/dist/docs/${dir-name}">
  +      <fileset dir="${docs.dir}">
  +        <include name="**"/>
  +      </fileset>
  +    </copy>
     </target>
   
     <!-- Cleans up build and distribution directories -->
  @@ -458,38 +320,9 @@
     </target>
   
     <target name="real-clean" depends="clean" 
  -          description="Cleans up the project, including distributions">
  +     description="Cleans up the project, including distributions">
       <delete dir="${dist.base}" />
     </target>
  -
  -  <!--
  -  Update the local copy of the corbaloc resolver.
  -  -->
  -
  -  <target name="corbaloc.context">
  -    <available property="corbaloc.available" 
  -       file="${apps.dir}/enterprise/corbaloc/build/corbaloc-1.0.jar"/>
  -  </target>
  -
  -  <target name="corbaloc.update" depends="corbaloc.context" 
if="corbaloc.available">
  -    <copy toDir="${lib.dir}" 
file="${apps.dir}/enterprise/corbaloc/build/corbaloc-1.0.jar"/>
  -  </target>
  -
  -  <!--
  -  Update the local copy of the ORB.
  -  -->
  -
  -  <target name="orb.context">
  -    <available property="orb.available" 
  -        file="${apps.dir}/enterprise/orb/dist/orb-2.0.jar"/>
  -  </target>
  -
  -  <target name="orb.update" depends="orb.context" if="orb.available">
  -    <copy toDir="${lib.dir}" 
file="${apps.dir}/enterprise/orb/build/orb-2.0.jar"/>
  -    <copy toDir="${lib.dir}" 
file="${apps.dir}/enterprise/orb/lib/openorb_tools-1.3.0.jar"/>
  -    <copy toDir="${local-tools.dir}" 
file="${apps.dir}/enterprise/orb/lib/openorb-1.3.0.jar"/>
  -  </target>
  -
    
     <!--
     Misc. utilities.
  
  
  
  1.15      +8 -8      jakarta-avalon-excalibur/assembly/default.properties
  
  Index: default.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/default.properties,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- default.properties        11 Sep 2002 16:38:31 -0000      1.14
  +++ default.properties        15 Sep 2002 00:19:34 -0000      1.15
  @@ -129,15 +129,15 @@
   # project specific properties
   
   lib.dir = lib
  -openorb.jar = ${lib.dir}/openorb-1.3.0.jar
  -orb.jar = ${lib.dir}/orb-2.0.jar
  -corbaloc.jar = ${lib.dir}/corbaloc-1.0.jar
  +#openorb.jar = ${lib.dir}/openorb-1.3.0.jar
  +#orb.jar = ${lib.dir}/orb-2.0.jar
  +#corbaloc.jar = ${lib.dir}/corbaloc-1.0.jar
   
  -local-tools.dir = tools
  -idl-compiler.jar = ${local-tools.dir}/openorb_tools-1.3.0.jar
  -idl.class = org.openorb.compiler.IdlCompiler
  +#local-tools.dir = tools
  +#idl-compiler.jar = ${local-tools.dir}/openorb_tools-1.3.0.jar
  +#idl.class = org.openorb.compiler.IdlCompiler
   
  -idl.dir = ${src.dir}/idl
  +#idl.dir = ${src.dir}/idl
   extension.dir = extensions
   demo.name = demo
   demo.jar = ${demo.name}.jar
  @@ -148,5 +148,5 @@
   
   # avalon apps reference
   excalibur.dir = ./..
  -apps.dir = ${excalibur.dir}/../jakarta-avalon-apps
  +#apps.dir = ${excalibur.dir}/../jakarta-avalon-apps
   
  
  
  
  1.34      +7 -7      
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/ContainerManager.java
  
  Index: ContainerManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/ContainerManager.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- ContainerManager.java     11 Sep 2002 11:39:25 -0000      1.33
  +++ ContainerManager.java     15 Sep 2002 00:19:36 -0000      1.34
  @@ -644,7 +644,7 @@
               // service descriptor
               //
   
  -            addProfile( services[i].getService(), profile );
  +            addProfile( services[i].getReference(), profile );
           }
   
           ExtensionDescriptor[] extensions = profile.getType().getExtensions();
  @@ -746,7 +746,7 @@
       public Profile getProfile( DependencyDescriptor dependency )
       {
           Selector selector = getSelector( dependency );
  -        return getProfile( dependency.getService(), selector );
  +        return getProfile( dependency.getReference(), selector );
       }
   
      /**
  @@ -1263,7 +1263,7 @@
                   {
                       final String message =
                         "No solution for the dependency: " 
  -                      + dependency.getService() + " in profile: " + profile 
  +                      + dependency.getReference() + " in profile: " + 
profile 
                         + ", for the role: " + dependency.getRole();
   
                       profile.setEnabled( false );
  @@ -1281,7 +1281,7 @@
                   {
                       final String message =
                         "Empty selection for the dependency: " 
  -                      + dependency.getService() + " in profile: " + profile 
  +                      + dependency.getReference() + " in profile: " + 
profile 
                         + ", for the role: " + dependency.getRole();
   
                       profile.setEnabled( false );
  @@ -1426,7 +1426,7 @@
       {
           boolean ok = false;
           getLogger().debug( pad + "resolving dependency: " + 
dependency.getRole() );
  -        Profile[] profiles = getProfiles( dependency.getService() );
  +        Profile[] profiles = getProfiles( dependency.getReference() );
           for( int i=0; i<profiles.length; i++ )
           {
               Profile profile = profiles[i];
  @@ -1569,7 +1569,7 @@
           // otherwise, look for a default service type selector - if none
           // use the DefaultSelector
   
  -        return getSelector( dependency.getService(), 
dependency.getAttribute("avalon:selector") );
  +        return getSelector( dependency.getReference(), 
dependency.getAttribute("avalon:selector") );
       }
   
       private void logDependency( Logger logger, String lead, Profile[] result 
)
  
  
  
  1.15      +8 -13     
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/TypeRegistry.java
  
  Index: TypeRegistry.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/TypeRegistry.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- TypeRegistry.java 13 Sep 2002 14:57:33 -0000      1.14
  +++ TypeRegistry.java 15 Sep 2002 00:19:36 -0000      1.15
  @@ -153,7 +153,8 @@
   
      /**
       * Return the set of interface classes for a given type that are declared
  -    * or default to the "native" service access protocol and "implements"
  +    * or default to the "native" service access protocol and where the 
  +    * service access model is undefined (i.e. native implementation).
       * access mode.
       *
       * @param type the component type
  @@ -166,16 +167,10 @@
           for( int i=0; i<services.length; i++ )
           {
               ServiceDescriptor service = services[i];
  -            if( 
service.getAttribute("avalon:service.protocol","native").equals("native") )
  +            if(( 
service.getAttribute("avalon:service.protocol","native").equals("native") )
  +              && ( service.getAttribute("avalon:service.accessor", null ) == 
null ) )
               {
  -                if( 
service.getAttribute("avalon.service:mode","implements";).equals("implements") )
  -                {
  -                    vector.add( getServiceClass( services[i] ) );
  -                }
  -                else
  -                {
  -                    // its a dynamic lookup access policy
  -                }
  +                vector.add( getServiceClass( services[i] ) );
               }
           }
           return (Class[]) vector.toArray( new Class[0] );
  @@ -215,7 +210,7 @@
       */
       protected Class getServiceClass( ServiceDescriptor service ) throws 
TypeRuntimeException
       {
  -        final String classname = service.getService().getClassname();
  +        final String classname = service.getReference().getClassname();
           try
           {
               return m_classloader.loadClass( classname );
  @@ -302,7 +297,7 @@
           ServiceDescriptor[] services = type.getServices();
           for( int i=0; i<services.length; i++ )
           {
  -            register( services[i].getService(), type );
  +            register( services[i].getReference(), type );
           }
           if( type.getExtensions().length > 0 )
           {
  
  
  
  1.4       +2 -2      
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/UnresolvedProviderException.java
  
  Index: UnresolvedProviderException.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/assembly/UnresolvedProviderException.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- UnresolvedProviderException.java  22 Aug 2002 13:43:01 -0000      1.3
  +++ UnresolvedProviderException.java  15 Sep 2002 00:19:36 -0000      1.4
  @@ -56,7 +56,7 @@
       private static String getStandardMessage( DependencyDescriptor 
dependency )
       {
           return "Unable to resolve a provider for the dependency '" 
  -          + dependency.getService() + "' for the role: " + 
dependency.getRole();
  +          + dependency.getReference() + "' for the role: " + 
dependency.getRole();
       }
   
   }
  
  
  
  1.5       +3 -3      
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/verifier/AssemblyVerifier.java
  
  Index: AssemblyVerifier.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/verifier/AssemblyVerifier.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AssemblyVerifier.java     29 Jul 2002 06:14:33 -0000      1.4
  +++ AssemblyVerifier.java     15 Sep 2002 00:19:36 -0000      1.5
  @@ -252,7 +252,7 @@
               final String providerName = roles[ i 
].getProvider().getProfile().getName();
               final String roleName = roles[ i ].getRole();
               final ReferenceDescriptor service =
  -                info.getDependency( roleName ).getService();
  +                info.getDependency( roleName ).getReference();
   
               //Get the other component that is providing service
               final Profile provider = getProfile( providerName, others );
  @@ -455,7 +455,7 @@
       {
           for( int i = 0; i < candidates.length; i++ )
           {
  -            final ReferenceDescriptor other = candidates[ i ].getService();
  +            final ReferenceDescriptor other = candidates[ i ].getReference();
               if( service.matches( other ) )
               {
                   return true;
  
  
  
  1.7       +2 -2      
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/verifier/MetaDataVerifier.java
  
  Index: MetaDataVerifier.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/verifier/MetaDataVerifier.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MetaDataVerifier.java     23 Aug 2002 06:25:13 -0000      1.6
  +++ MetaDataVerifier.java     15 Sep 2002 00:19:36 -0000      1.7
  @@ -209,7 +209,7 @@
           final Class[] classes = new Class[ services.length ];
           for( int i = 0; i < services.length; i++ )
           {
  -            final ReferenceDescriptor service = services[ i ].getService();
  +            final ReferenceDescriptor service = services[ i ].getReference();
               final String classname = service.getClassname();
               try
               {
  
  
  
  1.3       +3 -2      
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/resource/DefaultComponentManager.java
  
  Index: DefaultComponentManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/resource/DefaultComponentManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultComponentManager.java      16 Aug 2002 04:55:51 -0000      1.2
  +++ DefaultComponentManager.java      15 Sep 2002 00:19:37 -0000      1.3
  @@ -13,6 +13,7 @@
   import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentManager;
  +import org.apache.excalibur.merlin.model.Profile;
   
   /**
    * Internal helper class the implements the <code>ComponentLocator</code> 
interface and
  @@ -23,9 +24,9 @@
       extends DefaultManager
       implements ComponentManager
   {
  -    public DefaultComponentManager( Map providers )
  +    public DefaultComponentManager( Profile profile ) throws Exception
       {
  -        super( providers );
  +        super( profile );
       }
   
       public boolean hasComponent( String role )
  
  
  
  1.5       +134 -8    
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/resource/DefaultManager.java
  
  Index: DefaultManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/resource/DefaultManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DefaultManager.java       9 Sep 2002 04:33:53 -0000       1.4
  +++ DefaultManager.java       15 Sep 2002 00:19:37 -0000      1.5
  @@ -10,9 +10,15 @@
   package org.apache.excalibur.merlin.resource;
   
   import java.util.Map;
  +import java.util.HashMap;
   import java.util.Hashtable;
  +import java.lang.reflect.Method;
   import org.apache.excalibur.merlin.model.Resource;
  -
  +import org.apache.excalibur.merlin.model.Profile;
  +import org.apache.excalibur.meta.info.ServiceDescriptor;
  +import org.apache.excalibur.meta.info.DependencyDescriptor;
  +import org.apache.excalibur.merlin.model.Association;
  +import org.apache.excalibur.meta.info.Type;
   
   /**
    * Internal helper class the handles the functional requirements of
  @@ -35,10 +41,11 @@
      /**
       * Creation of a new manager.
       * @param providers the resource map
  +    * @exception if an error occurs while mapping the service providers to 
roles
       */
  -    public DefaultManager( Map providers )
  +    public DefaultManager( Profile profile ) throws Exception
       {
  -        m_providers = providers;
  +        m_providers = getServices( profile );
       }
   
      /**
  @@ -57,8 +64,8 @@
       */
       public Object get( String role ) throws ResourceException
       {
  -        Resource resource = (Resource) m_providers.get( role );
  -        if( resource == null )
  +        ServiceProviderHolder holder = (ServiceProviderHolder) 
m_providers.get( role );
  +        if( holder == null )
           {
               throw new ResourceException(
                   "Could not locate a provider for the role: " + role );
  @@ -66,14 +73,14 @@
   
           try
           {
  -            Object object = resource.access();
  -            m_mapping.put( object, resource );
  +            Object object = holder.getObject();
  +            m_mapping.put( object, holder.getResource() );
               return object;
           }
           catch( Throwable e )
           {
               final String error = "Unexpected exception while resolving the 
service from " 
  -              + resource.getPath() + " for the role: " + role;
  +              + holder.getResource().getPath() + " for the role: " + role;
               throw new ResourceException( error, e );
           }
       }
  @@ -98,4 +105,123 @@
           }
       }
   
  +   /**
  +    * Prepare a map of the dependent services keyed by role name.
  +    * @param profile the profile referencing a type declaring dependecies
  +    * @return a map of the services
  +    * @exception Exception if unable to locate a required service provider
  +    */
  +    private Map getServices( Profile profile ) throws Exception
  +    {
  +        if( profile == null )
  +        {
  +            throw new NullPointerException("profile");
  +        }
  +        final Type type = profile.getType();
  +        if( type == null )
  +        {
  +            throw new NullPointerException("type");
  +        }
  +
  +        final DependencyDescriptor[] dependencies = type.getDependencies();
  +        final HashMap services = new HashMap();
  +        for( int i = 0; i < dependencies.length; i++ )
  +        {
  +            DependencyDescriptor dependency = dependencies[i];
  +            final String role = dependency.getRole();
  +            
  +            final Association association = profile.getAssociation( role );
  +            if( association == null )
  +            {
  +                final String error = "Missing association for the role: " + 
role
  +                  + " in the profile: " + profile.getName();
  +                throw new ResourceException( error );
  +            }
  +            Resource provider = association.getProvider();
  +            ServiceDescriptor service = 
  +              provider.getProfile().getType().getService( 
dependency.getReference() );
  +            String accessor = getAccessorOperation( service );
  +
  +            services.put( role, new ServiceProviderHolder( provider, 
accessor, role ) );
  +        }
  +        return services;
  +    }
  +
  +    private String getAccessorOperation( ServiceDescriptor service )
  +    {
  +        if( service == null )
  +        {
  +            throw new NullPointerException("service");
  +        }
  +        return service.getAttribute( "avalon:service.accessor", null );
  +    }
  +
  +    private class ServiceProviderHolder
  +    {
  +        private Resource m_resource;
  +        private String m_role;
  +        private String m_accessor;
  +
  +        ServiceProviderHolder( Resource resource, String accessor, String 
role )
  +        {
  +            if( resource == null )
  +            {
  +                throw new NullPointerException( "resource" );
  +            }
  +            if( role == null )
  +            {
  +                throw new NullPointerException( "role" );
  +            }
  +
  +            m_role = role;
  +            m_resource = resource;
  +            m_accessor = accessor;
  +        }
  +
  +        Resource getResource()
  +        {
  +            return m_resource;
  +        }
  +
  +        String getRole()
  +        {
  +            return m_role;
  +        }
  +
  +        String getAccessor()
  +        {
  +            return m_accessor;
  +        }
  +
  +       /**
  +        * Invokes a accessor method on an object established by a resource 
using the 
  +        * accessor method declared under the service attribute 
"avalon:service.accessor".
  +        */
  +        Object getObject() 
  +        throws Exception
  +        {
  +            Object object = m_resource.access();
  +            if( m_accessor == null )
  +            {
  +                return object;
  +            }
  +
  +            //
  +            // this object does not directly implement the service, instead, 
we access the 
  +            // the service via an accessor operation that takes no arguments 
and returns
  +            // the service object instance
  +            //
  +
  +            try
  +            {
  +                Method method = object.getClass().getMethod( m_accessor, new 
Class[0] );
  +               return method.invoke( object, new Object[0] );
  +            }
  +            catch( Throwable e )
  +            {
  +                throw new ResourceException( "Invocation exception, method: 
" + m_accessor 
  +                  + ", class: " + object.getClass().getName(), e );
  +            }
  +        }
  +    }
   }
  
  
  
  1.3       +4 -2      
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/resource/DefaultServiceManager.java
  
  Index: DefaultServiceManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/resource/DefaultServiceManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultServiceManager.java        20 Aug 2002 23:23:08 -0000      1.2
  +++ DefaultServiceManager.java        15 Sep 2002 00:19:37 -0000      1.3
  @@ -12,6 +12,7 @@
   import java.util.Map;
   import org.apache.avalon.framework.service.ServiceException;
   import org.apache.avalon.framework.service.ServiceManager;
  +import org.apache.excalibur.merlin.model.Profile;
   
   /**
    * Internal helper class the implements the <code>ServiceManager</code> 
interface and
  @@ -24,10 +25,11 @@
   {
       /**
        * Construct a new ServiceManager.
  +     * @param profile the component profile
        */
  -    public DefaultServiceManager( Map providers )
  +    public DefaultServiceManager( Profile profile ) throws Exception
       {
  -        super( providers );
  +        super( profile );
       }
   
       /**
  
  
  
  1.9       +2 -43     
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/resource/DeploymentHelper.java
  
  Index: DeploymentHelper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/resource/DeploymentHelper.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DeploymentHelper.java     12 Sep 2002 11:05:52 -0000      1.8
  +++ DeploymentHelper.java     15 Sep 2002 00:19:37 -0000      1.9
  @@ -550,8 +550,7 @@
           {
               throw new NullPointerException("profile");
           }
  -        final Map services = getServices( profile );
  -        final DefaultComponentManager componentManager = new 
DefaultComponentManager( services );
  +        final DefaultComponentManager componentManager = new 
DefaultComponentManager( profile );
           return componentManager;
       }
   
  @@ -569,8 +568,7 @@
           {
               throw new NullPointerException("profile");
           }
  -        final Map services = getServices( profile );
  -        final DefaultServiceManager serviceManager = new 
DefaultServiceManager( services );
  +        final DefaultServiceManager serviceManager = new 
DefaultServiceManager( profile );
           return serviceManager;
       }
   
  @@ -614,43 +612,4 @@
           return parameters;
       }
   
  -   /**
  -    * Prepare a map of the dependent services keyed by role name.
  -    * @param profile the profile referencing a type declaring dependecies
  -    * @return a map of the services
  -    * @exception Exception if unable to locate a required service provider
  -    */
  -    private Map getServices( Profile profile ) throws Exception
  -    {
  -        if( profile == null )
  -        {
  -            throw new NullPointerException("profile");
  -        }
  -        getLogger().debug("preparing services for profile: " + profile );
  -        final Type type = profile.getType();
  -        if( type == null )
  -        {
  -            throw new NullPointerException("type");
  -        }
  -
  -        final DependencyDescriptor[] dependencies = type.getDependencies();
  -        final HashMap services = new HashMap();
  -        for( int i = 0; i < dependencies.length; i++ )
  -        {
  -            DependencyDescriptor dependency = dependencies[i];
  -            final String role = dependency.getRole();
  -            final Association association = profile.getAssociation( role );
  -            if( association == null )
  -            {
  -                final String error = "Missing association for the role: " + 
role
  -                  + " in the profile: " + profile.getName();
  -                throw new ResourceException( error );
  -            }
  -            else
  -            {
  -                 services.put( role, association.getProvider() );
  -            }
  -        }
  -        return services;
  -    }
   }
  
  
  
  1.3       +10 -2     
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/service/DefaultRegistry.java
  
  Index: DefaultRegistry.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/service/DefaultRegistry.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultRegistry.java      11 Sep 2002 06:57:24 -0000      1.2
  +++ DefaultRegistry.java      15 Sep 2002 00:19:37 -0000      1.3
  @@ -71,7 +71,15 @@
           {
               throw new NullPointerException( "domain" );
           }
  -        URL.setURLStreamHandlerFactory( new ServiceURLFactory( domain, this 
) );
  +        try
  +        {
  +            URL.setURLStreamHandlerFactory( new ServiceURLFactory( domain, 
this ) );
  +        }
  +        catch( Error e )
  +        {
  +            // handler is already registered
  +        }
  +
           m_base = new URL("service", domain, -1, "/");
       }
   
  
  
  
  1.3       +2 -2      
jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/service/ServiceURLConnection.java
  
  Index: ServiceURLConnection.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/service/ServiceURLConnection.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ServiceURLConnection.java 9 Sep 2002 13:34:50 -0000       1.2
  +++ ServiceURLConnection.java 15 Sep 2002 00:19:37 -0000      1.3
  @@ -41,7 +41,7 @@
   
       /**
        * Creation of a new <code>ServiceURLConnection</code> handler.
  -     * @param url the corbaloc URL
  +     * @param url the base URL
        */
        public ServiceURLConnection( URL url, Registry registry )
        {
  @@ -64,7 +64,7 @@
           }
   
           //
  -        // make sure that we are only dealing with the strict corbaloc URL
  +        // make sure that we are only dealing with the strict URL
           // (i.e. no query or ref elements in the URL)
           //
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to