├── .asf.yaml ├── .gitattributes ├── .github ├── asf-slack-felix-atomos-yellow.svg └── workflows │ └── maven.yml ├── .gitignore ├── .gitpod.yml ├── .mvn └── wrapper │ └── maven-wrapper.properties ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── atomos-parent └── pom.xml ├── atomos.examples ├── README.md ├── SUBSTRATE.md ├── atomos.examples.android │ ├── .gitignore │ ├── README.md │ ├── app │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── libs │ │ │ ├── .gitignore │ │ │ └── README.txt │ │ ├── lint.xml │ │ ├── proguard-rules.pro │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── felix │ │ │ │ └── atomos │ │ │ │ └── examples │ │ │ │ └── android │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── atomos.examples.index │ ├── README.md │ └── pom.xml ├── atomos.examples.jaxrs.bundle │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── apache │ │ └── felix │ │ └── atomos │ │ └── examples │ │ └── jaxrs │ │ └── bundle │ │ ├── HelloResource.java │ │ └── HelloService.java ├── atomos.examples.jaxrs │ ├── README.md │ ├── additionalResourceConfig.json │ ├── pom.xml │ ├── proxy_config.json │ ├── reflectAgentConfig.json │ ├── reflectConfig_felix_atomos.json │ ├── reflectConfig_felix_gogo.json │ ├── reflectConfig_felix_web.json │ ├── reflectConfig_jdk.json │ ├── reflectConfig_jetty.json │ └── resourceAgentConfig.json ├── atomos.examples.jlink │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ ├── module-info.java │ │ └── org │ │ └── apache │ │ └── felix │ │ └── atomos │ │ └── examples │ │ └── jlink │ │ └── GogoConsole.java ├── atomos.examples.springloader │ ├── README.md │ └── pom.xml ├── atomos.examples.substrate.lib │ ├── README.md │ ├── graal_class_config.json │ ├── graal_proxy_config.json │ ├── graal_resource_config.json │ └── pom.xml ├── atomos.examples.substrate.maven │ ├── README.md │ ├── additionalResourceConfig.json │ ├── pom.xml │ ├── proxy_config.json │ ├── reflectConfig_felix_atomos.json │ ├── reflectConfig_felix_gogo.json │ ├── reflectConfig_felix_web.json │ ├── reflectConfig_jdk.json │ └── reflectConfig_jetty.json ├── atomos.examples.webconsole.bom │ └── pom.xml └── pom.xml ├── atomos.maven ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── apache │ └── felix │ └── atomos │ └── maven │ ├── LauncherBuilderUtil.java │ ├── configs │ ├── MavenClassPathConfig.java │ ├── MavenClassPathFileConfig.java │ ├── MavenClasspathMavenConfig.java │ ├── MavenIndexConfig.java │ ├── MavenNativeImageConfig.java │ └── MavenShadeConfig.java │ ├── index │ └── AtomosIndexMojo.java │ └── nativeimage │ └── NativeImageMojo.java ├── atomos.osgi.core ├── pom.xml └── src │ └── main │ └── resources │ └── README ├── atomos.substrate.config ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── apache │ └── felix │ └── atomos │ └── substrate │ └── config │ ├── ReflectConfig.java │ ├── ResourceConfig.java │ └── SubstrateService.java ├── atomos.tests ├── atomos.tests.classpath.service │ ├── pom.xml │ └── src │ │ └── test │ │ └── java │ │ └── org │ │ └── apache │ │ └── felix │ │ └── atomos │ │ └── tests │ │ └── classpath │ │ └── service │ │ └── test │ │ └── ClasspathLaunchTest.java ├── atomos.tests.index.bundles │ ├── pom.xml │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── index │ │ │ └── bundles │ │ │ ├── IndexLaunchTest.java │ │ │ ├── TestClass.java │ │ │ ├── b1 │ │ │ └── ActivatorBundle1.java │ │ │ ├── b2 │ │ │ └── ActivatorBundle2.java │ │ │ ├── b3 │ │ │ └── ActivatorBundle3.java │ │ │ └── b4 │ │ │ └── ActivatorBundle4.java │ │ └── resources │ │ ├── OSGI-INF │ │ ├── bundle.1-1.txt │ │ ├── bundle.1-2.txt │ │ ├── bundle.2-1.txt │ │ ├── bundle.2-2.txt │ │ ├── bundle.3-1.txt │ │ ├── bundle.3-2.txt │ │ ├── bundle.4-1.txt │ │ ├── bundle.4-2.txt │ │ └── notFound.txt │ │ ├── atomos │ │ ├── 1 │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ └── OSGI-INF │ │ │ │ └── common.txt │ │ ├── 2 │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ └── OSGI-INF │ │ │ │ └── common.txt │ │ ├── 3 │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ └── OSGI-INF │ │ │ │ └── common.txt │ │ ├── 4 │ │ │ ├── META-INF │ │ │ │ └── MANIFEST.MF │ │ │ └── OSGI-INF │ │ │ │ └── common.txt │ │ └── bundles.index │ │ └── testIndex │ │ ├── 3 │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ └── OSGI-INF │ │ │ └── common.txt │ │ ├── 4 │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ └── OSGI-INF │ │ │ └── common.txt │ │ └── test.index ├── atomos.tests.modulepath.service │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── modulepath │ │ │ └── service │ │ │ └── ModulepathLaunch.java │ │ └── test │ │ └── java │ │ └── org │ │ └── apache │ │ └── felix │ │ └── atomos │ │ └── tests │ │ └── modulepath │ │ └── service │ │ └── ModulepathLaunchTest.java ├── atomos.tests.testbundles │ ├── atomos.tests.testbundles.bom │ │ └── pom.xml │ ├── atomos.tests.testbundles.dependency.a │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── dependency │ │ │ └── a │ │ │ ├── A.java │ │ │ └── package-info.java │ ├── atomos.tests.testbundles.dependency.b │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── dependency │ │ │ └── b │ │ │ ├── B.java │ │ │ └── package-info.java │ ├── atomos.tests.testbundles.dependent.x │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── dependent │ │ │ └── x │ │ │ ├── Activator.java │ │ │ └── X.java │ ├── atomos.tests.testbundles.reflect.command │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── reflect │ │ │ └── command │ │ │ ├── A.java │ │ │ ├── AbstractCmd.java │ │ │ ├── CmdExample.java │ │ │ ├── CommandFunction.java │ │ │ └── CommandScope.java │ ├── atomos.tests.testbundles.reflect.dto │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── reflect │ │ │ └── command │ │ │ └── OneDTO.java │ ├── atomos.tests.testbundles.resources.a │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── felix │ │ │ │ └── atomos │ │ │ │ └── tests │ │ │ │ └── testbundles │ │ │ │ └── resource │ │ │ │ └── a │ │ │ │ └── Clazz.java │ │ │ └── resources │ │ │ ├── META-TEXT │ │ │ └── file.txt │ │ │ ├── file.txt │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── resource │ │ │ └── a │ │ │ └── file.txt │ ├── atomos.tests.testbundles.service.contract │ │ ├── bnd.bnd │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── service │ │ │ └── contract │ │ │ ├── Echo.java │ │ │ └── package-info.java │ ├── atomos.tests.testbundles.service.impl.a │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── service │ │ │ └── impl │ │ │ └── a │ │ │ └── EchoImpl.java │ ├── atomos.tests.testbundles.service.impl.activator │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── service │ │ │ └── impl │ │ │ └── activator │ │ │ ├── Activator.java │ │ │ └── ActivatorEcho.java │ ├── atomos.tests.testbundles.service.impl.b │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── service │ │ │ └── impl │ │ │ └── b │ │ │ └── EchoImpl.java │ ├── atomos.tests.testbundles.service.impl │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── service │ │ │ └── impl │ │ │ └── EchoImpl.java │ ├── atomos.tests.testbundles.service.library │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── service │ │ │ └── library │ │ │ ├── SomeUtil.java │ │ │ └── package-info.java │ ├── atomos.tests.testbundles.service.user │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ ├── module-info.java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── tests │ │ │ └── testbundles │ │ │ └── service │ │ │ └── user │ │ │ ├── EchoUser.java │ │ │ └── EchoUser2.java │ └── pom.xml └── pom.xml ├── atomos.utils ├── atomos.utils.api │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── utils │ │ │ └── api │ │ │ ├── Config.java │ │ │ ├── Context.java │ │ │ ├── FileCollectionContext.java │ │ │ ├── FileType.java │ │ │ ├── IndexInfo.java │ │ │ ├── Launcher.java │ │ │ ├── LauncherBuilder.java │ │ │ ├── PluginConfigBase.java │ │ │ ├── RegisterServiceCall.java │ │ │ ├── package-info.java │ │ │ └── plugin │ │ │ ├── BundleActivatorPlugin.java │ │ │ ├── ClassPlugin.java │ │ │ ├── ComponentDescription.java │ │ │ ├── ComponentMetaDataPlugin.java │ │ │ ├── FileCollectorPlugin.java │ │ │ ├── FileHandlerPlugin.java │ │ │ ├── FinalPlugin.java │ │ │ ├── JarPlugin.java │ │ │ ├── MethodPlugin.java │ │ │ ├── ReferenceDescription.java │ │ │ ├── RegisterServicepPlugin.java │ │ │ ├── SubstratePlugin.java │ │ │ └── package-info.java │ │ └── test │ │ └── java │ │ └── org │ │ └── apache │ │ └── felix │ │ └── atomos │ │ └── utils │ │ └── LauncherTest.java ├── atomos.utils.core │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── utils │ │ │ └── core │ │ │ ├── ComponentDescriptionImpl.java │ │ │ ├── ContextImpl.java │ │ │ ├── IndexInfoImpl.java │ │ │ ├── LauncherBuilderImpl.java │ │ │ ├── LauncherImpl.java │ │ │ ├── ReferenceDescriptionImpl.java │ │ │ ├── RegisterServiceCallImpl.java │ │ │ ├── plugins │ │ │ ├── ComponentDescriptionPlugin.java │ │ │ ├── GogoPlugin.java │ │ │ ├── OsgiDTOPlugin.java │ │ │ ├── ResourcePlugin.java │ │ │ ├── activator │ │ │ │ ├── InvocatingBundleActivatorPlugin.java │ │ │ │ └── ReflectionBundleActivatorPlugin.java │ │ │ ├── collector │ │ │ │ ├── PathCollectorPlugin.java │ │ │ │ └── PathCollectorPluginConfig.java │ │ │ ├── finaliser │ │ │ │ ├── ni │ │ │ │ │ ├── NativeImageBuilderConfig.java │ │ │ │ │ └── NativeImagePlugin.java │ │ │ │ └── shade │ │ │ │ │ ├── ShadeConfig.java │ │ │ │ │ ├── ShadePreHolder.java │ │ │ │ │ └── ShaderPlugin.java │ │ │ └── index │ │ │ │ ├── IndexOutputType.java │ │ │ │ ├── IndexPlugin.java │ │ │ │ └── IndexPluginConfig.java │ │ │ └── scr │ │ │ └── mock │ │ │ ├── EmptyBundeLogger.java │ │ │ ├── PathBundle.java │ │ │ └── package-info.java │ │ └── test │ │ └── java │ │ └── org │ │ └── apache │ │ └── felix │ │ └── atomos │ │ └── utils │ │ └── core │ │ ├── FullTest.java │ │ ├── GlobalTestConfig.java │ │ ├── MojoTestExperiments.java │ │ ├── ReflectConfigTest.java │ │ ├── TestBase.java │ │ ├── TestConstants.java │ │ ├── TestContext.java │ │ └── plugins │ │ ├── DirectoryFileCollectorPluginTest.java │ │ └── SubstrateTest.java ├── atomos.utils.substrate.api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── apache │ │ └── felix │ │ └── atomos │ │ └── utils │ │ └── substrate │ │ └── api │ │ ├── NativeImageArguments.java │ │ ├── NativeImageArgumentsBuilder.java │ │ ├── NativeImageCli.java │ │ ├── NativeImageCliBuilder.java │ │ ├── NativeImageConfigJsonProvider.java │ │ ├── dynproxy │ │ ├── DynamicProxyConfiguration.java │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── reflect │ │ ├── ReflectionClassConfig.java │ │ ├── ReflectionConfiguration.java │ │ ├── ReflectionConstructorConfig.java │ │ ├── ReflectionFieldConfig.java │ │ ├── ReflectionMethodConfig.java │ │ └── package-info.java │ │ └── resource │ │ ├── ResourceConfiguration.java │ │ └── package-info.java ├── atomos.utils.substrate.impl │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ └── utils │ │ │ └── substrate │ │ │ └── impl │ │ │ ├── BaseNativeImageArguments.java │ │ │ ├── DefaultNativeImageArguments.java │ │ │ ├── NativeImageArgumentsBuilderImpl.java │ │ │ ├── NativeImageArgumentsImpl.java │ │ │ ├── NativeImageCliBuilderImpl.java │ │ │ ├── NativeImageCliImpl.java │ │ │ ├── NativeImageCliUtil.java │ │ │ ├── NativeImageConfigJsonProviderImpl.java │ │ │ ├── config │ │ │ ├── DefaultDynamicProxyConfiguration.java │ │ │ ├── DefaultReflectionClassConfiguration.java │ │ │ ├── DefaultReflectionConfiguration.java │ │ │ ├── DefaultReflectionConstructorConfiguration.java │ │ │ ├── DefaultReflectionFieldConfiguration.java │ │ │ ├── DefaultReflectionMethodConfiguration.java │ │ │ ├── DefaultResourceConfiguration.java │ │ │ └── package-info.java │ │ │ ├── json │ │ │ ├── DynamicProxyJsonUtil.java │ │ │ ├── ReflectJsonUtil.java │ │ │ ├── ResourceJsonUtil.java │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ └── test │ │ └── java │ │ └── org │ │ └── apache │ │ └── felix │ │ └── atomos │ │ └── utils │ │ └── substrate │ │ └── impl │ │ └── json │ │ ├── DynamicProcyJsonTest.java │ │ ├── ReflectConfigJsonTest.java │ │ └── ResourceConfigJsonTest.java └── pom.xml ├── atomos ├── bnd.bnd ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── module-info.java │ │ └── org │ │ │ └── apache │ │ │ └── felix │ │ │ └── atomos │ │ │ ├── Atomos.java │ │ │ ├── AtomosContent.java │ │ │ ├── AtomosLayer.java │ │ │ ├── impl │ │ │ ├── base │ │ │ │ ├── AtomosBase.java │ │ │ │ ├── AtomosClassPath.java │ │ │ │ ├── AtomosCommands.java │ │ │ │ ├── AtomosFrameworkHooks.java │ │ │ │ ├── AtomosFrameworkUtilHelper.java │ │ │ │ ├── AtomosModuleConnector.java │ │ │ │ ├── AtomosStorage.java │ │ │ │ ├── JavaServiceNamespace.java │ │ │ │ └── package-info.java │ │ │ ├── content │ │ │ │ ├── ConnectContentCloseableJar.java │ │ │ │ ├── ConnectContentFile.java │ │ │ │ ├── ConnectContentIndexed.java │ │ │ │ ├── ConnectContentJar.java │ │ │ │ └── package-info.java │ │ │ └── modules │ │ │ │ ├── AtomosModules.java │ │ │ │ ├── ConnectContentModule.java │ │ │ │ ├── ModuleConnectLoader.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ └── resources │ │ └── META-INF │ │ └── services │ │ ├── org.osgi.framework.connect.FrameworkUtilHelper │ │ └── org.osgi.framework.connect.ModuleConnector │ └── test │ └── java │ └── org │ └── apache │ └── felix │ └── atomos │ ├── AtomosTest.java │ ├── GetConfigurationTest.java │ └── impl │ └── content │ └── ConnectContentFileTest.java ├── mvnw ├── mvnw.cmd └── pom.xml /.asf.yaml: -------------------------------------------------------------------------------- 1 | github: 2 | description: "Apache Felix Atomos" 3 | homepage: https://felix.apache.org/ 4 | labels: 5 | - osgi 6 | - modules 7 | - jlink 8 | - substrate 9 | ghp_branch: gh-pages 10 | features: 11 | issues: true 12 | 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Text files with LF eol 2 | *.awk crlf=input 3 | *.bnd crlf=input 4 | *.c crlf=input ident 5 | *.conf crlf=input 6 | *.cpp crlf=input ident 7 | *.css crlf=input 8 | *.groovy crlf=input 9 | *.h crlf=input ident 10 | *.html crlf=input ident 11 | *.java crlf=input ident 12 | *.js crlf=input 13 | *.MF crlf=input 14 | *.php crlf=input 15 | *.pl crlf=input 16 | *.prefs crlf=input 17 | *.properties crlf=input 18 | *.py crlf=input 19 | *.schema crlf=input 20 | *.sh crlf=input 21 | *.tcl crlf=input 22 | *.txt crlf=input 23 | *.xml crlf=input 24 | *.xsd crlf=input ident 25 | *.xsl crlf=input 26 | *.xslt crlf=input 27 | .classpath crlf=input 28 | .project crlf=input 29 | packageinfo crlf=input 30 | Makefile crlf=input 31 | 32 | # No EOL translation 33 | *.bat -crlf 34 | 35 | # Binary. No EOL translation, no diff 36 | *.ico binary 37 | *.jpeg binary 38 | *.jpg binary 39 | *.png binary 40 | *.crt binary 41 | *.pdf binary 42 | *.dll binary 43 | *.jar binary 44 | *.jnilib binary 45 | *.so binary 46 | *.zip binary 47 | *.doc binary 48 | *.ppt binary 49 | *.xls binary 50 | *.odg binary 51 | *.odp binary 52 | *.ods binary 53 | *.odt binary 54 | *.otg binary 55 | *.otp binary 56 | *.ots binary 57 | *.ott binary 58 | *.key binary 59 | *.numbers binary 60 | *.pages binary 61 | -------------------------------------------------------------------------------- /.github/workflows/maven.yml: -------------------------------------------------------------------------------- 1 | name: Java CI 2 | 3 | on: 4 | push: 5 | pull_request: 6 | branches: 7 | - master 8 | 9 | jobs: 10 | test: 11 | name: Test on Java ${{ matrix.java_version }} and OS ${{ matrix.os }} 12 | runs-on: ${{ matrix.os }} 13 | strategy: 14 | matrix: 15 | java_version: ['11', '17', '21'] 16 | os: [ubuntu-latest, windows-latest, macOS-latest] 17 | steps: 18 | - uses: actions/checkout@v1 19 | - name: Set up JDK ${{ matrix.java_version }} 20 | uses: actions/setup-java@v1.4.3 21 | with: 22 | java-version: ${{ matrix.java_version }} 23 | - name: Main build using Felix 24 | run: ./mvnw clean install -B -Pfelix -Pjava8 25 | - name: Main build using Equinox 26 | run: ./mvnw clean install -B -Pequinox -Pjava8 27 | - name: Build Android App 28 | if: matrix.java_version == '11' && matrix.os == 'ubuntu-latest' 29 | run: | 30 | cp atomos.examples/atomos.examples.index/target/org.apache.felix.atomos.examples.index-*.jar atomos.examples/atomos.examples.android/app/libs 31 | atomos.examples/atomos.examples.android/gradlew -b atomos.examples/atomos.examples.android/build.gradle build 32 | 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *# 2 | *.iml 3 | *.ipr 4 | *.iws 5 | *.jar 6 | *.sw? 7 | *~ 8 | .#* 9 | .*.md.html 10 | .DS_Store 11 | .classpath 12 | .factorypath 13 | .gradle 14 | .idea 15 | .metadata 16 | .project 17 | .recommenders 18 | .settings 19 | .springBeans 20 | .theia 21 | /build 22 | /code 23 | _site/ 24 | activemq-data 25 | bin 26 | build 27 | build.log 28 | dependency-reduced-pom.xml 29 | dump.rdb 30 | interpolated*.xml 31 | lib/ 32 | manifest.yml 33 | overridedb.* 34 | settings.xml 35 | target 36 | transaction-logs 37 | .flattened-pom.xml 38 | secrets.yml 39 | .gradletasknamecache 40 | .sts4-cache 41 | configuration/ 42 | felix-cache/ 43 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | tasks: 2 | - init: ./mvnw install -Pjava8 -Pequinox -DskipTests=false 3 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.7/apache-maven-3.9.7-bin.zip 18 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar 19 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | 19 | Apache Software Foundation Code of Conduct 20 | ==== 21 | 22 | Being an Apache project, Apache Felix adheres to the Apache Software Foundation's [Code of Conduct](https://www.apache.org/foundation/policies/conduct.html). 23 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | 19 | Contributing 20 | ==== 21 | 22 | Thanks for choosing to contribute! 23 | 24 | You will find all the necessary details about how you can do this at https://felix.apache.org/documentation/community/contributing.html. 25 | -------------------------------------------------------------------------------- /atomos.examples/README.md: -------------------------------------------------------------------------------- 1 | # Atomos Examples 2 | 3 | The following examples are available: 4 | 1. [Atomos Index example](atomos.examples.index/README.md) - Assembles an executable JAR which uses an Atomos index for bundle entry content. 5 | 1. [Atomos jlink example](atomos.examples.jlink/README.md) - Assembles a jlink image that loads the framework and a set of bundles as modules included in a fit for purpose JVM image 6 | 1. [Atomos Spring Loader example](atomos.examples.springloader/README.md) - Assembles an executable JAR that uses the Spring Jar loader to load bundle content from embedded JAR files. 7 | 1. [Atomos native-image lib folder example](atomos.examples.substrate.lib/README.md) - Assembles a native image using Graal Substrate to load the framework and a set of bundles 8 | 1. [Atomos native-image maven plugin example](atomos.examples.substrate.maven/README.md) - Assembles a native image using Graal Substrate with the atomos-maven-plugin 9 | 1. [Atomos Android example](atomos.examples.android/README.md) - Uses the result of the [Atomos index example](atomos.examples.index/README.md) to build an Android application 10 | 1. [Atomos JAX-RS example](atomos.examples.jaxrs/README.md) - Uses Aries JAX-RS [whiteboard](https://github.com/apache/aries-jax-rs-whiteboard) implementation for a simple JAX-RS resource example. 11 | -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/README.md: -------------------------------------------------------------------------------- 1 | # Atomos Android Example 2 | 3 | This is a very simple Android example project that can be loaded by Android Studio and/or built with `gradlew` from command line: 4 | 5 | `gradlew build` 6 | 7 | Before building the example a JAR file containing an Atomos index and set of bundles must be copied to the `app/libs` folder. For this example it is assumed you copy the executable JAR produced by the [Atomos Index example](../atomos.examples.index/README.md) into the `app/libs` folder. 8 | 9 | The build will produce an APK andoid application at `app/build/outputs/apk/debug/app-debug.apk`. This application can then be installed on an emulator or an android device. The resulting application is very simple. It has a single `Launch Atomos` button. When clicked it will launch Atomos which will automatically install and start all the bundles included in the Atomos index JAR that got copied to the `app/libs` folder. The display should indicate when Atomos has launched and give a status of all the bundles that got started with the application. If using the [Atomos Index example](../atomos.examples.index/README.md) then you can bring up the browser on Android and access the web console with the URL [http://localhost:8080/system/console/bundles](http://localhost:8080/system/console/bundles) with the id/password of admin/admin. 10 | 11 | -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 28 5 | 6 | defaultConfig { 7 | applicationId "org.apache.felix.atomos.examples.android" 8 | minSdkVersion 27 9 | targetSdkVersion 27 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | compileOptions { 21 | sourceCompatibility JavaVersion.VERSION_1_8 22 | targetCompatibility JavaVersion.VERSION_1_8 23 | } 24 | } 25 | 26 | dependencies { 27 | implementation fileTree(dir: 'libs', include: ['*.jar']) 28 | 29 | implementation 'androidx.appcompat:appcompat:1.1.0' 30 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 31 | testImplementation 'junit:junit:4.12' 32 | androidTestImplementation 'androidx.test.ext:junit:1.1.1' 33 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 34 | } 35 | -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/app/libs/.gitignore: -------------------------------------------------------------------------------- 1 | *.jar -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/app/libs/README.txt: -------------------------------------------------------------------------------- 1 | Place Atomos index JAR here -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/app/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 30 | -------------------------------------------------------------------------------- /atomos.examples/atomos.examples.android/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 |