This is an automated email from the ASF dual-hosted git repository.
davidb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
The following commit(s) were added to refs/heads/master by this push:
new a8a1934b Sling mini Native (#115)
a8a1934b is described below
commit a8a1934b3ac357a3b0d91a20ea0fc096fc811c81
Author: David Bosschaert <[email protected]>
AuthorDate: Wed Oct 30 11:09:59 2024 +0100
Sling mini Native (#115)
Native Compilation pom and scripts
---
sling-mini/native/Dockerfile.offline | 12 +
sling-mini/native/README.md | 47 +++
sling-mini/native/build-docker.sh | 2 +
sling-mini/native/build-nativeoffline.sh | 28 ++
sling-mini/native/launch-nativeoffline.sh | 8 +
sling-mini/native/launch-offline-bare.sh | 14 +
sling-mini/native/launch-offline.sh | 13 +
sling-mini/native/pom.xml | 201 ++++++++++
sling-mini/native/src/main/features/native.json | 501 ++++++++++++++++++++++++
9 files changed, 826 insertions(+)
diff --git a/sling-mini/native/Dockerfile.offline
b/sling-mini/native/Dockerfile.offline
new file mode 100644
index 00000000..d7bf1b12
--- /dev/null
+++ b/sling-mini/native/Dockerfile.offline
@@ -0,0 +1,12 @@
+FROM openjdk:21-jdk-oracle
+
+WORKDIR /root
+
+RUN mkdir artifacts && mkdir atomos-config && mkdir slingfeature-tmp && mkdir
/tmp/offliner
+
+COPY target/artifacts artifacts
+COPY target/atomos-config/app.substrate.jar atomos-config
+COPY target/slingfeature-tmp/feature.json slingfeature-tmp
+COPY launch-offline-bare.sh .
+
+ENTRYPOINT ["sh", "-c", "./launch-offline-bare.sh"]
diff --git a/sling-mini/native/README.md b/sling-mini/native/README.md
new file mode 100644
index 00000000..3baaae12
--- /dev/null
+++ b/sling-mini/native/README.md
@@ -0,0 +1,47 @@
+# Native Compilation for Sling-Mini
+
+This subdirectory contains the resources needed to natively compile sling-mini.
+
+## Building the Atomos-based Jar
+
+To build, ensure that sling-mini is built first so that its aggregated
features are available in the Maven cache.
+
+Then
+
+```
+mvn install
+```
+
+This augments the sling-mini feature model with additional native image
metadata and produces an flat-classpath sling-mini jar
+in atomos-config/app.substrate.jar which can be launched with the feature
launcher.
+
+### Launching
+
+To launch the atomos-based jar, run:
+
+```
+launch-offline.sh
+```
+
+By default the process will convert Markdown (`.md`) files found in
`/tmp/docs` into HTML files written to `/tmp/offliner`
+
+
+## Building the Native Image
+
+After building the Atomos-based Jar, this can be used as input to the native
compilation. This is be done with Graal native-image, so ensure GraalVM is
installed.
+
+To build:
+
+```
+./build-nativeoffline.sh
+```
+
+### Launching
+
+To launch the native image:
+
+```
+./launch-nativeoffline.sh
+```
+
+## Docker
\ No newline at end of file
diff --git a/sling-mini/native/build-docker.sh
b/sling-mini/native/build-docker.sh
new file mode 100755
index 00000000..cc2f279f
--- /dev/null
+++ b/sling-mini/native/build-docker.sh
@@ -0,0 +1,2 @@
+docker build -f Dockerfile.offline --platform linux/amd64,linux/arm64/v8 .
+
diff --git a/sling-mini/native/build-nativeoffline.sh
b/sling-mini/native/build-nativeoffline.sh
new file mode 100755
index 00000000..4781bfb0
--- /dev/null
+++ b/sling-mini/native/build-nativeoffline.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+pushd target
+
+ATOMOS_CLASSPATH=""
+ATOMOS_INIT=""
+
+native-image --verbose \
+-cp
"artifacts/org/apache/sling/org.apache.sling.feature.launcher.atomos/0.0.1-SNAPSHOT/org.apache.sling.feature.launcher.atomos-0.0.1-SNAPSHOT.jar:\
+artifacts/org/apache/sling/org.apache.sling.feature.launcher/1.2.4/org.apache.sling.feature.launcher-1.2.4.jar:\
+artifacts/org/apache/felix/org.apache.felix.atomos/1.0.1-SNAPSHOT/org.apache.felix.atomos-1.0.1-SNAPSHOT.jar:\
+artifacts/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:\
+artifacts/org/slf4j/slf4j-simple/1.7.25/slf4j-simple-1.7.25.jar:\
+artifacts/org/apache/sling/org.apache.sling.feature/1.3.0/org.apache.sling.feature-1.3.0.jar:\
+artifacts/org/apache/felix/org.apache.felix.cm.json/1.0.6/org.apache.felix.cm.json-1.0.6.jar:\
+artifacts/commons-cli/commons-cli/1.4/commons-cli-1.4.jar:\
+artifacts/org/apache/felix/org.apache.felix.framework/7.0.5/org.apache.felix.framework-7.0.5.jar:\
+artifacts/org/apache/sling/org.apache.sling.commons.johnzon/1.2.16/org.apache.sling.commons.johnzon-1.2.16.jar:\
+artifacts/org/apache/commons/commons-text/1.10.0/commons-text-1.10.0.jar:\
+atomos-config/app.substrate.jar" \
+org.apache.sling.feature.launcher.impl.Main \
+-o sling_native -O3 "-march=native" "--gc=epsilon" --no-fallback \
+"$@"
+
+popd
+
+# --pgo-instrument / --pgo
+#
diff --git a/sling-mini/native/launch-nativeoffline.sh
b/sling-mini/native/launch-nativeoffline.sh
new file mode 100755
index 00000000..3f7c0306
--- /dev/null
+++ b/sling-mini/native/launch-nativeoffline.sh
@@ -0,0 +1,8 @@
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
+echo script dir: $SCRIPT_DIR
+
+pushd target
+rm -rf launcher
+rm /tmp/offliner/test.md.html
+time ./sling_native -f file://$SCRIPT_DIR/target/slingfeature-tmp/feature.json
+popd
diff --git a/sling-mini/native/launch-offline-bare.sh
b/sling-mini/native/launch-offline-bare.sh
new file mode 100755
index 00000000..c9a55453
--- /dev/null
+++ b/sling-mini/native/launch-offline-bare.sh
@@ -0,0 +1,14 @@
+java \
+-DSOURCE_DIR=$SOURCE_DIR -DTARGET_DIR=$TARGET_DIR \
+-cp
"artifacts/org/apache/sling/org.apache.sling.feature.launcher.atomos/0.0.1-SNAPSHOT/org.apache.sling.feature.launcher.atomos-0.0.1-SNAPSHOT.jar:\
+artifacts/org/apache/sling/org.apache.sling.feature.launcher/1.2.4/org.apache.sling.feature.launcher-1.2.4.jar:\
+artifacts/org/apache/felix/org.apache.felix.atomos/1.0.1-SNAPSHOT/org.apache.felix.atomos-1.0.1-SNAPSHOT.jar:\
+artifacts/org/apache/sling/org.apache.sling.feature/1.3.0/org.apache.sling.feature-1.3.0.jar:\
+artifacts/org/apache/felix/org.apache.felix.cm.json/1.0.6/org.apache.felix.cm.json-1.0.6.jar:\
+artifacts/commons-cli/commons-cli/1.4/commons-cli-1.4.jar:\
+artifacts/org/apache/felix/org.apache.felix.framework/7.0.5/org.apache.felix.framework-7.0.5.jar:\
+artifacts/org/apache/sling/org.apache.sling.commons.johnzon/1.2.16/org.apache.sling.commons.johnzon-1.2.16.jar:\
+artifacts/org/apache/commons/commons-text/1.10.0/commons-text-1.10.0.jar:\
+atomos-config/app.substrate.jar" \
+org.apache.sling.feature.launcher.impl.Main \
+-f slingfeature-tmp/feature.json
diff --git a/sling-mini/native/launch-offline.sh
b/sling-mini/native/launch-offline.sh
new file mode 100755
index 00000000..62e6dd44
--- /dev/null
+++ b/sling-mini/native/launch-offline.sh
@@ -0,0 +1,13 @@
+pushd target
+rm -rf launcher
+
+if [ -z "${SOURCE_DIR}" ]; then
+ export SOURCE_DIR=/tmp/docs
+fi
+if [ -z "${TARGET_DIR}" ]; then
+ export TARGET_DIR=/tmp/offliner
+fi
+echo Using SOURCE_DIR=$SOURCE_DIR
+echo TARGET_DIR=$TARGET_DIR
+time ../launch-offline-bare.sh
+popd
diff --git a/sling-mini/native/pom.xml b/sling-mini/native/pom.xml
new file mode 100644
index 00000000..a7335797
--- /dev/null
+++ b/sling-mini/native/pom.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling</artifactId>
+ <version>52</version>
+ <relativePath />
+ </parent>
+
+ <artifactId>org.apache.sling.starter.minimal.native</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>Apache Sling Minimal Starter - Native Compilation</name>
+ <description>A minimal starter for Apache Sling, compiled to native
code</description>
+
+ <packaging>slingosgifeature</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>slingfeature-maven-plugin</artifactId>
+ <version>1.8.4</version>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <id>create-full</id>
+ <goals>
+ <goal>aggregate-features</goal>
+ </goals>
+ <configuration>
+ <aggregates>
+ <aggregate>
+ <includeArtifact>
+ <groupId>org.apache.sling</groupId>
+
<artifactId>org.apache.sling.starter.minimal</artifactId>
+ <version>${project.version}</version>
+ <classifier>offlineapp</classifier>
+ <type>slingosgifeature</type>
+ </includeArtifact>
+ <filesInclude>native.json</filesInclude>
+ </aggregate>
+ </aggregates>
+ </configuration>
+ </execution>
+ <execution>
+ <id>create-repository</id>
+ <goals>
+ <goal>repository</goal>
+ </goals>
+ <configuration>
+ <repositories>
+ <repository>
+ <includeArtifact>
+ <groupId>org.apache.sling</groupId>
+
<artifactId>org.apache.sling.starter.minimal</artifactId>
+ <version>${project.version}</version>
+ <classifier>offlineapp</classifier>
+ <type>slingosgifeature</type>
+ </includeArtifact>
+ <embedArtifacts>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+
<artifactId>org.apache.sling.feature.launcher.atomos</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+
<artifactId>org.apache.sling.feature.launcher</artifactId>
+ <version>1.2.4</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.core</artifactId>
+ <version>8.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+
<artifactId>org.apache.felix.framework</artifactId>
+ <version>7.0.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+
<artifactId>org.apache.felix.atomos</artifactId>
+ <version>1.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+
<groupId>org.apache.commons</groupId>
+
<artifactId>commons-text</artifactId>
+ <version>1.10.0</version>
+ </dependency>
+ <dependency>
+
<groupId>org.apache.commons</groupId>
+
<artifactId>commons-lang3</artifactId>
+ <version>3.12.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+
<artifactId>slf4j-simple</artifactId>
+ <version>1.7.25</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+
<artifactId>org.apache.sling.feature</artifactId>
+ <version>1.3.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+
<artifactId>org.apache.felix.cm.json</artifactId>
+ <version>1.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-cli</groupId>
+
<artifactId>commons-cli</artifactId>
+ <version>1.4</version>
+ </dependency>
+
+ <!-- TODO can we get rid of this one?
-->
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+
<artifactId>org.apache.sling.commons.johnzon</artifactId>
+ <version>1.2.16</version>
+ </dependency>
+ </embedArtifacts>
+ </repository>
+ </repositories>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>3.1.0</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <executable>java</executable>
+ <arguments>
+ <argument>-jar</argument>
+ <classpath>
+
<dependency>org.apache.sling:org.apache.sling.feature.launcher.atomos.config</dependency>
+ </classpath>
+ <argument>-u</argument>
+
<argument>file:${build.directory}/artifacts</argument>
+ <argument>-f</argument>
+
<argument>file:${build.directory}/slingfeature-tmp/feature.json</argument>
+ </arguments>
+ <inheritIo>true</inheritIo>
+ <addOutputToClasspath>false</addOutputToClasspath>
+
<workingDirectory>${build.directory}</workingDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+
<artifactId>org.apache.sling.feature.launcher.atomos.config</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <classifier>fatjar</classifier>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>*</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+</project>
+
diff --git a/sling-mini/native/src/main/features/native.json
b/sling-mini/native/src/main/features/native.json
new file mode 100644
index 00000000..28e8015f
--- /dev/null
+++ b/sling-mini/native/src/main/features/native.json
@@ -0,0 +1,501 @@
+{
+ "atomos-config:JSON|false": {
+ "initialize-at-build-time": [
+ "org.apache.felix",
+ "org.osgi",
+ "org.eclipse.jetty",
+ "ch",
+ "org.slf4j",
+ "org.apache.johnzon",
+ "org.apache.http",
+ "org.owasp",
+ "org.apache.logging.slf4j",
+ "org.quartz.core",
+ "org.apache.logging",
+ "org.apache.sling.api",
+ "slingxss.com.google.common"
+ ],
+ "reflect-config": [
+ {
+ "name":"com.vladsch.flexmark.util.ast.TextContainer$Flags",
+ "allPublicFields":true
+ },
+ {
+ "name":"com.vladsch.flexmark.util.sequence.BasedOptionsHolder$Options",
+ "allPublicFields":true
+ },
+ {
+ "name":"com.vladsch.flexmark.util.sequence.LineAppendable$Options",
+ "allPublicFields":true
+ },
+ {
+ "name":"com.vladsch.flexmark.util.sequence.LineInfo$Flags",
+ "allPublicFields":true
+ },
+ {
+
"name":"com.vladsch.flexmark.util.sequence.builder.ISegmentBuilder$Options",
+ "allPublicFields":true
+ },
+
+ {
+ "name":"[B"
+ },
+ {
+ "name":"[C"
+ },
+ {
+ "name":"[D"
+ },
+ {
+ "name":"[F"
+ },
+ {
+ "name":"[I"
+ },
+ {
+ "name":"[J"
+ },
+ {
+ "name":"[Ljava.lang.String;",
+ "allPublicFields":true,
+ "queryAllPublicMethods":true
+ },
+ {
+ "name":"[Ljava.lang.invoke.MethodHandles$Lookup$ClassOption;"
+ },
+ {
+ "name":"[Ljavax.management.openmbean.CompositeData;"
+ },
+ {
+ "name":"[Lorg.eclipse.jetty.server.Handler;"
+ },
+ {
+
"name":"[Lorg.eclipse.jetty.server.handler.ContextHandlerCollection$Branch;"
+ },
+ {
+ "name":"[Lorg.eclipse.jetty.servlet.ServletMapping;"
+ },
+ {
+ "name":"[S"
+ },
+ {
+ "name":"[Z"
+ },
+ {
+
"name":"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl",
+ "methods":[{"name":"<init>","parameterTypes":[] }]
+ },
+ {
+
"name":"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl",
+ "methods":[{"name":"<init>","parameterTypes":[] }]
+ },
+ {
+ "name":"java.io.FilePermission"
+ },
+ {
+ "name":"java.lang.Boolean",
+ "fields":[{"name":"TYPE"}],
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"java.lang.Byte",
+ "fields":[{"name":"TYPE"}],
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"java.lang.Character",
+ "fields":[{"name":"TYPE"}]
+ },
+ {
+ "name":"java.lang.Class",
+ "methods":[{"name":"getModule","parameterTypes":[] }]
+ },
+ {
+ "name":"java.lang.ClassLoader",
+ "methods":[{"name":"getPlatformClassLoader","parameterTypes":[] }]
+ },
+ {
+ "name":"java.lang.Deprecated",
+ "queryAllPublicMethods":true
+ },
+ {
+ "name":"java.lang.Double",
+ "fields":[{"name":"TYPE"}],
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"java.lang.Float",
+ "fields":[{"name":"TYPE"}],
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"java.lang.Integer",
+ "fields":[{"name":"TYPE"}],
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"java.lang.Long",
+ "fields":[{"name":"TYPE"}],
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"java.lang.Module",
+ "methods":[{"name":"getDescriptor","parameterTypes":[] },
{"name":"getLayer","parameterTypes":[] }, {"name":"getName","parameterTypes":[]
}]
+ },
+ {
+ "name":"java.lang.ModuleLayer",
+ "methods":[{"name":"boot","parameterTypes":[] },
{"name":"configuration","parameterTypes":[] },
{"name":"modules","parameterTypes":[] }]
+ },
+ {
+ "name":"java.lang.Object",
+ "queryAllDeclaredMethods":true,
+ "queryAllPublicMethods":true,
+
"methods":[{"name":"activate","parameterTypes":["org.osgi.service.component.ComponentContext"]
},
{"name":"deactivate","parameterTypes":["org.osgi.service.component.ComponentContext"]
}]
+ },
+ {
+ "name":"java.lang.Runnable"
+ },
+ {
+ "name":"java.lang.RuntimePermission"
+ },
+ {
+ "name":"java.lang.Short",
+ "fields":[{"name":"TYPE"}],
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"java.lang.StackTraceElement",
+ "queryAllPublicMethods":true
+ },
+ {
+ "name":"java.lang.String",
+ "queryAllPublicMethods":true,
+ "fields":[{"name":"TYPE"}]
+ },
+ {
+ "name":"java.lang.Thread",
+ "fields":[{"name":"threadLocalRandomProbe"},
{"name":"threadLocals"}],
+ "methods":[{"name":"getId","parameterTypes":[] },
{"name":"getStackTrace","parameterTypes":[] }]
+ },
+ {
+ "name":"java.lang.Throwable",
+ "methods":[{"name":"getSuppressed","parameterTypes":[] }]
+ },
+ {
+ "name":"java.lang.Void",
+ "fields":[{"name":"TYPE"}]
+ },
+ {
+ "name":"java.lang.annotation.Annotation",
+ "queryAllPublicMethods":true
+ },
+
+
+
+
+ {
+ "name":"java.net.URL",
+ "allDeclaredFields":true,
+
"methods":[{"name":"getURLStreamHandler","parameterTypes":["java.lang.String"]
}]
+ },
+ {
+ "name":"java.net.URLClassLoader",
+ "methods":[{"name":"addURL","parameterTypes":["java.net.URL"] }]
+ },
+ {
+ "name":"java.net.URLConnection",
+ "allDeclaredFields":true
+ },
+ {
+ "name":"java.net.URLPermission",
+
"methods":[{"name":"<init>","parameterTypes":["java.lang.String","java.lang.String"]
}]
+ },
+ {
+ "name":"java.net.URLStreamHandler",
+
"methods":[{"name":"equals","parameterTypes":["java.net.URL","java.net.URL"] },
{"name":"getDefaultPort","parameterTypes":[] },
{"name":"getHostAddress","parameterTypes":["java.net.URL"] },
{"name":"hashCode","parameterTypes":["java.net.URL"] },
{"name":"hostsEqual","parameterTypes":["java.net.URL","java.net.URL"] },
{"name":"openConnection","parameterTypes":["java.net.URL"] },
{"name":"openConnection","parameterTypes":["java.net.URL","java.net.Proxy"] },
{"name":"sameFile","para [...]
+ },
+ {
+ "name":"org.osgi.service.metatype.MetaTypeProvider"
+ },
+ {
+ "name": "org.apache.sling.feature.launcher.atomos.AtomosRunner",
+ "allPublicConstructors": true
+ },
+ {
+ "name":
"org.apache.felix.cm.impl.persistence.MemoryPersistenceManager",
+ "methods": [
+ {
+ "name": "store",
+ "parameterTypes": [
+ "java.lang.String",
+ "java.util.Dictionary"
+ ]
+ }]
+ },
+ {
+ "name": "org.apache.xerces.util.SecurityManager",
+ "allPublicMethods" : true
+ },
+ {
+ "name":"org.osgi.service.cm.Configuration",
+
"methods":[{"name":"getProcessedProperties","parameterTypes":["org.osgi.framework.ServiceReference"]
}, {"name":"getProperties","parameterTypes":[] }]
+ },
+ {
+ "name":"org.osgi.service.cm.ConfigurationAdmin",
+ "queryAllPublicMethods":true,
+
"methods":[{"name":"getConfiguration","parameterTypes":["java.lang.String","java.lang.String"]
}, {"name":"listConfigurations","parameterTypes":["java.lang.String"] }]
+ },
+ {
+ "name":"org.osgi.service.cm.ConfigurationEvent",
+ "methods":[{"name":"getPid","parameterTypes":[] },
{"name":"getType","parameterTypes":[] }]
+ },
+ {
+ "name":"org.osgi.service.cm.ConfigurationListener",
+
"methods":[{"name":"configurationEvent","parameterTypes":["org.osgi.service.cm.ConfigurationEvent"]
}]
+ },
+ {
+ "name":
"org.apache.felix.webconsole.internal.configuration.ConfigManager",
+ "allPublicConstructors": true
+ },
+ {
+ "name": "org.apache.felix.webconsole.internal.compendium.LogServlet",
+ "allPublicConstructors": true
+ },
+ {
+ "name": "org.apache.felix.webconsole.internal.core.BundlesServlet",
+ "allPublicConstructors": true
+ },
+ {
+ "name": "org.apache.felix.webconsole.internal.core.ServicesServlet",
+ "allPublicConstructors": true
+ },
+ {
+ "name": "org.apache.felix.webconsole.internal.misc.LicenseServlet",
+ "allPublicConstructors": true
+ },
+ {
+ "name": "org.apache.felix.webconsole.internal.system.VMStatPlugin",
+ "allPublicConstructors": true
+ },
+ {
+ "name": "org.apache.xerces.util.SecurityManager",
+ "allPublicConstructors": true
+ },
+ {
+ "name": "org.owasp.esapi.reference.DefaultSecurityConfiguration",
+ "allPublicConstructors": true
+ },
+ {
+
+ "name":
"org.apache.sling.commons.scheduler.impl.NonParallelQuartzJobExecutor",
+ "allPublicConstructors": true
+ },
+ {
+
+ "name": "org.owasp.esapi.reference.DefaultValidator",
+ "allPublicConstructors": true
+ },
+ {
+
+ "name": "org.owasp.esapi.reference.DefaultEncoder",
+ "allPublicConstructors": true,
+ "methods":[{"name":"<init>","parameterTypes":[] }]
+ },{
+ "name":"org.owasp.esapi.codecs.HTMLEntityCodec",
+ "methods":[{"name":"<init>","parameterTypes":[] }]
+ },
+ {
+ "name":"org.owasp.esapi.codecs.PercentCodec",
+ "methods":[{"name":"<init>","parameterTypes":[] }]
+ },
+ {
+ "name":"org.owasp.esapi.reference.DefaultEncoder",
+ "methods":[{"name":"getInstance","parameterTypes":[] }]
+ },
+ {
+ "name":"org.owasp.esapi.reference.DefaultSecurityConfiguration",
+ "methods":[{"name":"getInstance","parameterTypes":[] }]
+ },
+ {
+ "name":"org.owasp.esapi.reference.DefaultValidator",
+ "methods":[{"name":"getInstance","parameterTypes":[] }]
+ },
+ {
+ "name":"org.owasp.esapi.reference.JavaLogFactory",
+ "methods":[{"name":"getInstance","parameterTypes":[] }]
+ },
+ {
+ "name":"org.apache.felix.webconsole.SimpleWebConsolePlugin",
+ "queryAllDeclaredMethods":true,
+ "queryAllPublicMethods":true,
+ "methods":[{"name":"getResource","parameterTypes":["java.lang.String"]
}]
+ }
+ ],
+ "resource-config": {
+ "resources" : [{ "pattern" : "META-INF/features/.*" }, { "pattern" :
"OSGI-INF/metatype/.*"}]
+ },
+ "proxy-config": [
+ ["org.osgi.service.cm.ConfigurationListener"]
+ ],
+ "jni-config": [
+ {
+ "name": "[Lcom.sun.management.internal.DiagnosticCommandArgumentInfo;"
+ },
+ {
+ "name": "[Lcom.sun.management.internal.DiagnosticCommandInfo;"
+ },
+ {
+ "name": "com.sun.management.internal.DiagnosticCommandArgumentInfo",
+ "methods": [
+ {
+ "name": "<init>",
+ "parameterTypes": [
+ "java.lang.String",
+ "java.lang.String",
+ "java.lang.String",
+ "java.lang.String",
+ "boolean",
+ "boolean",
+ "boolean",
+ "int"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "com.sun.management.internal.DiagnosticCommandInfo",
+ "methods": [
+ {
+ "name": "<init>",
+ "parameterTypes": [
+ "java.lang.String",
+ "java.lang.String",
+ "java.lang.String",
+ "java.lang.String",
+ "java.lang.String",
+ "java.lang.String",
+ "boolean",
+ "java.util.List"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "java.lang.Boolean",
+ "methods": [
+ {
+ "name": "getBoolean",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "java.lang.SecurityManager",
+ "fields": [
+ {
+ "name": "initialized"
+ }
+ ]
+ },
+ {
+ "name": "java.lang.String",
+ "methods": [
+ {
+ "name": "lastIndexOf",
+ "parameterTypes": [
+ "int"
+ ]
+ },
+ {
+ "name": "substring",
+ "parameterTypes": [
+ "int"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "java.lang.System",
+ "methods": [
+ {
+ "name": "getProperty",
+ "parameterTypes": [
+ "java.lang.String"
+ ]
+ },
+ {
+ "name": "setProperty",
+ "parameterTypes": [
+ "java.lang.String",
+ "java.lang.String"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "java.util.Arrays",
+ "methods": [
+ {
+ "name": "asList",
+ "parameterTypes": [
+ "java.lang.Object[]"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "org.apache.felix.atomos.Atomos",
+ "methods": [
+ {
+ "name": "main",
+ "parameterTypes": [
+ "java.lang.String[]"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "sun.management.VMManagementImpl",
+ "fields": [
+ {
+ "name": "compTimeMonitoringSupport"
+ },
+ {
+ "name": "currentThreadCpuTimeSupport"
+ },
+ {
+ "name": "objectMonitorUsageSupport"
+ },
+ {
+ "name": "otherThreadCpuTimeSupport"
+ },
+ {
+ "name": "remoteDiagnosticCommandsSupport"
+ },
+ {
+ "name": "synchronizerUsageSupport"
+ },
+ {
+ "name": "threadAllocatedMemorySupport"
+ },
+ {
+ "name": "threadContentionMonitoringSupport"
+ }
+ ]
+ }
+ ],
+ "serialization-config": {
+ "types": [
+ {
+ "name": "java.util.ArrayList"
+ }
+ ],
+ "lambdaCapturingTypes": [
+ ],
+ "proxies": [
+ ]
+ }
+ }
+}
\ No newline at end of file