dion        2003/08/10 23:21:33

  Modified:    src/java/org/apache/maven/project Tag: MAVEN_RC1_STABLE
                        Project.java
  Log:
  Start of MAVEN-536
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.83.2.2  +77 -37    maven/src/java/org/apache/maven/project/Project.java
  
  Index: Project.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/project/Project.java,v
  retrieving revision 1.83.2.1
  retrieving revision 1.83.2.2
  diff -u -r1.83.2.1 -r1.83.2.2
  --- Project.java      7 Aug 2003 16:56:39 -0000       1.83.2.1
  +++ Project.java      11 Aug 2003 06:21:33 -0000      1.83.2.2
  @@ -70,10 +70,13 @@
   import org.apache.maven.jelly.JellyUtils;
   import org.apache.tools.ant.types.Path;
   import org.apache.commons.grant.GrantProject;
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
   import org.dom4j.Document;
   import org.dom4j.io.SAXReader;
   
   import com.werken.forehead.Forehead;
  +import com.werken.forehead.ForeheadClassLoader;
   
   import java.io.File;
   import java.io.InputStreamReader;
  @@ -234,6 +237,9 @@
   
       /** ArtifactId. */
       private String artifactId;
  +    
  +    /** log for debug and output */
  +    private static final Log log = LogFactory.getLog(Project.class);
   
       /**
        * Default constructor.
  @@ -1376,40 +1382,6 @@
       }
   
       /**
  -     * process the dependencies for this project
  -     */
  -    public void processDependencies() throws MalformedURLException
  -    {
  -        if (getArtifacts() == null)
  -        {
  -            return;
  -        }
  -
  -        for ( Iterator i = getArtifacts().iterator(); i.hasNext(); )
  -        {
  -            Artifact artifact = (Artifact) i.next();
  -            Dependency dependency = artifact.getDependency();
  -            String classloader = dependency.getProperty( "classloader" );
  -
  -            // Only add compile type dependencies to classloader
  -            if ( classloader != null && dependency.getType().equals( "jar" ) )
  -            {
  -                // We have the jar and the classloader to push it into so
  -                // lets do it!
  -                if ( artifact.exists() )
  -                {
  -                    // Make sure the stated classloader actually exists.
  -                    if ( Forehead.getInstance().getClassLoader( classloader ) != 
null )
  -                    {
  -                        Forehead.getInstance().getClassLoader( classloader 
).addURL( artifact.getFile().toURL() );
  -                    }
  -                }
  -            }
  -        }
  -
  -    }
  -
  -    /**
        * Set the dependency verifier.
        *
        * @param dependencyVerifier Dependency Verifier.
  @@ -1452,14 +1424,14 @@
       }
   
       /**
  -     * Currently this is just jars.
  +     * Jars and ejbs.
        * 
        * @param d
        * @return true if the given dependency belongs on the classpath
        */
       private boolean isClasspathDependency(Dependency d)
       {
  -        return d.getType().equals( "jar" );
  +        return d.getType().equals( "jar" ) || d.getType().equals( "ejb" );
       }
   
       /**
  @@ -1607,5 +1579,73 @@
           }
   
           return id;
  +    }
  +
  +    /**
  +     * Process the dependencies of the project, adding dependencies to the
  +     * appropriate classloader etc
  +     * 
  +     * @param project The project to process
  +     * @param cl The classloader to add dependencies
  +     * @throws MalformedURLException
  +     */
  +    public void processDependencies() throws MalformedURLException
  +    {
  +        if (getArtifacts() == null)
  +        {
  +            log.debug("No dependencies to process for project " + getName());
  +            return;
  +        }
  +        
  +        // This may definitely break plugins.
  +        ClassLoader projectClassLoader = getContext().getClassLoader();
  +    
  +        if ( projectClassLoader instanceof ForeheadClassLoader )
  +        {
  +            // add the dependencies to the classpath
  +            for ( Iterator i = getArtifacts().iterator(); i.hasNext(); )
  +            {
  +                ForeheadClassLoader loader = 
(ForeheadClassLoader)projectClassLoader;
  +                Artifact artifact = (Artifact) i.next();
  +                // get correct classloader
  +                String classLoader = artifact.getDependency().getProperty( 
"classloader" );
  +                if (classLoader != null)
  +                {
  +                    loader = Forehead.getInstance().getClassLoader( classLoader ); 
  +                    if (loader == null)
  +                    {
  +                        log.info("classloader '" + classLoader
  +                            + "' not found. Adding dependencies to the project 
classloader instead");
  +                        loader = (ForeheadClassLoader)projectClassLoader;
  +                    }
  +                }
  +    
  +                // add to classloader
  +                if (artifact.exists())
  +                {
  +                    if (isClasspathDependency(artifact.getDependency()))
  +                    {
  +                        loader.addURL( artifact.getFile().toURL() );
  +                    }
  +                    else
  +                    {
  +                        log.debug("Non classpath dependency: '" + 
artifact.getFile() + "'"
  +                            + " not added to classpath " + loader);
  +                    }
  +                }
  +                else
  +                {
  +                    log.info("Artifact '" + artifact.getFile() + "' not found to 
add to classpath");
  +                }
  +                
  +                // FIXME: handle plugin dependencies here - download from remote 
repos
  +                //        and install 
  +            }
  +        }
  +        
  +        // FIXME: Don't know why we're doing this?
  +        // Explicity set the classloader used to find resources. As we just
  +        // poked all the dependencies into the classloader.
  +        getContext().setClassLoader( projectClassLoader );
       }
   }
  
  
  

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

Reply via email to