/****************************************************************************** * Copyright (c) 2006, 2010 VMware Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Apache License v2.0 which accompanies this distribution. * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0 * is available at http://www.opensource.org/licenses/apache2.0.php. * You may elect to redistribute this code under either of these licenses. * * Contributors: * VMware Inc. *****************************************************************************/ package org.eclipse.gemini.blueprint.iandt.io; import org.osgi.framework.Constants; import org.springframework.core.io.Resource; /** * @author Costin Leau * */ public class ClassSpaceWildcardTest extends BaseIoTest { // // Wild-card tests // public void testBundleClassPath() throws Exception { System.out.println("*** Bundle-ClassPath is " + bundle.getHeaders().get(Constants.BUNDLE_CLASSPATH)); Resource res[] = patternLoader.getResources("classpath*:/org/eclipse/gemini/blueprint/iandt/io/ClassSpaceWildcardTest.class"); assertEquals("invalid bundle-classpath entries should be skipped", 1, res.length); printPathWithinContext(res); } // finds all files at root level public void testWildcardAtRootFileLevel() throws Exception { Resource res[] = patternLoader.getResources("classpath:/*"); // only the bundle and its fragments should be considered (since no other META-INF/ is available on the classpath) assertEquals("not enough packages found", 3, res.length); printPathWithinContext(res); } // similar as the root test but inside META-INF public void testWildcardAtFolderLevel() throws Exception { Resource res[] = patternLoader.getResources("classpath:/META-INF/*"); assertEquals("not enough packages found", 1, res.length); printPathWithinContext(res); } public void testSingleClassWithWildcardAtFileLevel() throws Exception { Resource res[] = patternLoader.getResources("classpath:/org/eclipse/gemini/blueprint/iandt/io/Class*Test.class"); assertTrue("not enough packages found", res.length >= 1); printPathWithinContext(res); } public void testClassPathRootWildcard() throws Exception { Resource res[] = patternLoader.getResources("classpath:/**/blueprint/iandt/io/Class*Test.class"); assertTrue("not enough packages found", res.length >= 1); } public void testAllClassPathWildcardAtFolderLevel() throws Exception { Resource res[] = patternLoader.getResources("classpath*:/META-INF/*"); // only the bundle and its fragments should be considered (since no other META-INF/ is available on the classpath) assertEquals("not enough packages found", 3, res.length); printPathWithinContext(res); } public void testAllClassPathWOWildcardAtFolderLevel() throws Exception { Resource res[] = patternLoader.getResources("classpath*:META-INF/"); // only the bundle and its fragments should be considered (since no other META-INF/ is available on the classpath) assertEquals("not enough packages found", 3, res.length); printPathWithinContext(res); } public void testAllClassPathWithWildcardAtFileLevel() throws Exception { Resource res[] = patternLoader.getResources("classpath:/org/eclipse/gemini/blueprint/iandt/io/Class*WildcardTest.class"); assertEquals("not enough packages found", 1, res.length); printPathWithinContext(res); } public void testAllClassPathWithWithWildcardAtFileLevel() throws Exception { Resource res[] = patternLoader.getResources("classpath*:/org/eclipse/gemini/blueprint/iandt/io/Class*WildcardTest.class"); assertEquals("not enough packages found", 1, res.length); printPathWithinContext(res); } public void testAllClassPathRootWildcard() throws Exception { Resource res[] = patternLoader.getResources("classpath:/**/gemini/blueprint/**/ClassSpaceWildcardTest.class"); assertEquals("not enough packages found", 1, res.length); printPathWithinContext(res); } public void testAllClassPathRootWithWildcard() throws Exception { Resource res[] = patternLoader.getResources("classpath*:/**/gemini/blueprint/**/ClassSpaceWildcardTest.class"); assertEquals("not enough packages found", 1, res.length); printPathWithinContext(res); } // // Stress tests (as they pull a lot of content) // public void testMatchingALotOfClasses() throws Exception { Resource res[] = patternLoader.getResources("classpath*:/**/gemini/blueprint/iandt/io/*.class"); // at least 2 classes should be in there assertTrue("not enough packages found", res.length > 1); printPathWithinContext(res); } // EQ = 48 // KF = 48 // FX = 38 public void testMatchingALotOfFolders() throws Exception { Resource res[] = patternLoader.getResources("classpath*:/**/gemini/blueprint/**"); System.out.println("resources count " + res.length); assertTrue("not enough packages found", res.length > 10); printPathWithinContext(res); } // ask for everything springframework :) // EQ = 147 // KF = 147 // FX = 135 (no fragment support) public void testMatchingABulkOfResources() throws Exception { Resource res[] = patternLoader.getResources("classpath*:**/springframework/**"); Resource resWitSlash[] = patternLoader.getResources("classpath*:/**/springframework/**"); System.out.println("resources w/o slash count " + res.length); System.out.println("resources w/ slash count " + resWitSlash.length); assertEquals("slash should not make a difference", res.length, resWitSlash.length); assertTrue("not enough packages found", res.length > 50); printPathWithinContext(res); } // ask for everything org :) // EQ = 271 (since it considers the system bundle also) // KF = 147 (doesn't consider system bundle) // FX = 135 public void testMatchingAHugeSetOfResources() throws Exception { Resource res[] = patternLoader.getResources("classpath*:org/**"); Resource resWitSlash[] = patternLoader.getResources("classpath*:/org/**"); System.out.println("resources w/o slash count " + res.length); System.out.println("resources w/ slash count " + resWitSlash.length); assertEquals("slash should not make a difference", res.length, resWitSlash.length); assertTrue("not enough packages found", res.length > 100); printPathWithinContext(res); } protected boolean isDisabledInThisEnvironment(String testMethodName) { // felix doesn't support fragments yet return (isFelix() && (testMethodName.equals("testAllClassPathWildcardAtFolderLevel") || testMethodName.equals("testWildcardAtRootFileLevel") || testMethodName.equals("testAllClassPathWOWildcardAtFolderLevel"))); } }