Class Processor

    • Field Detail

      • logger

        private static final org.slf4j.Logger logger
      • PACKAGES_IGNORED

        static java.util.regex.Pattern PACKAGES_IGNORED
      • current

        static java.lang.ThreadLocal<Processor> current
      • sheduledExecutor

        private static final java.util.concurrent.ScheduledExecutorService sheduledExecutor
      • executor

        private static final java.util.concurrent.ExecutorService executor
      • random

        static java.util.Random random
      • errors

        final java.util.List<java.lang.String> errors
      • warnings

        final java.util.List<java.lang.String> warnings
      • basicPlugins

        final java.util.Set<java.lang.Object> basicPlugins
      • toBeClosed

        private final java.util.Set<java.io.Closeable> toBeClosed
      • plugins

        private java.util.Set<java.lang.Object> plugins
      • pedantic

        boolean pedantic
      • trace

        boolean trace
      • exceptions

        boolean exceptions
      • fileMustExist

        boolean fileMustExist
      • base

        private java.io.File base
      • baseURI

        private java.net.URI baseURI
      • properties

        java.util.Properties properties
      • profile

        java.lang.String profile
      • replacer

        private Macro replacer
      • lastModified

        private long lastModified
      • propertiesFile

        private java.io.File propertiesFile
      • fixup

        private boolean fixup
      • modified

        long modified
      • included

        java.util.List<java.io.File> included
      • filter

        java.util.Collection<java.lang.String> filter
      • missingCommand

        java.util.HashSet<java.lang.String> missingCommand
      • strict

        java.lang.Boolean strict
      • fixupMessages

        boolean fixupMessages
      • _uri

        static java.lang.String _uri
      • _fileuri

        static java.lang.String _fileuri
      • locations

        java.util.List<Report.Location> locations
        Create a location object and add it to the locations
      • upto

        Version upto
        This method is about compatibility. New behavior can be conditionally introduced by calling this method and passing what version this behavior was introduced. This allows users of bnd to set the -upto instructions to the version that they want to be compatible with. If this instruction is not set, we assume the latest version.
    • Constructor Detail

      • Processor

        public Processor()
      • Processor

        public Processor​(java.util.Properties parent)
      • Processor

        public Processor​(Processor processor)
      • Processor

        public Processor​(java.util.Properties props,
                         boolean copy)
    • Method Detail

      • setParent

        public void setParent​(Processor processor)
      • getInfo

        public void getInfo​(Reporter processor,
                            java.lang.String prefix)
      • getInfo

        public void getInfo​(Reporter processor)
      • addAll

        private void addAll​(java.util.List<java.lang.String> to,
                            java.util.List<java.lang.String> from,
                            java.lang.String prefix,
                            Reporter reporter)
      • current

        private Processor current()
        A processor can mark itself current for a thread.
      • warning

        public Reporter.SetLocation warning​(java.lang.String string,
                                            java.lang.Object... args)
        Description copied from interface: Reporter
        Create a warning. Implementations must ensure that the given args are not prevented from garbage collecting. The args must have a proper toString method.
        Specified by:
        warning in interface Reporter
        Parameters:
        string - The format of the error
        args - The arguments of the error
        Returns:
        a SetLocation to set the location
      • error

        public Reporter.SetLocation error​(java.lang.String string,
                                          java.lang.Object... args)
        Description copied from interface: Reporter
        Create an error. Implementations must ensure that the given args are not prevented from garbage collecting. The args must have a proper toString method.
        Specified by:
        error in interface Reporter
        Parameters:
        string - The format of the error
        args - The arguments of the error
        Returns:
        a SetLocation to set the location
      • progress

        @Deprecated
        public void progress​(float progress,
                             java.lang.String format,
                             java.lang.Object... args)
        Deprecated.
        Use SLF4J Logger.info(aQute.libg.slf4j.GradleLogging.LIFECYCLE) instead.
        Description copied from interface: Reporter
        Create a warning. Implementations must ensure that the given args are not prevented from garbage collecting. The args must have a proper toString method.
        Specified by:
        progress in interface Reporter
        Parameters:
        progress - A value between 0 and 1 indicating the progress. 0 is starting and >=1 is done.
        format - The format of the error
        args - The arguments of the error
      • progress

        public void progress​(java.lang.String format,
                             java.lang.Object... args)
      • error

        public Reporter.SetLocation error​(java.lang.String format,
                                          java.lang.Throwable t,
                                          java.lang.Object... args)
      • exception

        public Reporter.SetLocation exception​(java.lang.Throwable t,
                                              java.lang.String format,
                                              java.lang.Object... args)
        Description copied from interface: Reporter
        Dedicated message for an exception.
        Specified by:
        exception in interface Reporter
        Parameters:
        t - The exception
        format - The format of the message
        args - The arguments
      • printExceptionSummary

        public int printExceptionSummary​(java.lang.Throwable e,
                                         java.io.PrintStream out)
      • printStackTrace

        public void printStackTrace​(java.lang.Throwable e,
                                    int count,
                                    java.io.PrintStream out)
      • signal

        public void signal()
      • getWarnings

        public java.util.List<java.lang.String> getWarnings()
        Description copied from interface: Report
        Return the warnings. This list must not be changed and may be immutable.
        Specified by:
        getWarnings in interface Report
        Returns:
        the warnings
      • getErrors

        public java.util.List<java.lang.String> getErrors()
        Description copied from interface: Report
        Return the errors. This list must not be changed and may be immutable.
        Specified by:
        getErrors in interface Report
        Returns:
        the errors
      • parseHeader

        public static Parameters parseHeader​(java.lang.String value,
                                             Processor logger)
        Standard OSGi header parser.
        Parameters:
        value -
      • parseHeader

        public Parameters parseHeader​(java.lang.String value)
      • addClose

        public void addClose​(java.io.Closeable jar)
      • removeClose

        public void removeClose​(java.io.Closeable jar)
      • isPedantic

        public boolean isPedantic()
        Description copied from interface: Reporter
        The provider of the reporter wants pedantic reporting, meaning every possible warning should be reported.
        Specified by:
        isPedantic in interface Reporter
        Returns:
        if this is a pedantic reporter.
      • setPedantic

        public void setPedantic​(boolean pedantic)
      • use

        public void use​(Processor reporter)
      • getFile

        public static java.io.File getFile​(java.io.File base,
                                           java.lang.String file)
      • getFile

        public java.io.File getFile​(java.lang.String file)
      • getPlugins

        public <T> java.util.List<T> getPlugins​(java.lang.Class<T> clazz)
        Return a list of plugins that implement the given class.
        Specified by:
        getPlugins in interface Registry
        Parameters:
        clazz - Each returned plugin implements this class/interface
        Returns:
        A list of plugins
      • getPlugin

        public <T> T getPlugin​(java.lang.Class<T> clazz)
        Returns the first plugin it can find of the given type.
        Specified by:
        getPlugin in interface Registry
        Type Parameters:
        T -
        Parameters:
        clazz -
      • getPlugins

        public java.util.Set<java.lang.Object> getPlugins()
        Return a list of plugins. Plugins are defined with the -plugin command. They are class names, optionally associated with attributes. Plugins can implement the Plugin interface to see these attributes. Any object can be a plugin.
      • addExtensions

        protected void addExtensions​(java.util.Set<java.lang.Object> p)
        Is called when all plugins are loaded
        Parameters:
        p -
      • loadPlugins

        protected void loadPlugins​(java.util.Set<java.lang.Object> instances,
                                   java.lang.String pluginString,
                                   java.lang.String pluginPathString)
        Magic to load the plugins. This is quite tricky actually since we allow plugins to be downloaded (this is mainly intended for repositories since in general plugins should use extensions, however to bootstrap the extensions we need more). Since downloads might need plugins for passwords and protocols we need to first load the paths specified on the plugin clause, then check if there are any local plugins (starting with aQute.bnd and be able to load from our own class loader).

        After that, we load the plugin paths, these can use the built in connectors.

        Last but not least, we load the remaining plugins.

        Parameters:
        instances -
        pluginString -
      • loadPluginPath

        private void loadPluginPath​(java.util.Set<java.lang.Object> instances,
                                    java.lang.String pluginPath,
                                    Processor.CL loader)
        Add the @link Constants.PLUGINPATH entries (which are file names) to the class loader. If this file does not exist, and there is a Constants.PLUGINPATH_URL_ATTR attribute then we download it first from that url. You can then also specify a Constants.PLUGINPATH_SHA1_ATTR attribute to verify the file.
        Parameters:
        pluginPath - the clauses for the plugin path
        loader - The class loader to extend
        See Also:
        Constants.PLUGINPATH
      • loadPlugin

        private java.lang.Object loadPlugin​(java.lang.ClassLoader loader,
                                            Attrs attrs,
                                            java.lang.String className,
                                            boolean ignoreError)
        Load a plugin and customize it. If the plugin cannot be loaded then we return null.
        Parameters:
        loader - Name of the loader
        attrs -
        className -
      • setTypeSpecificPlugins

        protected void setTypeSpecificPlugins​(java.util.Set<java.lang.Object> list)
      • customize

        protected <T> T customize​(T plugin,
                                  Attrs map)
        Set the initial parameters of a plugin
        Parameters:
        plugin -
        map -
      • isFailOk

        public boolean isFailOk()
        Indicates that this run should ignore errors and succeed anyway
        Overrides:
        isFailOk in class Domain
        Returns:
        true if this processor should return errors
      • getBase

        public java.io.File getBase()
      • getBaseURI

        public java.net.URI getBaseURI()
      • setBase

        public void setBase​(java.io.File base)
      • clear

        public void clear()
      • getLogger

        public org.slf4j.Logger getLogger()
      • trace

        @Deprecated
        public void trace​(java.lang.String msg,
                          java.lang.Object... parms)
        Deprecated.
        Use SLF4J Logger.debug instead.
        Description copied from interface: Reporter
        Create a warning. Implementations must ensure that the given args are not prevented from garbage collecting. The args must have a proper toString method.
        Specified by:
        trace in interface Reporter
        Parameters:
        msg - The format of the error
        parms - The arguments of the error
      • newList

        public <T> java.util.List<T> newList()
      • newSet

        public <T> java.util.Set<T> newSet()
      • newMap

        public static <K,​V> java.util.Map<K,​V> newMap()
      • newHashMap

        public static <K,​V> java.util.Map<K,​V> newHashMap()
      • newList

        public <T> java.util.List<T> newList​(java.util.Collection<T> t)
      • newSet

        public <T> java.util.Set<T> newSet​(java.util.Collection<T> t)
      • newMap

        public <K,​V> java.util.Map<K,​V> newMap​(java.util.Map<K,​V> t)
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • _basedir

        public java.lang.String _basedir​(java.lang.String[] args)
      • _propertiesname

        public java.lang.String _propertiesname​(java.lang.String[] args)
      • _propertiesdir

        public java.lang.String _propertiesdir​(java.lang.String[] args)
      • _uri

        public java.lang.String _uri​(java.lang.String[] args)
                              throws java.lang.Exception
        Throws:
        java.lang.Exception
      • _fileuri

        public java.lang.String _fileuri​(java.lang.String[] args)
                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getProperties

        public java.util.Properties getProperties()
        Property handling ...
      • getProperties0

        private java.util.Properties getProperties0()
      • getProperty

        public java.lang.String getProperty​(java.lang.String key)
      • mergeProperties

        public void mergeProperties​(java.io.File file,
                                    boolean override)
      • mergeProperties

        public void mergeProperties​(java.util.Properties properties,
                                    boolean override)
      • setProperties

        public void setProperties​(java.util.Properties properties)
      • setProperties

        public void setProperties​(java.io.File base,
                                  java.util.Properties properties)
      • addProperties

        public void addProperties​(java.io.File file)
                           throws java.lang.Exception
        Throws:
        java.lang.Exception
      • addProperties

        public void addProperties​(java.util.Map<?,​?> properties)
      • addIncluded

        public void addIncluded​(java.io.File file)
      • doIncludes

        private void doIncludes​(java.io.File ubase,
                                java.util.Properties p)
        Inspect the properties and if you find -includes parse the line included manifest files or properties files. The files are relative from the given base, this is normally the base for the analyzer.
        Parameters:
        ubase -
        p -
        done -
        Throws:
        java.io.IOException
        java.io.IOException
      • doIncludeFile

        public void doIncludeFile​(java.io.File file,
                                  boolean overwrite,
                                  java.util.Properties target)
                           throws java.lang.Exception
        Parameters:
        file -
        overwrite -
        Throws:
        java.io.FileNotFoundException
        java.io.IOException
        java.lang.Exception
      • doIncludeFile

        public void doIncludeFile​(java.io.File file,
                                  boolean overwrite,
                                  java.util.Properties target,
                                  java.lang.String extensionName)
                           throws java.lang.Exception
        Parameters:
        file -
        overwrite -
        extensionName -
        Throws:
        java.io.FileNotFoundException
        java.io.IOException
        java.lang.Exception
      • unsetProperty

        public void unsetProperty​(java.lang.String string)
      • refresh

        public boolean refresh()
      • isStrict

        boolean isStrict()
        If strict is true, then extra verification is done.
      • forceRefresh

        public void forceRefresh()
      • propertiesChanged

        public void propertiesChanged()
      • setProperties

        public void setProperties​(java.io.File propertiesFile)
                           throws java.io.IOException
        Set the properties by file. Setting the properties this way will also set the base for this analyzer. After reading the properties, this will call setProperties(Properties) which will handle the includes.
        Parameters:
        propertiesFile -
        Throws:
        java.io.FileNotFoundException
        java.io.IOException
      • setProperties

        public void setProperties​(java.io.File propertiesFile,
                                  java.io.File base)
      • begin

        protected void begin()
      • isTrue

        public static boolean isTrue​(java.lang.String value)
      • getUnprocessedProperty

        public java.lang.String getUnprocessedProperty​(java.lang.String key,
                                                       java.lang.String deflt)
        Get a property without preprocessing it with a proper default
        Parameters:
        key -
        deflt -
      • getProperty

        public java.lang.String getProperty​(java.lang.String key,
                                            java.lang.String deflt)
        Get a property with preprocessing it with a proper default
        Parameters:
        key -
        deflt -
      • getProperty

        public java.lang.String getProperty​(java.lang.String key,
                                            java.lang.String deflt,
                                            java.lang.String separator)
      • getProperty

        private java.lang.String getProperty​(java.lang.String key,
                                             java.lang.String deflt,
                                             java.lang.String separator,
                                             boolean inherit)
      • getWildcardProperty

        private java.lang.String getWildcardProperty​(java.lang.String deflt,
                                                     java.lang.String separator,
                                                     boolean inherit,
                                                     Instruction ins)
      • getLiteralProperty

        private java.lang.String getLiteralProperty​(java.lang.String key,
                                                    java.lang.String deflt,
                                                    Processor source,
                                                    boolean inherit)
      • loadProperties

        public java.util.Properties loadProperties​(java.io.File file)
                                            throws java.io.IOException
        Helper to load a properties file from disk.
        Parameters:
        file -
        Throws:
        java.io.IOException
      • loadProperties0

        UTF8Properties loadProperties0​(java.io.File file)
                                throws java.io.IOException
        Load Properties from disk. The default encoding is ISO-8859-1 but nowadays all files are encoded with UTF-8. So we try to load it first as UTF-8 and if this fails we fail back to ISO-8859-1
        Parameters:
        in - The stream to load from
        name - The name of the file for doc reasons
        Returns:
        a Properties
        Throws:
        java.io.IOException
      • replaceAll

        public static java.util.Properties replaceAll​(java.util.Properties p,
                                                      java.lang.String pattern,
                                                      java.lang.String replacement)
        Replace a string in all the values of the map. This can be used to preassign variables that change. I.e. the base directory ${.} for a loaded properties
      • printClauses

        public static java.lang.String printClauses​(java.util.Map<?,​? extends java.util.Map<?,​?>> exports)
                                             throws java.io.IOException
        Print a standard Map based OSGi header.
        Parameters:
        exports - map { name => Map { attribute|directive => value } }
        Returns:
        the clauses
        Throws:
        java.io.IOException
      • printClauses

        public static java.lang.String printClauses​(java.util.Map<?,​? extends java.util.Map<?,​?>> exports,
                                                    boolean checkMultipleVersions)
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • printClause

        public static void printClause​(java.util.Map<?,​?> map,
                                       java.lang.StringBuilder sb)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • quote

        public static boolean quote​(java.lang.Appendable sb,
                                    java.lang.String value)
                             throws java.io.IOException
        Parameters:
        sb -
        value -
        Throws:
        java.io.IOException
      • getReplacer

        public Macro getReplacer()
      • getMacroDomains

        protected java.lang.Object[] getMacroDomains()
        This should be overridden by subclasses to add extra macro command domains on the search list.
      • getFlattenedProperties

        public java.util.Properties getFlattenedProperties()
        Return the properties but expand all macros. This always returns a new Properties object that can be used in any way.
      • getFlattenedProperties

        public java.util.Properties getFlattenedProperties​(boolean ignoreInstructions)
        Return the properties but expand all macros. This always returns a new Properties object that can be used in any way.
      • getPropertyKeys

        public java.util.Set<java.lang.String> getPropertyKeys​(boolean inherit)
        Return all inherited property keys
      • updateModified

        public boolean updateModified​(long time,
                                      java.lang.String reason)
      • lastModified

        public long lastModified()
      • setProperty

        public void setProperty​(java.lang.String key,
                                java.lang.String value)
        Add or override a new property.
        Parameters:
        key -
        value -
      • getManifestAsProperties

        public static java.util.Properties getManifestAsProperties​(java.io.InputStream in)
                                                            throws java.io.IOException
        Read a manifest but return a properties object.
        Parameters:
        in -
        Throws:
        java.io.IOException
      • getPropertiesFile

        public java.io.File getPropertiesFile()
      • setFileMustExist

        public void setFileMustExist​(boolean mustexist)
      • read

        public static java.lang.String read​(java.io.InputStream in)
                                     throws java.lang.Exception
        Throws:
        java.lang.Exception
      • join

        public static java.lang.String join​(java.util.Collection<?> list,
                                            java.lang.String delimeter)
        Join a list.
      • join

        public static java.lang.String join​(java.lang.String delimeter,
                                            java.util.Collection<?>... list)
      • join

        public static java.lang.String join​(java.lang.Object[] list,
                                            java.lang.String delimeter)
      • join

        public static java.lang.String join​(java.util.Collection<?>... list)
      • join

        public static <T> java.lang.String join​(T[] list)
      • split

        public static void split​(java.lang.String s,
                                 java.util.Collection<java.lang.String> set)
      • split

        public static java.util.Collection<java.lang.String> split​(java.lang.String s)
      • split

        public static java.util.Collection<java.lang.String> split​(java.lang.String s,
                                                                   java.lang.String splitter)
      • merge

        public static java.lang.String merge​(java.lang.String... strings)
      • isExceptions

        public boolean isExceptions()
      • setExceptions

        public void setExceptions​(boolean exceptions)
      • normalize

        public java.lang.String normalize​(java.lang.String f)
        Make the file short if it is inside our base directory, otherwise long.
        Parameters:
        f -
      • normalize

        public java.lang.String normalize​(java.io.File f)
      • removeDuplicateMarker

        public static java.lang.String removeDuplicateMarker​(java.lang.String key)
      • isDuplicate

        public static boolean isDuplicate​(java.lang.String name)
      • setTrace

        public void setTrace​(boolean x)
      • exists

        public boolean exists()
      • isOk

        public boolean isOk()
        Description copied from interface: Report
        Check if this report has any relevant errors that should make the run associated with this report invalid. I.e. if this returns false then the run should be disregarded.
        Specified by:
        isOk in interface Report
        Returns:
        true if this run should be disregarded due to errors
      • fixupMessages

        private void fixupMessages()
        Move errors and warnings to their proper place by scanning the fixup messages property.
      • doFixup

        private void doFixup​(Instructions instrs,
                             java.util.List<java.lang.String> messages,
                             java.util.List<java.lang.String> other,
                             java.lang.String type)
      • check

        public boolean check​(java.lang.String... pattern)
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • report

        protected void report​(java.lang.Appendable out)
                       throws java.io.IOException
        Throws:
        java.io.IOException
      • isPerfect

        public boolean isPerfect()
      • setForceLocal

        public void setForceLocal​(java.util.Collection<java.lang.String> local)
      • isMissingPlugin

        public boolean isMissingPlugin​(java.lang.String name)
        Answer if the name is a missing plugin's command name. If a bnd file contains the command name of a plugin, and that plugin is not available, then an error is reported during manifest calculation. This allows the plugin to fail to load when it is not needed. We first get the plugins to ensure it is properly initialized.
        Parameters:
        name -
      • appendPath

        public static java.lang.String appendPath​(java.lang.String... parts)
        Append two strings to for a path in a ZIP or JAR file. It is guaranteed to return a string that does not start, nor ends with a '/', while it is properly separated with slashes. Double slashes are properly removed.
         "/" + "abc/def/" becomes "abc/def"
         @param prefix @param suffix @return
      • doAttrbutes

        public static Attrs doAttrbutes​(java.lang.Object[] attrs,
                                        Clazz clazz,
                                        Macro macro)
        Parse the a=b strings and return a map of them.
        Parameters:
        attrs -
        clazz -
      • formatArrays

        public static java.lang.String formatArrays​(java.lang.String string,
                                                    java.lang.Object... parms)
        This method is the same as String.format but it makes sure that any arrays are transformed to strings.
        Parameters:
        string -
        parms -
      • makePrintable

        public static java.lang.Object makePrintable​(java.lang.Object object)
        Check if the object is an array and turn it into a string if it is, otherwise unchanged.
        Parameters:
        object - the object to make printable
        Returns:
        a string if it was an array or the original object
      • makePrintableArray

        private static java.lang.Object[] makePrintableArray​(java.lang.Object array)
      • append

        public static java.lang.String append​(java.lang.String... strings)
      • getClass

        public java.lang.Class<?> getClass​(java.lang.String type,
                                           java.io.File jar)
                                    throws java.lang.Exception
        Throws:
        java.lang.Exception
      • isTrace

        public boolean isTrace()
      • getDuration

        public static long getDuration​(java.lang.String tm,
                                       long dflt)
      • _random

        public java.lang.String _random​(java.lang.String[] args)
        Generate a random string, which is guaranteed to be a valid Java identifier (first character is an ASCII letter, subsequent characters are ASCII letters or numbers). Takes an optional parameter for the length of string to generate; default is 8 characters.
      • _native_capability

        public java.lang.String _native_capability​(java.lang.String... args)
                                            throws java.lang.Exception

        Generates a Capability string, in the format specified by the OSGi Provide-Capability header, representing the current native platform according to OSGi RFC 188. For example on Windows7 running on an x86_64 processor it should generate the following:

         osgi.native;osgi.native.osname:List<String>="Windows7,Windows
         7,Win32";osgi.native.osversion:Version=6.1.0;osgi.native.processor:List&
         lt;String>="x86-64,amd64,em64t,x86_64"
         
        Parameters:
        args - The array of properties. For example: the macro invocation of "${native_capability;osversion=3.2.4;osname=Linux}" results in an args array of [native_capability, osversion=3.2.4, osname=Linux]
        Throws:
        java.lang.Exception
      • beginHandleErrors

        protected Processor beginHandleErrors​(java.lang.String message)
        Set the current command thread. This must be balanced with the endHandleErrors(Processor) method. The method returns the previous command owner or null. The command owner will receive all warnings and error reports.
      • endHandleErrors

        protected void endHandleErrors​(Processor previous)
        End a command. Will restore the previous command owner.
        Parameters:
        previous -
      • getExecutor

        public static java.util.concurrent.Executor getExecutor()
      • getScheduledExecutor

        public static java.util.concurrent.ScheduledExecutorService getScheduledExecutor()
      • addBasicPlugin

        public void addBasicPlugin​(java.lang.Object plugin)
        These plugins are added to the total list of plugins. The separation is necessary because the list of plugins is refreshed now and then so we need to be able to add them at any moment in time.
        Parameters:
        plugin -
      • removeBasicPlugin

        public void removeBasicPlugin​(java.lang.Object plugin)
      • getIncluded

        public java.util.List<java.io.File> getIncluded()
      • get

        public java.lang.String get​(java.lang.String key)
        Overrides for the Domain class
        Specified by:
        get in class Domain
      • get

        public java.lang.String get​(java.lang.String key,
                                    java.lang.String deflt)
        Overrides:
        get in class Domain
      • set

        public void set​(java.lang.String key,
                        java.lang.String value)
        Specified by:
        set in class Domain
      • iterator

        public java.util.Iterator<java.lang.String> iterator()
        Specified by:
        iterator in interface java.lang.Iterable<java.lang.String>
        Specified by:
        iterator in class Domain
      • iterator

        private java.util.Iterator<java.lang.String> iterator​(boolean inherit)
      • keySet

        public java.util.Set<java.lang.String> keySet()
      • toString

        public java.lang.String toString()
        Printout of the status of this processor for toString()
        Overrides:
        toString in class java.lang.Object
      • replaceExtension

        public java.lang.String replaceExtension​(java.lang.String s,
                                                 java.lang.String extension,
                                                 java.lang.String newExtension)
        Utiltity to replace an extension
        Parameters:
        s -
        extension -
        newExtension -
      • getLocation

        public Report.Location getLocation​(java.lang.String msg)
        Description copied from interface: Report
        Return the errors for the given error or warning. Can return null.
        Specified by:
        getLocation in interface Report
        Parameters:
        msg - The message
        Returns:
        null or the location of the message
      • getHeader

        public Processor.FileLine getHeader​(java.lang.String header)
                                     throws java.lang.Exception
        Get a header relative to this processor, tking its parents and includes into account.
        Parameters:
        header -
        Throws:
        java.io.IOException
        java.lang.Exception
      • toFullHeaderPattern

        public static java.util.regex.Pattern toFullHeaderPattern​(java.lang.String header)
      • getHeader

        public Processor.FileLine getHeader​(java.util.regex.Pattern header)
                                     throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getHeader

        public Processor.FileLine getHeader​(java.lang.String header,
                                            java.lang.String clause)
                                     throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getHeader

        public Processor.FileLine getHeader​(java.util.regex.Pattern header,
                                            java.util.regex.Pattern clause)
                                     throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getHeader0

        private Processor.FileLine getHeader0​(java.util.regex.Pattern header,
                                              java.util.regex.Pattern clause)
                                       throws java.lang.Exception
        Throws:
        java.lang.Exception
      • findHeader

        public static Processor.FileLine findHeader​(java.io.File f,
                                                    java.lang.String header)
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • findHeader

        public static Processor.FileLine findHeader​(java.io.File f,
                                                    java.util.regex.Pattern header)
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • findHeader

        public static Processor.FileLine findHeader​(java.io.File f,
                                                    java.util.regex.Pattern header,
                                                    java.util.regex.Pattern clause)
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • getLine

        public static int getLine​(java.lang.String s,
                                  int index)
      • since

        public boolean since​(Version introduced)
      • report

        public void report​(java.util.Map<java.lang.String,​java.lang.Object> table)
                    throws java.lang.Exception
        Report the details of this processor. Should in general be overridden
        Parameters:
        table -
        Throws:
        java.lang.Exception
      • is

        public boolean is​(java.lang.String propertyName)
        Simplified way to check booleans
      • mergeProperties

        public java.lang.String mergeProperties​(java.lang.String key)
        Return merged properties. The parameters provide a list of property names which are concatenated in the output, separated by a comma. Not only are those property names looked for, also all property names that have that constant as a prefix, a '.', and then whatever (.*). The result is either null if nothing was found or a list of properties
      • mergeLocalProperties

        public java.lang.String mergeLocalProperties​(java.lang.String key)
      • mergeProperties

        public java.lang.String mergeProperties​(java.lang.String key,
                                                java.lang.String separator)
      • makeWildcard

        private java.lang.String makeWildcard​(java.lang.String key)
      • getMergedParameters

        public Parameters getMergedParameters​(java.lang.String key)
        Get a Parameters from merged properties
      • concat

        public <T> T[] concat​(java.lang.Class<T> type,
                              T[] prefix,
                              T suffix)
        Add an element to an array, creating a new one if necessary
      • getJarFromName

        public Jar getJarFromName​(java.lang.String name,
                                  java.lang.String from)
        Try to get a Jar from a file name/path or a url, or in last resort from the classpath name part of their files.
        Parameters:
        name - URL or filename relative to the base
        from - Message identifying the caller for errors
        Returns:
        null or a Jar with the contents for the name
      • fileName

        private java.lang.String fileName​(java.lang.String path)
      • _thisfile

        public java.lang.String _thisfile​(java.lang.String[] args)
        Return the name of the properties file
      • getSettings

        public void getSettings​(Processor p)
        Copy the settings of another processor
      • _frange

        public java.lang.String _frange​(java.lang.String[] args)
        Return a range expression for a filter from a version. By default this is based on consumer compatibility. You can specify a third argument (true) to get provider compatibility.
          ${frange;1.2.3} ->
         (&(version>=1.2.3)(!(version>=2.0.0)) ${frange;1.2.3, true} ->
         (&(version>=1.2.3)(!(version>=1.3.0)) ${frange;[1.2.3,2.3.4)} ->
         (&(version>=1.2.3)(!(version>=2.3.4))
         
      • _findfile

        public java.lang.String _findfile​(java.lang.String[] args)
      • tree

        void tree​(java.util.List<java.lang.String> list,
                  java.io.File current,
                  java.lang.String path,
                  Instruction instr)