blob: 42ed92e7a61726443d56e48742554757e366ee61 [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.osgi;
import org.netbeans.junit.NbTestCase;
import org.openide.modules.ModuleInfo;
import org.openide.modules.ModuleInstall;
import org.openide.util.Lookup;
public class OSGiMainLookupTest extends NbTestCase {
public OSGiMainLookupTest(String n) {
super(n);
}
protected @Override void setUp() throws Exception {
super.setUp();
clearWorkDir();
}
public void testModuleInfo() throws Exception {
new OSGiProcess(getWorkDir()).newModule().clazz(ModuleInfoInstall.class).manifest(
"OpenIDE-Module: custom",
"OpenIDE-Module-Install: " + ModuleInfoInstall.class.getName(),
"OpenIDE-Module-Module-Dependencies: org.openide.modules, org.openide.util.lookup").done().run(false);
String numberOfModules = System.getProperty("number.of.modules");
assertNotNull(numberOfModules);
assertTrue(numberOfModules, Integer.parseInt(numberOfModules) > 2);
}
public static class ModuleInfoInstall extends ModuleInstall {
public @Override void restored() {
System.setProperty("number.of.modules", String.valueOf(Lookup.getDefault().lookupAll(ModuleInfo.class).size()));
}
}
public void testServicesFolder() throws Exception {
new OSGiProcess(getWorkDir()).newModule().
clazz(Interface.class).clazz(Service.class).clazz(ServicesFolderInstall.class).
sourceFile("custom/layer.xml", "<filesystem>",
"<folder name='Services'>",
"<file name='svc.instance'><attr name='instanceClass' stringvalue='" + Service.class.getName() + "'/>" +
"<attr name='instanceOf' stringvalue='" + Interface.class.getName() + "'/></file>",
"</folder>",
"</filesystem>").manifest(
"OpenIDE-Module: custom",
"OpenIDE-Module-Install: " + ServicesFolderInstall.class.getName(),
"OpenIDE-Module-Layer: custom/layer.xml",
"OpenIDE-Module-Module-Dependencies: org.openide.modules, org.openide.util.lookup, org.netbeans.core/2").done().
module("org.netbeans.core").
run(false);
assertEquals("[ok]", System.getProperty("custom.service.result"));
}
public interface Interface {}
public static class Service implements Interface {
public @Override String toString() {return "ok";}
}
public static class ServicesFolderInstall extends ModuleInstall {
public @Override void restored() {
System.setProperty("custom.service.result", Lookup.getDefault().lookupAll(Interface.class).toString());
}
}
public void testUnloadedServices() throws Exception {
new OSGiProcess(getWorkDir()).newModule().
clazz(ServiceInterface.class).clazz(LoadedService.class).service(ServiceInterface.class, LoadedService.class).
manifest(
"OpenIDE-Module: core",
"OpenIDE-Module-Public-Packages: " + ServiceInterface.class.getPackage().getName() + ".*",
"OpenIDE-Module-Module-Dependencies: org.openide.modules, org.openide.util.lookup").done().
newModule().clazz(UnloadedService.class).service(ServiceInterface.class, UnloadedService.class).
manifest("OpenIDE-Module: other",
"OpenIDE-Module-Requires: org.openide.modules.os.Nonexistent",
"OpenIDE-Module-Module-Dependencies: core").done().newModule().
clazz(ServiceFinder.class).
manifest("OpenIDE-Module: runner",
"OpenIDE-Module-Install: " + ServiceFinder.class.getName(),
"OpenIDE-Module-Module-Dependencies: core").done().run(false);
assertEquals("[LoadedService]", System.getProperty("services"));
}
public static class ServiceFinder extends ModuleInstall {
public @Override void restored() {
System.setProperty("services", Lookup.getDefault().lookupAll(ServiceInterface.class).toString());
}
}
public interface ServiceInterface {}
public static class LoadedService implements ServiceInterface {
@Override public String toString() {return "LoadedService";}
}
public static class UnloadedService implements ServiceInterface {
@Override public String toString() {return "UnloadedService";}
}
}