Use local copy of latest bndlib code for pre-release testing purposes
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1347815 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundleplugin/src/main/java/aQute/bnd/help/Errors.java b/bundleplugin/src/main/java/aQute/bnd/help/Errors.java
new file mode 100644
index 0000000..1d950ad
--- /dev/null
+++ b/bundleplugin/src/main/java/aQute/bnd/help/Errors.java
@@ -0,0 +1,5 @@
+package aQute.bnd.help;
+
+public interface Errors {
+
+}
diff --git a/bundleplugin/src/main/java/aQute/bnd/help/Syntax.java b/bundleplugin/src/main/java/aQute/bnd/help/Syntax.java
new file mode 100644
index 0000000..20a7440
--- /dev/null
+++ b/bundleplugin/src/main/java/aQute/bnd/help/Syntax.java
@@ -0,0 +1,481 @@
+package aQute.bnd.help;
+
+import java.util.*;
+import java.util.regex.*;
+
+import aQute.lib.osgi.*;
+
+public class Syntax implements Constants {
+ final String header;
+ final String lead;
+ final String example;
+ final Pattern pattern;
+ final String values;
+ final Syntax[] children;
+
+ static Syntax version = new Syntax(
+ VERSION_ATTRIBUTE,
+ "A version range to select the version of an export definition. The default value is 0.0.0 .",
+ "version=\"[1.2,3.0)\"",
+ null,
+ Verifier.VERSIONRANGE);
+ static Syntax bundle_symbolic_name = new Syntax(
+ BUNDLE_SYMBOLIC_NAME_ATTRIBUTE,
+ "The bundle symbolic name of the exporting bundle.",
+ "bundle-symbolic-name=com.acme.foo.daffy",
+ null,
+ Verifier.SYMBOLICNAME);
+
+ static Syntax bundle_version = new Syntax(
+ BUNDLE_VERSION_ATTRIBUTE,
+ "a version range to select the bundle version of the exporting bundle. The default value is 0.0.0.",
+ "bundle-version=1.3",
+ null,
+ Verifier.VERSIONRANGE);
+
+ static Syntax path_version = new Syntax(
+ VERSION_ATTRIBUTE,
+ "Specifies the range in the repository, project, or file",
+ "version=project",
+ "project,type",
+ Pattern
+ .compile("project|type|"
+ + Verifier.VERSIONRANGE
+ .toString()));
+
+ @SuppressWarnings("deprecation")
+ static Syntax[] syntaxes = new Syntax[] {
+ new Syntax(
+ BUNDLE_ACTIVATIONPOLICY,
+ "The Bundle-ActivationPolicy specifies how the framework should activate the bundle once started. ",
+ "Bundle-ActivationPolicy: lazy", "lazy", Pattern
+ .compile("lazy")),
+
+ new Syntax(
+ BUNDLE_ACTIVATOR,
+ "The Bundle-Activator header specifies the name of the class used to start and stop the bundle. ",
+ "Bundle-Activator: com.acme.foo.Activator",
+ "${classes;implementing;org.osgi.framework.BundleActivator}",
+ Verifier.FQNPATTERN),
+ new Syntax(
+ BUNDLE_CATEGORY,
+ "The Bundle-Category header holds a comma-separated list of category names",
+ "Bundle-Category: test",
+ "osgi,test,game,util,eclipse,netbeans,jdk,specification",
+ null),
+ new Syntax(
+ BUNDLE_CLASSPATH,
+ "The Bundle-ClassPath header defines a comma-separated list of JAR file path names or directories (inside the bundle) containing classes and resources. The period (’.’) specifies the root directory of the bundle’s JAR. The period is also the default.",
+ "Bundle-Classpath: /lib/libnewgen.so, .", null,
+ Verifier.PATHPATTERN),
+ new Syntax(
+ BUNDLE_CONTACTADDRESS,
+ "The Bundle-ContactAddress header provides the contact address of the vendor. ",
+ "Bundle-ContactAddress: 2400 Oswego Road, Austin, TX 74563",
+ null, null),
+ new Syntax(
+ BUNDLE_COPYRIGHT,
+ "The Bundle-Copyright header contains the copyright specification for this bundle. ",
+ "Bundle-Copyright: OSGi (c) 2002", null, null),
+ new Syntax(
+ BUNDLE_DESCRIPTION,
+ "The Bundle-Description header defines a short description of this bundle.",
+ "Bundle-Description: Ceci ce n'est pas une bundle", null,
+ null),
+
+ new Syntax(
+ BUNDLE_DOCURL,
+ "The Bundle-DocURL headers must contain a URL pointing to documentation about this bundle.",
+ "Bundle-DocURL: http://www.aQute.biz/Code/Bnd", null,
+ Verifier.URLPATTERN),
+
+ new Syntax(
+ BUNDLE_ICON,
+ "The optional Bundle-Icon header provides a list of (relative) URLs to icons representing this bundle in different sizes. ",
+ "Bundle-Icon: /icons/bnd.png;size=64", "/icons/bundle.png",
+ Verifier.URLPATTERN, new Syntax("size",
+ "Icons size in pixels, e.g. 64", "64",
+ "16,32,48,64,128", Verifier.NUMBERPATTERN)),
+
+ new Syntax(
+ BUNDLE_LICENSE,
+ "The Bundle-License header provides an optional machine readable form of license information. The purpose of this header is to automate some of the license processing required by many organizations",
+ "Bundle License: http://www.opensource.org/licenses/jabberpl.php",
+ "http://www.apache.org/licenses/LICENSE-2.0,<<EXTERNAL>>",
+ Pattern.compile("(" + Verifier.URLPATTERN
+ + "|<<EXTERNAL>>)"), new Syntax(
+ DESCRIPTION_ATTRIBUTE,
+ "Human readable description of the license",
+ "description=\"Described the license here\"", null,
+ Verifier.ANYPATTERN), new Syntax(LINK_ATTRIBUTE,
+ "", "", null, Verifier.URLPATTERN)),
+ new Syntax(
+ BUNDLE_LOCALIZATION,
+ "The Bundle-Localization header contains the location in the bundle where localization files can be found. The default value is OSGI-INF/l10n/bundle. Translations are by default therefore OSGI-INF/l10n/bundle_de.properties, OSGI-INF/l10n/bundle_nl.properties, etc.",
+ "Bundle-Localization: OSGI-INF/l10n/bundle",
+ "OSGI-INF/l10n/bundle", Verifier.URLPATTERN),
+ new Syntax(
+ BUNDLE_MANIFESTVERSION,
+ "This header is set by bnd automatically to 2. The Bundle-ManifestVersion header defines that the bundle follows the rules of this specification. The Bundle-ManifestVersion header determines whether the bundle follows the rules of this specification.",
+ "# Bundle-ManifestVersion: 2", "2", Verifier.NUMBERPATTERN),
+ new Syntax(
+ BUNDLE_NAME,
+ "This header will be derived from the Bundle-SymbolicName if not set. The Bundle-Name header defines a readable name for this bundle. This should be a short, human-readable name that can contain spaces.",
+ "Bundle-Name: My Bundle", null, Verifier.ANYPATTERN),
+ new Syntax(
+ BUNDLE_NATIVECODE,
+ "The Bundle-NativeCode header contains a specification of native code libraries contained in this bundle. ",
+ "Bundle-NativeCode: /lib/http.DLL; osname = QNX; osversion = 3.1",
+ null,
+ Verifier.PATHPATTERN,
+ new Syntax(OSNAME_ATTRIBUTE,
+ "The name of the operating system", "osname=MacOS",
+ Processor.join(Verifier.OSNAMES, ","),
+ Verifier.ANYPATTERN),
+ new Syntax(OSVERSION_ATTRIBUTE, "Operating System Version",
+ "osversion=3.1", null, Verifier.ANYPATTERN),
+ new Syntax(LANGUAGE_ATTRIBUTE, "Language ISO 639 code",
+ "language=nl", null, Verifier.ISO639),
+ new Syntax(PROCESSOR_ATTRIBUTE, "Processor name",
+ "processor=x86", Processor.join(
+ Verifier.PROCESSORNAMES, ","),
+ Verifier.ANYPATTERN),
+ new Syntax(
+ SELECTION_FILTER_ATTRIBUTE,
+ "The value of this attribute must be a filter expression that indicates if the native code clause should be selected or not.",
+ "selection-filter=\"(com.acme.windowing=win32)\"",
+ null, Verifier.FILTERPATTERN)),
+ new Syntax(
+ BUNDLE_REQUIREDEXECUTIONENVIRONMENT,
+ "The Bundle-RequiredExecutionEnvironment contains a comma-separated list of execution environments that must be present on the Service Platform.",
+ "Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0",
+ Processor.join(Verifier.EES, ","), Verifier.ANYPATTERN),
+
+ new Syntax(
+ BUNDLE_SYMBOLICNAME,
+ "The Bundle-SymbolicName header specifies a non-localizable name for this bundle. The bundle symbolic name together with a version must identify a unique bundle. The bundle symbolic name should be based on the reverse domain name convention",
+ "Bundle-SymbolicName: com.acme.foo.daffy;singleton:=true",
+ "${p}",
+ Verifier.SYMBOLICNAME,
+ new Syntax(
+ SINGLETON_DIRECTIVE,
+ " Indicates that the bundle can only have a single version resolved. A value of true indicates that the bundle is a singleton bundle. The default value is false. The Framework must resolve at most one bundle when multiple versions of a singleton bundle with the same symbolic name are installed. Singleton bundles do not affect the resolution of non-singleton bundles with the same symbolic name.",
+ "false", "true,false", Verifier.TRUEORFALSEPATTERN),
+ new Syntax(
+ FRAGMENT_ATTACHMENT_DIRECTIVE,
+ "Defines how fragments are allowed to be attached, see the fragments in Fragment Bundles on page73. The following values are valid for this directive:",
+ "", "always|never|resolve-time", Pattern
+ .compile("always|never|resolve-time")),
+ new Syntax(BLUEPRINT_WAIT_FOR_DEPENDENCIES_ATTRIBUTE, "",
+ "", "true,false", Verifier.TRUEORFALSEPATTERN),
+ new Syntax(BLUEPRINT_TIMEOUT_ATTRIBUTE, "", "",
+ "30000,60000,300000", Verifier.NUMBERPATTERN)),
+
+ new Syntax(
+ BUNDLE_UPDATELOCATION,
+ "The Bundle-UpdateLocation header specifies a URL where an update for this bundle should come from. If the bundle is updated, this location should be used, if present, to retrieve the updated JAR file.",
+ "Bundle-UpdateLocation: http://www.acme.com/Firewall/bundle.jar",
+ null, Verifier.URLPATTERN),
+
+ new Syntax(
+ BUNDLE_VENDOR,
+ "The Bundle-Vendor header contains a human-readable description of the bundle vendor. ",
+ "Bundle-Vendor: OSGi Alliance ", null, null),
+
+ new Syntax(
+ BUNDLE_VERSION,
+ "The Bundle-Version header specifies the version of this bundle",
+ "Bundle-Version: 1.23.4.build200903221000", null,
+ Verifier.VERSION),
+
+ new Syntax(
+ DYNAMICIMPORT_PACKAGE,
+ "The DynamicImport-Package header contains a comma-separated list of package names that should be dynamically imported when needed.",
+ "DynamicImport-Package: com.acme.plugin.*", "",
+ Verifier.WILDCARDNAMEPATTERN, version,
+ bundle_symbolic_name, bundle_version),
+
+ new Syntax(
+ EXPORT_PACKAGE,
+ "The Export-Package header contains a declaration of exported packages.",
+ "Export-Package: org.osgi.util.tracker;version=1.3",
+ "${packages}",
+ null,
+ new Syntax(
+ NO_IMPORT_DIRECTIVE,
+ "By default, bnd makes all exports also imports. Adding a -noimport to an exported package will make it export only",
+ "-noimport:=true", "true,false",
+ Verifier.TRUEORFALSEPATTERN),
+ new Syntax(
+ USES_DIRECTIVE,
+ "Calculated by bnd: It is a comma-separated list of package names that are used by the exported package",
+ "Is calculated by bnd", null, null),
+ new Syntax(
+ MANDATORY_DIRECTIVE,
+ "A comma-separated list of attribute names. Note that the use of a comma in the value requires it to be enclosed in double quotes. A bundle importing the package must specify the mandatory attributes, with a value that matches, to resolve to the exported package",
+ "mandatory=\"bar,foo\"", null, null),
+ new Syntax(
+ INCLUDE_DIRECTIVE,
+ "A comma-separated list of class names that must be visible to an importer",
+ "include:=\"Qux*\"", null, null),
+ new Syntax(
+ EXCLUDE_DIRECTIVE,
+ "A comma-separated list of class names that must not be visible to an importer",
+ "exclude:=\"QuxImpl*,BarImpl\"", null,
+ Verifier.WILDCARDNAMEPATTERN), new Syntax(
+ IMPORT_DIRECTIVE, "Experimental", "", null, null)
+
+ ),
+ new Syntax(EXPORT_SERVICE, "Deprecated",
+ "Export-Service: org.osgi.service.log.LogService ",
+ "${classes;implementing;*}", null),
+ new Syntax(
+ FRAGMENT_HOST,
+ "The Fragment-Host header defines the host bundle for this fragment.",
+ "Fragment-Host: org.eclipse.swt; bundle-version=\"[3.0.0,4.0.0)\"",
+ null,
+ null,
+ new Syntax(
+ EXTENSION_DIRECTIVE,
+ " Indicates this extension is a system or boot class path extension. It is only applicable when the Fragment-Host is the System Bundle",
+ "extension:=framework", "framework,bootclasspath",
+ Pattern.compile("framework|bootclasspath")),
+ bundle_version),
+ new Syntax(
+ IMPORT_PACKAGE,
+ "This header is normally calculated by bnd, however, you can decorate packages or skip packages. The Import-Package header declares the imported packages for this bundle",
+ "Import-Package: !com.exotic.*, com.acme.foo;vendor=ACME, *",
+ "${exported_packages}",
+ Verifier.WILDCARDNAMEPATTERN,
+ new Syntax(
+ REMOVE_ATTRIBUTE_DIRECTIVE,
+ "Remove the given attributes from matching imported packages",
+ "-remove-attribute:=foo.*", null,
+ Verifier.WILDCARDNAMEPATTERN),
+ new Syntax(
+ RESOLUTION_DIRECTIVE,
+ "Indicates that the packages must be resolved if the value is mandatory, which is the default. If mandatory packages cannot be resolved, then the bundle must fail to resolve. A value of optional indicates that the packages are optional",
+ "resolution:=optional", "mandatory,optional",
+ Pattern.compile("mandatory|optional")
+
+ ), version, bundle_symbolic_name, bundle_version),
+
+ new Syntax(
+ REQUIRE_BUNDLE,
+ "The Require-Bundle header specifies the required exports from another bundle.",
+ "Require-Bundle: com.acme.chess",
+ null,
+ Verifier.WILDCARDNAMEPATTERN,
+
+ new Syntax(
+ VISIBILITY_DIRECTIVE,
+ " If the value is private (Default), then all visible packages from the required bundles are not re-exported. If the value is reexport then bundles that require this bundle will transitively have access to these required bundle’s exported packages.",
+ "visibility:=private", "private,reexport", Pattern
+ .compile("private|reexport")),
+
+ new Syntax(
+ RESOLUTION_DIRECTIVE,
+ "If the value is mandatory (default) then the required bundle must exist for this bundle to resolve. If the value is optional, the bundle will resolve even if the required bundle does not exist.",
+ "resolution:=optional", "mandatory,optional",
+ Pattern.compile("mandatory|optional")),
+
+ new Syntax(
+ SPLIT_PACKAGE_DIRECTIVE,
+ "Indicates how an imported package should be merged when it is split between different exporters. The default is merge-first with warning",
+ "-split-package:=merge-first",
+ "merge-first,merge-last,error,first",
+ Pattern
+ .compile("merge-first|merge-last|error|first")),
+ bundle_version
+
+ ),
+ new Syntax(
+ BUILDPATH,
+ "Provides the class path for building the jar. The entries are references to the repository",
+ "-buildpath=osgi;version=4.1", "${repo;bsns}",
+ Verifier.SYMBOLICNAME, path_version),
+ new Syntax(
+ BUMPPOLICY,
+ "Sets the version bump policy. This is a parameter to the ${version} macro.",
+ "-bumppolicy==+0", "==+,=+0,+00", Pattern
+ .compile("[=+-0][=+-0][=+-0]")),
+
+ new Syntax(
+ CONDUIT,
+ "Allows a bnd file to point to files which will be returned when the bnd file is build",
+ "-conduit= jar/osgi.jar", null, null),
+
+ new Syntax(
+ DEPENDSON,
+ "List of project names that this project directly depends on. These projects are always build ahead of this project",
+ "-dependson=org.acme.cm", "${projects}", null),
+
+ new Syntax(DEPLOYREPO,
+ "Specifies to which repo the project should be deployed.",
+ "-deployrepo=cnf", "${repos}", null),
+
+ new Syntax(
+ DONOTCOPY,
+ "Regular expression for names of files and directories that should not be copied when discovered",
+ "-donotcopy=(CVS|\\.svn)", null, null),
+
+ new Syntax(
+ EXPORT_CONTENTS,
+ "Build the JAR in the normal way but use this header for the Export-Package header manifest generation, same format",
+ "-exportcontents=!*impl*,*;version=3.0", null, null),
+
+ new Syntax(
+ FAIL_OK,
+ "Return with an ok status (0) even if the build generates errors",
+ "-failok=true", "true,false", Verifier.TRUEORFALSEPATTERN),
+
+ new Syntax(
+ INCLUDE,
+ "Include files. If an entry starts with '-', it does not have to exist. If it starts with '~', it must not overwrite any existing properties",
+ "-include: -${java.user}/.bnd", null, null),
+
+ new Syntax(
+ INCLUDERESOURCE,
+ "Include resources from the file system. You can specify a directory, or file. All files are copied to the root, unless a destination directory is indicated",
+ "-includeresource: lib=jar", null, null),
+
+ new Syntax(
+ MAKE,
+ "Set patterns for make plugins. These patterns are used to find a plugin that can make a resource that can not be found.",
+ "-make: (*).jar;type=bnd; recipe=\"bnd/$1.bnd\"", null,
+ null, new Syntax("type", "Type name for plugin",
+ "type=bnd", "bnd", null), new Syntax("recipe",
+ "Recipe for the plugin, can use back references",
+ "recipe=\"bnd/$1.bnd\"", "bnd", null)),
+
+ new Syntax(
+ MANIFEST,
+ "Directly include a manifest, do not use the calculated manifest",
+ "-manifest = META-INF/MANIFEST.MF", null, null),
+
+ new Syntax(NOEXTRAHEADERS, "Do not generate housekeeping headers",
+ "-noextraheaders", "true,false",
+ Verifier.TRUEORFALSEPATTERN),
+
+ new Syntax(NOUSES,
+ "Do not calculate the uses: directive on exports",
+ "-nouses=true", "true,false", Verifier.TRUEORFALSEPATTERN),
+
+ new Syntax(NOPE,
+ "Deprecated, use -nobundles. ",
+ "-nope=true", "true,false", Verifier.TRUEORFALSEPATTERN),
+
+ new Syntax(
+ PEDANTIC,
+ "Warn about things that are not really wrong but still not right",
+ "-nope=true", "true,false", Verifier.TRUEORFALSEPATTERN),
+
+ new Syntax(
+ PLUGIN,
+ "Define the plugins",
+ "-plugin=aQute.lib.spring.SpringComponent,aQute.lib.deployer.FileRepo;location=${repo}",
+ null, null),
+
+ new Syntax(SERVICE_COMPONENT,
+ "The header for Declarative Services",
+ "Service-Component=com.acme.Foo?;activate='start'", null,
+ null),
+
+ new Syntax(POM, "Generate a maven pom", "-pom=true", "true,false",
+ Verifier.TRUEORFALSEPATTERN),
+
+ new Syntax(RELEASEREPO,
+ "Specifies to which repo the project should be released.",
+ "-releaserepo=cnf", "${repos}", null),
+
+ new Syntax(REMOVEHEADERS,
+ "Remove all headers that match the regular expressions",
+ "-removeheaders=FOO_.*,Proprietary", null, null),
+ new Syntax(
+ RESOURCEONLY,
+ "Normally bnd warns when the JAR does not contain any classes, this option suppresses this warning",
+ "-resourceonly=true", "true,false",
+ Verifier.TRUEORFALSEPATTERN),
+ new Syntax(SOURCES, "Include sources in the jar", "-sources=true",
+ "true,false", Verifier.TRUEORFALSEPATTERN),
+ new Syntax(
+ SOURCEPATH,
+ "List of directory names that used to source sources for -sources",
+ "-sourcepath:= src, test", null, null),
+ new Syntax(
+ SUB,
+ "Build a set of bnd files that use this bnd file as a basis. The list of bnd file can be specified with wildcards",
+ "-sub=com.acme.*.bnd", null, null),
+ new Syntax(
+ RUNPROPERTIES,
+ "Properties that are set as system properties before the framework is started",
+ "-runproperties= foo=3, bar=4", null, null),
+ new Syntax(RUNSYSTEMPACKAGES,
+ "Add additional system packages to a framework run",
+ "-runsystempackages=com.acme.foo,javax.management", null,
+ null),
+ new Syntax(
+ RUNBUNDLES,
+ "Add additional bundles, specified with their bsn and version like in -buildpath, that are started before the project is run",
+ "-runbundles=osgi;version=\"[4.1,4.2)\", junit.junit, com.acme.foo;version=project",
+ null, Verifier.SYMBOLICNAME, path_version),
+ new Syntax(
+ RUNPATH,
+ "Additional JARs for the VM path, should include the framework",
+ "-runpath=org.eclipse.osgi;version=3.5", null, null,
+ path_version),
+ new Syntax(
+ RUNVM,
+ "Additional arguments for the VM invokation. Keys that start with a - are added as options, otherwise they are treated as -D properties for the VM",
+ "-runvm=-Xmax=30", null, null),
+ new Syntax(
+ VERSIONPOLICY,
+ "Provides a version policy to imports that are calculated from exports",
+ "-versionpolicy = \"[${version;==;${@}},${version;+;${@}})\"",
+ null, null)
+
+ };
+
+ public final static Map<String, Syntax> HELP = new HashMap<String, Syntax>();
+
+ static {
+ for (Syntax s : syntaxes) {
+ HELP.put(s.header, s);
+ }
+ }
+
+ public Syntax(String header, String lead, String example, String values,
+ Pattern pattern, Syntax... children) {
+ this.header = header;
+ this.children = children;
+ this.lead = lead;
+ this.example = example;
+ this.values = values;
+ this.pattern = pattern;
+ }
+
+ public String getLead() {
+ return lead;
+ }
+
+ public String getExample() {
+ return example;
+ }
+
+ public String getValues() {
+ return values;
+ }
+
+ public String getPattern() {
+ return lead;
+ }
+
+ public Syntax[] getChildren() {
+ return children;
+ }
+
+ public String getHeader() {
+ return header;
+ }
+
+}
diff --git a/bundleplugin/src/main/java/aQute/bnd/help/Warnings.java b/bundleplugin/src/main/java/aQute/bnd/help/Warnings.java
new file mode 100644
index 0000000..f2dddc4
--- /dev/null
+++ b/bundleplugin/src/main/java/aQute/bnd/help/Warnings.java
@@ -0,0 +1,5 @@
+package aQute.bnd.help;
+
+public interface Warnings {
+
+}
diff --git a/bundleplugin/src/main/java/aQute/bnd/help/changed.txt b/bundleplugin/src/main/java/aQute/bnd/help/changed.txt
new file mode 100644
index 0000000..14d0bd2
--- /dev/null
+++ b/bundleplugin/src/main/java/aQute/bnd/help/changed.txt
@@ -0,0 +1,9 @@
+0.0.325
+ - No longer flattening properties starting with - because for version policy, the
+ context macro ${@} is not valid. I think this is true for more things. So they are now
+ unexpanded.
+ - toclasspath can now take a suffix parameter, possibly empty
+ - Include-Resource can now take optional parameters:
+ flatten:= (true|false). Default is false. Create recursive directories in the output or not.
+ recursive:= (true|false) Default is true. Will descend any directories or not
+
diff --git a/bundleplugin/src/main/java/aQute/bnd/help/packageinfo b/bundleplugin/src/main/java/aQute/bnd/help/packageinfo
new file mode 100644
index 0000000..a4f1546
--- /dev/null
+++ b/bundleplugin/src/main/java/aQute/bnd/help/packageinfo
@@ -0,0 +1 @@
+version 1.0
\ No newline at end of file
diff --git a/bundleplugin/src/main/java/aQute/bnd/help/syntax.properties b/bundleplugin/src/main/java/aQute/bnd/help/syntax.properties
new file mode 100644
index 0000000..14ec642
--- /dev/null
+++ b/bundleplugin/src/main/java/aQute/bnd/help/syntax.properties
@@ -0,0 +1,342 @@
+Add=Holders of DmtPermission with the Add action present can create new nodes in the DMT, that is they are authorized to execute the createInteriorNode() and createLeafNode() methods of the DmtSession.
+Delete=Holders of DmtPermission with the Delete action present can delete nodes from the DMT, that is they are authorized to execute the deleteNode() method of the DmtSession.
+Exec=Holders of DmtPermission with the Exec action present can execute nodes in the DMT, that is they are authorized to call the execute() method of the DmtSession.
+Get=Holders of DmtPermission with the Get action present can query DMT node value or properties, that is they are authorized to execute the isLeafNode(), getNodeAcl(), getEffectiveNodeAcl(), getMetaNode(), getNodeValue(), getChildNodeNames(), getNodeTitle(), getNodeVersion(), getNodeTimeStamp(), getNodeSize() and getNodeType() methods of the DmtSession.
+Replace=Holders of DmtPermission with the Replace action present can update DMT node value or properties, that is they are authorized to execute the setNodeAcl(), setNodeTitle(), setNodeValue(), setNodeType() and renameNode() methods of the DmtSession.
+get=The action string get.
+register=The action string register.
+export=The action string export.
+exportonly=The action string exportonly.
+import=The action string import.
+System Bundle=Location identifier of the OSGi system bundle , which is defined to be "System Bundle".
+system.bundle=Alias for the symbolic name of the OSGi system bundle .
+Bundle-Category=Manifest header identifying the bundle's category.
+Bundle-ClassPath=Manifest header identifying a list of directories and embedded JAR files, which are bundle resources used to extend the bundle's classpath.
+Bundle-Copyright=Manifest header identifying the bundle's copyright information.
+Bundle-Description=Manifest header containing a brief description of the bundle's functionality.
+Bundle-Name=Manifest header identifying the bundle's name.
+Bundle-NativeCode=Manifest header identifying a number of hardware environments and the native language code libraries that the bundle is carrying for each of these environments.
+Export-Package=Manifest header identifying the packages that the bundle offers to the Framework for export.
+Export-Service=Manifest header identifying the fully qualified class names of the services that the bundle may register (used for informational purposes only).
+Import-Package=Manifest header identifying the packages on which the bundle depends.
+DynamicImport-Package=Manifest header identifying the packages that the bundle may dynamically import during execution.
+Import-Service=Manifest header identifying the fully qualified class names of the services that the bundle requires (used for informational purposes only).
+Bundle-Vendor=Manifest header identifying the bundle's vendor.
+Bundle-Version=Manifest header identifying the bundle's version.
+Bundle-DocURL=Manifest header identifying the bundle's documentation URL, from which further information about the bundle may be obtained.
+Bundle-ContactAddress=Manifest header identifying the contact address where problems with the bundle may be reported; for example, an email address.
+Bundle-Activator=Manifest header attribute identifying the bundle's activator class.
+Bundle-UpdateLocation=Manifest header identifying the location from which a new bundle version is obtained during a bundle update operation.
+specification-version=Manifest header attribute identifying the version of a package specified in the Export-Package or Import-Package manifest header.
+processor=Manifest header attribute identifying the processor required to run native bundle code specified in the Bundle-NativeCode manifest header).
+osname=Manifest header attribute identifying the operating system required to run native bundle code specified in the Bundle-NativeCode manifest header).
+osversion=Manifest header attribute identifying the operating system version required to run native bundle code specified in the Bundle-NativeCode manifest header).
+language=Manifest header attribute identifying the language in which the native bundle code is written specified in the Bundle-NativeCode manifest header.
+Bundle-RequiredExecutionEnvironment=Manifest header identifying the required execution environment for the bundle.
+Bundle-SymbolicName=Manifest header identifying the bundle's symbolic name.
+singleton=Manifest header directive identifying whether a bundle is a singleton.
+fragment-attachment=Manifest header directive identifying if and when a fragment may attach to a host bundle.
+always=Manifest header directive value identifying a fragment attachment type of always.
+resolve-time=Manifest header directive value identifying a fragment attachment type of resolve-time.
+never=Manifest header directive value identifying a fragment attachment type of never.
+Bundle-Localization=Manifest header identifying the base name of the bundle's localization entries.
+OSGI-INF/l10n/bundle=Default value for the Bundle-Localization manifest header.
+Require-Bundle=Manifest header identifying the symbolic names of other bundles required by the bundle.
+bundle-version=Manifest header attribute identifying a range of versions for a bundle specified in the Require-Bundle or Fragment-Host manifest headers.
+Fragment-Host=Manifest header identifying the symbolic name of another bundle for which that the bundle is a fragment.
+selection-filter=Manifest header attribute is used for selection by filtering based upon system properties.
+Bundle-ManifestVersion=Manifest header identifying the bundle manifest version.
+version=Manifest header attribute identifying the version of a package specified in the Export-Package or Import-Package manifest header.
+bundle-symbolic-name=Manifest header attribute identifying the symbolic name of a bundle that exports a package specified in the Import-Package manifest header.
+resolution=Manifest header directive identifying the resolution type in the Import-Package or Require-Bundle manifest header.
+mandatory=Manifest header directive value identifying a mandatory resolution type.
+optional=Manifest header directive value identifying an optional resolution type.
+uses=Manifest header directive identifying a list of packages that an exported package uses.
+include=Manifest header directive identifying a list of classes to include in the exported package.
+exclude=Manifest header directive identifying a list of classes to exclude in the exported package..
+mandatory=Manifest header directive identifying names of matching attributes which must be specified by matching Import-Package statements in the Export-Package manifest header.
+visibility=Manifest header directive identifying the visibility of a required bundle in the Require-Bundle manifest header.
+private=Manifest header directive value identifying a private visibility type.
+reexport=Manifest header directive value identifying a reexport visibility type.
+extension=Manifest header directive identifying the type of the extension fragment.
+framework=Manifest header directive value identifying the type of extension fragment.
+bootclasspath=Manifest header directive value identifying the type of extension fragment.
+Bundle-ActivationPolicy=Manifest header identifying the bundle's activation policy.
+lazy=Bundle activation policy declaring the bundle must be activated when the first class load is made from the bundle.
+org.osgi.framework.version=Framework environment property identifying the Framework version.
+org.osgi.framework.vendor=Framework environment property identifying the Framework implementation vendor.
+org.osgi.framework.language=Framework environment property identifying the Framework implementation language (see ISO 639 for possible values).
+org.osgi.framework.os.name=Framework environment property identifying the Framework host-computer's operating system.
+org.osgi.framework.os.version=Framework environment property identifying the Framework host-computer's operating system version number.
+org.osgi.framework.processor=Framework environment property identifying the Framework host-computer's processor name.
+org.osgi.framework.executionenvironment=Framework environment property identifying execution environments provided by the Framework.
+org.osgi.framework.bootdelegation=Framework environment property identifying packages for which the Framework must delegate class loading to the parent class loader of the bundle.
+org.osgi.framework.system.packages=Framework environment property identifying packages which the system bundle must export.
+org.osgi.framework.system.packages.extra=Framework environment property identifying extra packages which the system bundle must export from the current execution environment.
+org.osgi.supports.framework.extension=Framework environment property identifying whether the Framework supports framework extension bundles.
+org.osgi.supports.bootclasspath.extension=Framework environment property identifying whether the Framework supports bootclasspath extension bundles.
+org.osgi.supports.framework.fragment=Framework environment property identifying whether the Framework supports fragment bundles.
+org.osgi.supports.framework.requirebundle=Framework environment property identifying whether the Framework supports the Require-Bundle manifest header.
+org.osgi.framework.security=Specifies the type of security manager the framework must use.
+osgi=Specifies that a security manager that supports all security aspects of the OSGi core specification including postponed conditions must be installed.
+org.osgi.framework.storage=Specified the persistent storage area used by the framework.
+org.osgi.framework.storage.clean=Specifies if and when the persistent storage area for the framework should be cleaned.
+onFirstInit=Specifies that the framework storage area must be cleaned before the framework is initialized for the first time.
+org.osgi.framework.library.extensions=Specifies a comma separated list of additional library file extensions that must be used when a bundle's class loader is searching for native libraries.
+org.osgi.framework.command.execpermission=Specifies an optional OS specific command to set file permissions on extracted native code.
+org.osgi.framework.trust.repositories=Specifies the trust repositories used by the framework.
+org.osgi.framework.windowsystem=Specifies the current windowing system.
+org.osgi.framework.startlevel.beginning=Specifies the beginning start level of the framework.
+org.osgi.framework.bundle.parent=Specifies the parent class loader type for all bundle class loaders.
+boot=Specifies to use of the boot class loader as the parent class loader for all bundle class loaders.
+app=Specifies to use the application class loader as the parent class loader for all bundle class loaders.
+ext=Specifies to use the extension class loader as the parent class loader for all bundle class loaders.
+framework=Specifies to use the framework class loader as the parent class loader for all bundle class loaders.
+objectClass=Service property identifying all of the class names under which a service was registered in the Framework.
+service.id=Service property identifying a service's registration number.
+service.pid=Service property identifying a service's persistent identifier.
+service.ranking=Service property identifying a service's ranking number.
+service.vendor=Service property identifying a service's vendor.
+service.description=Service property identifying a service's description.
+provide=The action string provide.
+require=The action string require.
+host=The action string host.
+fragment=The action string fragment.
+class=The action string class.
+execute=The action string execute.
+extensionLifecycle=The action string extensionLifecycle.
+lifecycle=The action string lifecycle.
+listener=The action string listener.
+metadata=The action string metadata.
+resolve=The action string resolve.
+resource=The action string resource.
+startlevel=The action string startlevel.
+context=The action string context.
+service.pid=The property key for the identifier of the application being scheduled.
+schedule.id=The property key for the schedule identifier.
+org.osgi.triggeringevent=The key for the startup argument used to pass the event object that triggered the schedule to launch the application instance.
+org/osgi/application/timer=The topic name for the virtual timer topic.
+year=The name of the year attribute of a virtual timer event.
+month=The name of the month attribute of a virtual timer event.
+day_of_month=The name of the day of month attribute of a virtual timer event.
+day_of_week=The name of the day of week attribute of a virtual timer event.
+hour_of_day=The name of the hour of day attribute of a virtual timer event.
+minute=The name of the minute attribute of a virtual timer event.
+service.pid=The property key for the unique identifier (PID) of the application instance.
+application.descriptor=The property key for the pid of the corresponding application descriptor.
+application.state=The property key for the state of this application instance.
+application.supports.exitvalue=The property key for the supports exit value property of this application instance.
+RUNNING=The application instance is running.
+STOPPING=The application instance is being stopped.
+application.name=The property key for the localized name of the application.
+application.icon=The property key for the localized icon of the application.
+service.pid=The property key for the unique identifier (PID) of the application.
+application.version=The property key for the version of the application.
+service.vendor=The property key for the name of the application vendor.
+application.visible=The property key for the visibility property of the application.
+application.launchable=The property key for the launchable property of the application.
+application.locked=The property key for the locked property of the application.
+application.description=The property key for the localized description of the application.
+application.documentation=The property key for the localized documentation of the application.
+application.copyright=The property key for the localized copyright notice of the application.
+application.license=The property key for the localized license of the application.
+application.container=The property key for the application container of the application.
+application.location=The property key for the location of the application.
+lifecycle=Allows the lifecycle management of the target applications.
+schedule=Allows scheduling of the target applications.
+lock=Allows setting/unsetting the locking state of the target applications.
+bundle.version=The version property defining the bundle on whose behalf a module context event has been issued.
+extender.bundle=The extender bundle property defining the extender bundle processing the module context for which an event has been issued.
+extender.bundle.id=The extender bundle id property defining the id of the extender bundle processing the module context for which an event has been issued.
+extender.bundle.symbolicName=The extender bundle symbolic name property defining the symbolic name of the extender bundle processing the module context for which an event has been issued.
+org/osgi/service/blueprint=Topic prefix for all events issued by the Blueprint Service
+org/osgi/service/blueprint/context/CREATING=Topic for Blueprint Service CREATING events
+org/osgi/service/blueprint/context/CREATED=Topic for Blueprint Service CREATED events
+org/osgi/service/blueprint/context/DESTROYING=Topic for Blueprint Service DESTROYING events
+org/osgi/service/blueprint/context/DESTROYED=Topic for Blueprint Service DESTROYED events
+org/osgi/service/blueprint/context/WAITING=Topic for Blueprint Service WAITING events
+org/osgi/service/blueprint/context/FAILURE=Topic for Blueprint Service FAILURE events
+singleton=
+prototype=
+bundle=
+cm.target=A service property to limit the Managed Service or Managed Service Factory configuration dictionaries a Configuration Plugin service receives.
+service.cmRanking=A service property to specify the order in which plugins are invoked.
+configure=The action string configure.
+service.factoryPid=Service property naming the Factory PID in the configuration dictionary.
+service.bundleLocation=Service property naming the location of the bundle that is associated with a a Configuration object.
+osgi.converter.classes=This property is a string, or array of strings, and defines the classes or interfaces that this converter recognizes.
+osgi.command.scope=The scope of commands provided by this service.
+osgi.command.function=A String, array, or list of method names that may be called for this command provider.
+Service-Component=Manifest header specifying the XML documents within a bundle that contain the bundle's Service Component descriptions.
+component.name=A component property for a component configuration that contains the name of the component as specified in the name attribute of the component element.
+component.id=A component property that contains the generated id for a component configuration.
+component.factory=A service registration property for a Component Factory that contains the value of the factory attribute.
+.target=The suffix for reference target properties.
+allow=This string is used to indicate that a row in the Conditional Permission Table should return an access decision of "allow" if the conditions are all satisfied and at least one of the permissions is implied.
+deny=This string is used to indicate that a row in the Conditional Permission Table should return an access decision of "deny" if the conditions are all satisfied and at least one of the permissions is implied.
+deploymentpackage.name=The name of the Deployment Package.
+deploymentpackage.readablename=The human readable name of the DP localized to the default locale.
+deploymentpackage.currentversion=The currently installed version of the Deployment Package.
+deploymentpackage.nextversion=The version of DP after the successful completion of the install operation (used in INSTALL event only).
+install=Constant String to the "install" action.
+list=Constant String to the "list" action.
+uninstall=Constant String to the "uninstall" action.
+uninstall_forced=Constant String to the "uninstall_forced" action.
+cancel=Constant String to the "cancel" action.
+metadata=Constant String to the "metadata" action.
+privatearea=Constant String to the "privatearea" action.
+-1=Return value from DriverSelector.select, if no Driver service should be attached to the Device service.
+DRIVER_ID=Property (named "DRIVER_ID") identifying a driver.
+DEVICE_CATEGORY=Property (named "DEVICE_CATEGORY") containing a human readable description of the device categories implemented by a device.
+DEVICE_SERIAL=Property (named "DEVICE_SERIAL") specifying a device's serial number.
+DEVICE_DESCRIPTION=Property (named "DEVICE_DESCRIPTION") containing a human readable string describing the actual hardware device.
+service.interface=Mandatory ServiceRegistration property which contains a collection of full qualified interface names offered by the advertised service endpoint.
+service.interface.version=Optional ServiceRegistration property which contains a collection of interface names with their associated version attributes separated by SEPARATOR e.g.
+osgi.remote.endpoint.interface=Optional ServiceRegistration property which contains a collection of interface names with their associated (non-Java) endpoint interface names separated by SEPARATOR e.g.: 'my.company.foo|MyWebService my.company.zoo|MyWebService'. This (non-Java) endpoint interface name is usually a communication protocol specific interface, for instance a web service interface name.
+service.properties=Optional ServiceRegistration property which contains a map of properties of the published service.
+osgi.remote.endpoint.location=Optional property of the published service identifying its location.
+osgi.remote.endpoint.id=Optional property of the published service uniquely identifying its endpoint.
+|=Separator constant for association of interface-specific values with the particular interface name.
+osgi.remote.discovery.product=Service Registration property for the name of the Discovery product.
+osgi.remote.discovery.product.version=Service Registration property for the version of the Discovery product.
+osgi.remote.discovery.vendor=Service Registration property for the Discovery product vendor name.
+osgi.remote.discovery.supported_protocols=Service Registration property that lists the discovery protocols used by this Discovery service.
+osgi.discovery.interest.interfaces=Optional ServiceRegistration property which contains service interfaces this tracker is interested in.
+osgi.discovery.interest.filters=Optional ServiceRegistration property which contains filters for services this tracker is interested in.
+osgi.remote.distribution.product=Service Registration property for the name of the Distribution Provider product.
+osgi.remote.distribution.product.version=Service Registration property for the version of the Distribution Provider product.
+osgi.remote.distribution.vendor=Service Registration property for the Distribution Provider product vendor name.
+osgi.remote.distribition.supported_intents=Service Registration property that lists the intents supported by this DistributionProvider.
+publish=The action string publish.
+subscribe=The action string subscribe.
+event.topics=Service registration property (named event.topics) specifying the Event topics of interest to a Event Handler service.
+event.filter=Service Registration property (named event.filter) specifying a filter to further select Event s of interest to a Event Handler service.
+bundle.signer=The Distinguished Names of the signers of the bundle relevant to the event.
+bundle.symbolicName=The Bundle Symbolic Name of the bundle relevant to the event.
+bundle.id=The Bundle id of the bundle relevant to the event.
+bundle=The Bundle object of the bundle relevant to the event.
+bundle.version=The version of the bundle relevant to the event.
+event=The forwarded event object.
+exception=An exception or error.
+exception.class=The name of the exception type.
+exception.message=The exception message.
+message=A human-readable message that is usually not localized.
+service=A service reference.
+service.id=A service's id.
+service.objectClass=A service's objectClass.
+service.pid=A service's persistent identity.
+timestamp=The time when the event occurred, as reported by System.currentTimeMillis().
+exception.class=This constant was released with an incorrectly spelled name.
+CompositeServiceFilter-Import=Manifest header (named "CompositeServiceFilter-Import") identifying the service filters that are used by a composite bundle to select services that will be registered into a child framework by its associated surrogate bundle.
+CompositeServiceFilter-Export=Manifest header (named "CompositeServiceFilter-Export") identifying the service filters that are used by a surrogate bundle to select services that will be registered into a parent framework by its associated composite bundle.
+org.osgi.service.http.authentication.remote.user=HttpServletRequest attribute specifying the name of the authenticated user.
+org.osgi.service.http.authentication.type=HttpServletRequest attribute specifying the scheme used in authentication.
+org.osgi.service.useradmin.authorization=HttpServletRequest attribute specifying the Authorization object obtained from the org.osgi.service.useradmin.UserAdmin service.
+io.scheme=Service property containing the scheme(s) for which this Connection Factory can create Connection objects.
+-1=Argument for getAttributeDefinitions(int).
+OSGI-INF/metatype=Location of meta type documents.
+read=Holders of MonitorPermission with the read action present are allowed to read the value of the StatusVariables specified in the permission's target field.
+reset=Holders of MonitorPermission with the reset action present are allowed to reset the value of the StatusVariables specified in the permission's target field.
+publish=Holders of MonitorPermission with the publish action present are Monitorable services that are allowed to publish the StatusVariables specified in the permission's target field.
+startjob=Holders of MonitorPermission with the startjob action present are allowed to initiate monitoring jobs involving the StatusVariables specified in the permission's target field.
+switchevents=Holders of MonitorPermission with the switchevents action present are allowed to switch event sending on or off for the value of the StatusVariables specified in the permission's target field.
+license=
+description=
+documentation=
+copyright=
+source=
+symbolicname=
+presentationname=
+id=
+version=
+url=
+size=
+provisioning.spid=The key to the provisioning information that uniquely identifies the Service Platform.
+provisioning.reference=The key to the provisioning information that contains the location of the provision data provider.
+provisioning.agent.config=The key to the provisioning information that contains the initial configuration information of the initial Management Agent.
+provisioning.update.count=The key to the provisioning information that contains the update count of the info data.
+provisioning.start.bundle=The key to the provisioning information that contains the location of the bundle to start with AllPermission.
+provisioning.rootx509=The key to the provisioning information that contains the root X509 certificate used to establish trust with operator when using HTTPS.
+provisioning.rsh.secret=The key to the provisioning information that contains the shared secret used in conjunction with the RSH protocol.
+text/plain;charset=utf-8=MIME type to be used in the InitialProvisioning-Entries header or stored in the extra field of a ZipEntry object for String data.
+application/octet-stream=MIME type to be used in the InitialProvisioning-Entries header or stored stored in the extra field of a ZipEntry object for byte[] data.
+application/vnd.osgi.bundle=MIME type to be used in the InitialProvisioning-Entries header or stored stored in the extra field of a ZipEntry object for an installable bundle file.
+application/x-osgi-bundle=Alternative MIME type to be used in the InitialProvisioning-Entries header or stored stored in the extra field of a ZipEntry object for an installable bundle file.
+text/x-osgi-bundle-url=MIME type to be stored in the extra field of a ZipEntry for a String that represents a URL for a bundle.
+InitialProvisioning-Entries=Name of the header that specifies the (MIME) type information for the ZIP file entries.
+ui1=Unsigned 1 Byte int.
+ui2=Unsigned 2 Byte int.
+ui4=Unsigned 4 Byte int.
+i1=1 Byte int.
+i2=2 Byte int.
+i4=4 Byte int.
+int=Integer number.
+r4=4 Byte float.
+r8=8 Byte float.
+number=Same as r8.
+fixed.14.4=Same as r8 but no more than 14 digits to the left of the decimal point and no more than 4 to the right.
+float=Floating-point number.
+char=Unicode string.
+string=Unicode string.
+date=A calendar date.
+dateTime=A specific instant of time.
+dateTime.tz=A specific instant of time.
+time=An instant of time that recurs every day.
+time.tz=An instant of time that recurs every day.
+boolean=True or false.
+bin.base64=MIME-style Base64 encoded binary BLOB.
+bin.hex=Hexadecimal digits representing octets.
+uri=Universal Resource Identifier.
+uuid=Universally Unique ID.
+UPnP.service.type=Property key for the optional service type uri.
+UPnP.service.id=Property key for the optional service id.
+upnp.filter=Key for a service property having a value that is an object of type org.osgi.framework.Filter and that is used to limit received events.
+UPnP=Constant for the value of the service property DEVICE_CATEGORY used for all UPnP devices.
+UPnP.export=The UPnP.export service property is a hint that marks a device to be picked up and exported by the UPnP Service.
+UPnP.device.UDN=Property key for the Unique Device Name (UDN) property.
+UPnP.device.UDN=Property key for the Unique Device ID property.
+UPnP.device.type=Property key for the UPnP Device Type property.
+UPnP.device.manufacturer=Mandatory property key for the device manufacturer's property.
+UPnP.device.modelName=Mandatory property key for the device model name.
+UPnP.device.friendlyName=Mandatory property key for a short user friendly version of the device name.
+UPnP.device.manufacturerURL=Optional property key for a URL to the device manufacturers Web site.
+UPnP.device.modelDescription=Optional (but recommended) property key for a String object with a long description of the device for the end user.
+UPnP.device.modelNumber=Optional (but recommended) property key for a String class typed property holding the model number of the device.
+UPnP.device.modelURL=Optional property key for a String typed property holding a string representing the URL to the Web site for this model.
+UPnP.device.serialNumber=Optional (but recommended) property key for a String typed property holding the serial number of the device.
+UPnP.device.UPC=Optional property key for a String typed property holding the Universal Product Code (UPC) of the device.
+UPnP.presentationURL=Optional (but recommended) property key for a String typed property holding a string representing the URL to a device representation Web page.
+UPnP.device.parentUDN=The property key that must be set for all embedded devices.
+UPnP.device.childrenUDN=The property key that must be set for all devices containing other embedded devices.
+url.handler.protocol=Service property naming the protocols serviced by a URLStreamHandlerService.
+url.content.mimetype=Service property naming the MIME types serviced by a java.net.ContentHandler.
+admin=The permission name "admin".
+changeProperty=The action string "changeProperty".
+changeCredential=The action string "changeCredential".
+getCredential=The action string "getCredential".
+user.anyone=The name of the predefined role, user.anyone, that all users and groups belong to.
+produce=The action string for the produce action.
+consume=The action string for the consume action.
+wireadmin.pid=Wire property key (named wireadmin.pid) specifying the persistent identity (PID) of this Wire object.
+wireadmin.producer.composite=A service registration property for a Producer service that is composite.
+wireadmin.consumer.composite=A service registration property for a Consumer service that is composite.
+wireadmin.producer.scope=Service registration property key (named wireadmin.producer.scope) specifying a list of names that may be used to define the scope of this Wire object.
+wireadmin.consumer.scope=Service registration property key (named wireadmin.consumer.scope) specifying a list of names that may be used to define the scope of this Wire object.
+wireadmin.producer.pid=Wire property key (named wireadmin.producer.pid) specifying the service.pid of the associated Producer service.
+wireadmin.consumer.pid=Wire property key (named wireadmin.consumer.pid) specifying the service.pid of the associated Consumer service.
+wireadmin.filter=Wire property key (named wireadmin.filter) specifying a filter used to control the delivery rate of data between the Producer and the Consumer service.
+wirevalue.current=Wire object's filter attribute (named wirevalue.current) representing the current value.
+wirevalue.previous=Wire object's filter attribute (named wirevalue.previous) representing the previous value.
+wirevalue.delta.absolute=Wire object's filter attribute (named wirevalue.delta.absolute) representing the absolute delta.
+wirevalue.delta.relative=Wire object's filter attribute (named wirevalue.delta.relative) representing the relative delta.
+wirevalue.elapsed=Wire object's filter attribute (named wirevalue.elapsed) representing the elapsed time, in ms, between this filter evaluation and the last update of the Consumer service.
+wireadmin.producer.filters=Service Registration property (named wireadmin.producer.filters).
+wireadmin.consumer.flavors=Service Registration property (named wireadmin.consumer.flavors) specifying the list of data types understood by this Consumer service.
+wireadmin.producer.flavors=Service Registration property (named wireadmin.producer.flavors) specifying the list of data types available from this Producer service.
+wireadmin.events=Service Registration property (named wireadmin.events) specifying the WireAdminEvent type of interest to a Wire Admin Listener service.
+javax.xml.parsers.SAXParserFactory=Filename containing the SAX Parser Factory Class name.
+javax.xml.parsers.DocumentBuilderFactory=Filename containing the DOM Parser Factory Class name.
+/META-INF/services/javax.xml.parsers.SAXParserFactory=Fully qualified path name of SAX Parser Factory Class Name file
+/META-INF/services/javax.xml.parsers.DocumentBuilderFactory=Fully qualified path name of DOM Parser Factory Class Name file
+parser.validating=Service property specifying if factory is configured to support validating parsers.
+parser.namespaceAware=Service property specifying if factory is configured to support namespace aware parsers.
diff --git a/bundleplugin/src/main/java/aQute/bnd/help/syntax.xml b/bundleplugin/src/main/java/aQute/bnd/help/syntax.xml
new file mode 100644
index 0000000..e81df31
--- /dev/null
+++ b/bundleplugin/src/main/java/aQute/bnd/help/syntax.xml
@@ -0,0 +1,2 @@
+
+Bundle-Name\\s*(:|=)\\s*
\ No newline at end of file