Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2014, Red Hat, Inc. and/or its affiliates, and individual
   * contributors by the @authors tag. See the copyright.txt in the
   * distribution for a full listing of individual contributors.
   *
   * 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.jboss.weld.environment.deployment.discovery;
 
 import static org.jboss.weld.environment.util.URLUtils.JAR_URL_SEPARATOR;
 import static org.jboss.weld.environment.util.URLUtils.PROCOTOL_FILE;
 import static org.jboss.weld.environment.util.URLUtils.PROCOTOL_HTTP;
 import static org.jboss.weld.environment.util.URLUtils.PROCOTOL_HTTPS;
 import static org.jboss.weld.environment.util.URLUtils.PROCOTOL_JAR;
 import static org.jboss.weld.environment.util.URLUtils.PROTOCOL_FILE_PART;
 
 import java.io.File;
 import java.net.URI;
 import java.net.URL;
 import java.util.Map;
 
Scans the classpath and tries to process all "META-INF/beans.xml" resources.

Author(s):
Martin Kouba
 
 public class DefaultBeanArchiveScanner implements BeanArchiveScanner {
 
     private static final Logger log = Logger.getLogger(DefaultBeanArchiveScanner.class);
 
     protected final ResourceLoader resourceLoader;
 
     protected final Bootstrap bootstrap;

    

Parameters:
resourceLoader
bootstrap
 
     public DefaultBeanArchiveScanner(ResourceLoader resourceLoaderBootstrap bootstrap) {
         this. = resourceLoader;
         this. = bootstrap;
     }
 
     @Override
     public Map<URLScanResultscan() {
         final Map<URLScanResultbeansXmlMap = new HashMap<URLScanResult>();
         // META-INF/beans.xml
         final String[] resources = .;
 
         // Find all beans.xml files
         for (String resourceName : resources) {
             for (URL beansXmlUrl : .getResources(resourceName)) {
                 final BeansXml beansXml = .parse(beansXmlUrl);
                 if (accept(beansXml)) {
                     beansXmlMap.put(beansXmlUrlnew ScanResult(beansXmlgetBeanArchiveReference(beansXmlUrl)));
                 }
             }
         }
         return beansXmlMap;
     }
 
     protected boolean accept(BeansXml beansXml) {
         return !..equals(beansXml.getBeanDiscoveryMode());
     }

    

Parameters:
url
Returns:
Throws:
java.net.URISyntaxException
 
     protected String getBeanArchiveReference(URL url) {
 
         String ref = null;
         URI uri = null;
         try {
            uri = url.toURI();
        } catch (URISyntaxException e) {
            ..couldNotReadResource(urle);
        }
        if(.equals(url.getProtocol())) {
            // Adapt file URL, e.g. "file:///home/weld/META-INF/beans.xml" becomes "/home/weld"
            ref = new File(uri.getSchemeSpecificPart()).getParentFile().getParent();
        } else if(.equals(url.getProtocol())) {
            // Adapt JAR file URL, e.g. "jar:file:/home/duke/duke.jar!/META-INF/beans.xml" becomes "/home/duke/duke.jar"
            // The decoded part without protocol part, i.e. without "jar:"
            ref = uri.getSchemeSpecificPart();
            if(ref.lastIndexOf() > 0) {
                ref = ref.substring(0, ref.lastIndexOf());
            }
            return getBeanArchiveReferenceForJar(refurl);
        } else {
            .warnv("Unable to adapt URL: {0}, using its external form instead"url);
            ref = url.toExternalForm();
        }
        .debugv("Resolved bean archive reference: {0} for URL: {1}"refurl);
        return ref;
    }
    protected String getBeanArchiveReferenceForJar(String pathURL fallback) {
        // jar:file:
        if (path.startsWith()) {
            return path.substring(.length());
        }
        // jar:http:
        if (path.startsWith() || path.startsWith()) {
            // WebStart support: get path to local cached copy of remote JAR file
            // Class loader should be an instance of com.sun.jnlp.JNLPClassLoader
            ClassLoader jnlpClassLoader = WeldResourceLoader.getClassLoader();
            try {
                // Try to call com.sun.jnlp.JNLPClassLoader#getJarFile(URL) from JDK 6
                Method m = jnlpClassLoader.getClass().getMethod("getJarFile"URL.class);
                // returns a reference to the local cached copy of the JAR
                ZipFile jarFile = (ZipFilem.invoke(jnlpClassLoadernew URL(path));
                return jarFile.getName();
            } catch (NoSuchMethodException nsme) {
                ..unexpectedClassLoader(nsme);
            } catch (IllegalArgumentException iarge) {
                ..unexpectedClassLoader(iarge);
            } catch (InvocationTargetException ite) {
                ..jnlpClassLoaderInternalException(ite);
            } catch (Exception iacce) {
                ..jnlpClassLoaderInvocationException(iacce);
            }
        }
        .warnv("Unable to adapt JAR file URL: {0}, using its external form instead"path);
        return fallback.toExternalForm();
    }
New to GrepCode? Check out our FAQ X