/****************************************************************************** | |
* 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 java.io.FilePermission; | |
import java.util.ArrayList; | |
import java.util.Enumeration; | |
import java.util.List; | |
import org.eclipse.gemini.blueprint.iandt.BaseIntegrationTest; | |
import org.osgi.framework.AdminPermission; | |
import org.osgi.framework.Bundle; | |
import org.springframework.core.io.ContextResource; | |
import org.springframework.core.io.DefaultResourceLoader; | |
import org.springframework.core.io.Resource; | |
import org.springframework.core.io.ResourceLoader; | |
import org.springframework.core.io.support.ResourcePatternResolver; | |
import org.eclipse.gemini.blueprint.io.OsgiBundleResourceLoader; | |
import org.eclipse.gemini.blueprint.io.OsgiBundleResourcePatternResolver; | |
import org.springframework.util.ObjectUtils; | |
/** | |
* Common base test class for IO integration testing. | |
* | |
* @author Costin Leau | |
* | |
*/ | |
public abstract class BaseIoTest extends BaseIntegrationTest { | |
protected final static String PACKAGE = "org/eclipse/gemini/blueprint/iandt/io/"; | |
private static final String FRAGMENT_1 = "org.eclipse.gemini.blueprint.iandt.io.fragment.1"; | |
private static final String FRAGMENT_2 = "org.eclipse.gemini.blueprint.iandt.io.fragment.2"; | |
protected Resource thisClass; | |
protected ResourceLoader loader, defaultLoader; | |
protected ResourcePatternResolver patternLoader; | |
protected Bundle bundle; | |
protected String[] getBundleContentPattern() { | |
return (String[]) ObjectUtils.addObjectToArray(super.getBundleContentPattern(), | |
"org/eclipse/gemini/blueprint/iandt/io/BaseIoTest.class"); | |
} | |
protected void onSetUp() throws Exception { | |
// load file using absolute path | |
defaultLoader = new DefaultResourceLoader(); | |
thisClass = defaultLoader.getResource(getClass().getName().replace('.', '/').concat(".class")); | |
bundle = bundleContext.getBundle(); | |
loader = new OsgiBundleResourceLoader(bundle); | |
patternLoader = new OsgiBundleResourcePatternResolver(loader); | |
} | |
protected void onTearDown() throws Exception { | |
thisClass = null; | |
} | |
protected String getManifestLocation() { | |
// reuse the manifest from Fragment Io Tests | |
return "org/eclipse/gemini/blueprint/iandt/io/FragmentIoTests.MF"; | |
} | |
/** | |
* Add a bundle fragment. | |
*/ | |
protected String[] getTestBundlesNames() { | |
return new String[] { "org.eclipse.gemini.blueprint.iandt,io.fragment.1.bundle," + getSpringDMVersion(), | |
"org.eclipse.gemini.blueprint.iandt,io.fragment.2.bundle," + getSpringDMVersion() }; | |
} | |
protected Object[] copyEnumeration(Enumeration enm) { | |
List list = new ArrayList(); | |
while (enm != null && enm.hasMoreElements()) | |
list.add(enm.nextElement()); | |
return list.toArray(); | |
} | |
protected void assertResourceArray(Object[] array, int expectedSize) { | |
System.out.println(ObjectUtils.nullSafeToString(array)); | |
assertTrue("found only " + ObjectUtils.nullSafeToString(array), array.length == expectedSize); | |
} | |
protected boolean isKF() { | |
return (createPlatform().toString().startsWith("Knopflerfish")); | |
} | |
protected boolean isEquinox() { | |
return (createPlatform().toString().startsWith("Equinox")); | |
} | |
protected boolean isFelix() { | |
return (createPlatform().toString().startsWith("Felix")); | |
} | |
protected List getTestPermissions() { | |
List list = super.getTestPermissions(); | |
list.add(new FilePermission("<<ALL FILES>>", "read")); | |
// log files | |
list.add(new FilePermission("<<ALL FILES>>", "delete")); | |
list.add(new FilePermission("<<ALL FILES>>", "write")); | |
list.add(new AdminPermission("*", AdminPermission.LISTENER)); | |
list.add(new AdminPermission("(name=" + FRAGMENT_1 + ")", AdminPermission.RESOURCE)); | |
list.add(new AdminPermission("(name=" + FRAGMENT_2 + ")", AdminPermission.RESOURCE)); | |
return list; | |
} | |
protected void printPathWithinContext(Resource[] resources) { | |
for (int i = 0; i < resources.length; i++) { | |
Resource resource = resources[i]; | |
assertTrue(resource instanceof ContextResource); | |
// Disabled print out | |
//System.out.println("Path within context " + ((ContextResource) resource).getPathWithinContext()); | |
} | |
} | |
} |