blob: c775647a8e06e2480fc45afc358bbee044e49461 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.netbeans.core.netigso;
import java.io.File;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import org.netbeans.MockEvents;
import org.netbeans.MockModuleInstaller;
import org.netbeans.Module;
import org.netbeans.ModuleManager;
import org.openide.modules.Dependency;
/**
*
* @author Jaroslav Tulach <jtulach@netbeans.org>
*/
public class NetigsoOSGiCanImportSubpackageTest extends NetigsoHid {
public NetigsoOSGiCanImportSubpackageTest(String name) {
super(name);
}
public void testOSGiCanDependOnNetBeans() throws Exception {
MockModuleInstaller installer = new MockModuleInstaller();
MockEvents ev = new MockEvents();
ModuleManager mgr = new ModuleManager(installer, ev);
mgr.mutexPrivileged().enterWriteAccess();
HashSet<Module> both = null;
try {
String mfFoo = "OpenIDE-Module: org.foo/1\n" +
"OpenIDE-Module-Name: Foo test module\n" +
"OpenIDE-Module-Specification-Version: 1.2\n" +
"OpenIDE-Module-Public-Packages: org.**\n" +
"\n";
String mfBar = "Bundle-SymbolicName: org.bar\n" +
"Bundle-Version: 1.1.0\n" +
"Bundle-ManifestVersion: 2\n" +
"Export-Package: org.bar\n" +
"Import-Package: org.foo\n" +
"\n\n";
File j1 = changeManifest(new File(jars, "simple-module.jar"), mfFoo);
File j2 = changeManifest(new File(jars, "depends-on-simple-module.jar"), mfBar);
Module m1 = mgr.create(j1, null, false, false, false);
Module m2 = mgr.create(j2, null, false, false, false);
HashSet<Module> b = new HashSet<Module>(Arrays.asList(m1, m2));
mgr.enable(b);
both = b;
Class<?> clazz = m2.getClassLoader().loadClass("org.bar.SomethingElse");
Class<?> sprclass = m2.getClassLoader().loadClass("org.foo.Something");
assertEquals("Correct parent is used", sprclass, clazz.getSuperclass());
} finally {
if (both != null) {
mgr.disable(both);
}
mgr.mutexPrivileged().exitWriteAccess();
}
}
}