Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  //========================================================================
  //$Id: Jetty6MavenConfiguration.java 1703 2007-03-28 05:04:41Z janb $
  //Copyright 2000-2005 Mort Bay Consulting Pty. Ltd.
  //------------------------------------------------------------------------
  //Licensed under the Apache License, Version 2.0 (the "License");
  //you may not use this file except in compliance with the License.
  //You may obtain a copy of the License at 
  //http://www.apache.org/licenses/LICENSE-2.0
  //Unless required by applicable law or agreed to in writing, software
 //distributed under the License is distributed on an "AS IS" BASIS,
 //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 //See the License for the specific language governing permissions and
 //limitations under the License.
 //========================================================================
 
 package org.mortbay.jetty.plugin;
 
 import java.io.File;
 import java.net.URL;
 import java.util.List;
 
 
 public class Jetty6MavenConfiguration extends Configuration 
 {
     private List classPathFiles;
     private File webXmlFile;
     
     
    
     public Jetty6MavenConfiguration()
     {
         super();
     }
 
     public void setClassPathConfiguration(List classPathFiles)
     {
         this. = classPathFiles;
     }
     
     public void setWebXml (File webXmlFile)
     {
         this. = webXmlFile;
     }
    
    
    
Set up the classloader for the webapp, using the various parts of the Maven project

 
     public void configureClassLoader() throws Exception 
     {
         if ( != null)
         {
             Log.debug("Setting up classpath ...");
 
             //put the classes dir and all dependencies into the classpath
             Iterator itor = .iterator();
             while (itor.hasNext())
                 ((WebAppClassLoader)getWebAppContext().getClassLoader()).addClassPath(((File)itor.next()).getCanonicalPath());
 
             if (Log.isDebugEnabled())
                 Log.debug("Classpath = "+LazyList.array2List(((URLClassLoader)getWebAppContext().getClassLoader()).getURLs()));
         }
         else
             super.configureClassLoader();
     }
 
     
 
     
     protected URL findWebXml () throws IOExceptionMalformedURLException
     {
         //if an explicit web.xml file has been set (eg for jetty:run) then use it
         if ( != null && .exists())
             return .toURL();
         
         //if we haven't overridden location of web.xml file, use the
         //standard way of finding it
         Log.debug("Looking for web.xml file in WEB-INF");
         return super.findWebXml();
     }
     
     
     
     public void parseAnnotations()
     throws Exception
    {
        String v = System.getProperty("java.version");
        String[] version = v.split("\\.");
        if (version==null)
        {
            Log.info("Unable to determine jvm version, annotations will not be supported");
            return;
        }
        int  major = Integer.parseInt(version[0]);
        int minor = Integer.parseInt(version[1]);
        if ((major >= 1) && (minor >= 5))
        {     
            //TODO it would be nice to be able to re-use the parseAnnotations() method on 
            //the org.mortbay.jetty.annotations.Configuration class, but it's too difficult?
            
            //able to use annotations on on jdk1.5 and above
            Class annotationParserClass = Thread.currentThread().getContextClassLoader().loadClass("org.mortbay.jetty.annotations.AnnotationParser");
            Method parseAnnotationsMethod = 
                annotationParserClass.getMethod("parseAnnotations"new Class[] {Class.classRunAsCollection.classInjectionCollection.classLifeCycleCallbackCollection.class });
            //look thru _servlets
            Iterator itor = LazyList.iterator();
            while (itor.hasNext())
            {
                ServletHolder holder = (ServletHolder)itor.next();
                Class servlet = getWebAppContext().loadClass(holder.getClassName());
                parseAnnotationsMethod.invoke(nullnew Object[] {servlet,  });
            }
            //look thru _filters
            itor = LazyList.iterator();
            while (itor.hasNext())
            {
                FilterHolder holder = (FilterHolder)itor.next();
                Class filter = getWebAppContext().loadClass(holder.getClassName());
                parseAnnotationsMethod.invoke(nullnew Object[] {filternull});
            }
            //look thru _listeners
            itor = LazyList.iterator();
            while (itor.hasNext())
            {
                Object listener = itor.next();
                parseAnnotationsMethod.invoke(nullnew Object[] {listener.getClass(), null});
            }
        }
        else
            Log.info("Annotations are not supported on jvms prior to jdk1.5");
    }
New to GrepCode? Check out our FAQ X