package runjettyrun.webapp; import java.io.File; import java.util.ArrayList; import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.webapp.MetaInfConfiguration; import org.eclipse.jetty.webapp.WebAppContext; public class RJRMetaInfoConfiguration extends MetaInfConfiguration{ public void preConfigure(final WebAppContext context) throws Exception { super.preConfigure(context); ArrayList<Resource> jars = new ArrayList<Resource>(); jars.addAll(context.getMetaData().getOrderedContainerJars()); jars.addAll(context.getMetaData().getWebInfJars()); for(Resource r:jars){ if(r.isDirectory()){ processClassFolderMetaEntry(context,r.getFile()); } } } protected void processClassFolderMetaEntry(WebAppContext context,File classFolder){ File metainf = new File(classFolder, "META-INF"); if(!(metainf.exists() && metainf.isDirectory())){ return ; } try { File webFrag = new File(metainf,"web-fragment.xml"); if(webFrag.exists() && context.isConfigurationDiscovered()){ addResource(context,METAINF_FRAGMENTS,Resource.newResource(classFolder)); } File resources = new File(metainf,"resources"); if(resources.exists() && context.isConfigurationDiscovered()){ addResource(context,METAINF_RESOURCES,Resource.newResource(resources)); } } catch(Exception e) { context.getServletContext().log(classFolder.getAbsolutePath(),e); } } protected void processClassFolderMetaEntryForTld(WebAppContext context,File root){ File[] files = root.listFiles(); for(File f:files){ if(f.isDirectory()){ processClassFolderMetaEntryForTld(context,f); }else{ String lcname = f.getName().toLowerCase(); if (lcname.endsWith(".tld")) { try { addResource(context,METAINF_TLDS,Resource.newResource(f)); } catch(Exception e) { context.getServletContext().log(f.getAbsolutePath(),e); } } } } } }