Class Builder

  • All Implemented Interfaces:
    Constants, Registry, aQute.service.reporter.Report, aQute.service.reporter.Reporter, java.io.Closeable, java.lang.AutoCloseable, java.lang.Iterable<java.lang.String>
    Direct Known Subclasses:
    JUnitFramework.BundleBuilder, ProjectBuilder

    public class Builder
    extends Analyzer
    Include-Resource: ( [name '=' ] file )+ Private-Package: package-decl ( ',' package-decl )* Export-Package: package-decl ( ',' package-decl )* Import-Package: package-decl ( ',' package-decl )* @version $Revision: 1.27 $
    • Constructor Detail

      • Builder

        public Builder​(Processor parent)
      • Builder

        public Builder​(Builder parent)
      • Builder

        public Builder()
    • Method Detail

      • build

        public Jar build()
                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • init

        public void init()
                  throws java.lang.Exception
        Allow any local initialization by subclasses before we build.
        Throws:
        java.lang.Exception
      • changedFile

        protected void changedFile​(java.io.File f)
      • hasSources

        public boolean hasSources()
      • getExtra

        protected Jar getExtra()
                        throws java.lang.Exception
        Answer extra packages. In this case we implement conditional package. Any
        Overrides:
        getExtra in class Analyzer
        Throws:
        java.lang.Exception
      • analyze

        public void analyze()
                     throws java.lang.Exception
        Intercept the call to analyze and cleanup versions after we have analyzed the setup. We do not want to cleanup if we are going to verify.
        Overrides:
        analyze in class Analyzer
        Throws:
        IOException
        java.lang.Exception
      • cleanupVersion

        public void cleanupVersion​(Packages packages,
                                   java.lang.String defaultVersion)
      • cleanupVersion

        public void cleanupVersion​(Packages packages,
                                   java.lang.String defaultVersion,
                                   java.lang.String what)
      • getSourcePath

        public java.util.Collection<java.io.File> getSourcePath()
      • addAll

        public boolean addAll​(Jar to,
                              Jar sub,
                              Instruction filter)
        Add all the resources in the given jar that match the given filter.
        Parameters:
        sub - the jar
        filter - a pattern that should match the resoures in sub to be added
      • addAll

        public boolean addAll​(Jar to,
                              Jar sub,
                              Instruction filter,
                              java.lang.String destination)
        Add all the resources in the given jar that match the given filter.
        Parameters:
        sub - the jar
        filter - a pattern that should match the resoures in sub to be added
      • setSourcepath

        public void setSourcepath​(java.io.File[] files)
      • addSourcepath

        public void addSourcepath​(java.io.File cp)
      • builds

        public Jar[] builds()
                     throws java.lang.Exception
        Build Multiple jars. If the -sub command is set, we filter the file with the given patterns.
        Throws:
        java.lang.Exception
      • startBuild

        protected void startBuild​(Builder builder)
                           throws java.lang.Exception
        Called when we start to build a builder
        Throws:
        java.lang.Exception
      • doneBuild

        protected void doneBuild​(Builder builder)
                          throws java.lang.Exception
        Called when we're done with a builder
        Throws:
        java.lang.Exception
      • getSubBuilders

        public java.util.List<Builder> getSubBuilders()
                                               throws java.lang.Exception
        Answer a list of builders that represent this file or a list of files specified in -sub. This list can be empty. These builders represents to be created artifacts and are each scoped to such an artifacts. The builders can be used to build the bundles or they can be used to find out information about the to be generated bundles.
        Returns:
        List of 0..n builders representing artifacts.
        Throws:
        java.lang.Exception
      • getSubBuilder

        public Builder getSubBuilder​(java.io.File file)
                              throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getSubBuilder

        public Builder getSubBuilder()
                              throws java.lang.Exception
        Throws:
        java.lang.Exception
      • _maven_version

        public java.lang.String _maven_version​(java.lang.String[] args)
        A macro to convert a maven version to an OSGi version
      • _permissions

        public java.lang.String _permissions​(java.lang.String[] args)
      • removeBundleSpecificHeaders

        public void removeBundleSpecificHeaders()
      • isInScope

        public boolean isInScope​(java.util.Collection<java.io.File> resources)
                          throws java.lang.Exception
        Check if the given resource is in scope of this bundle. That is, it checks if the Include-Resource includes this resource or if it is a class file it is on the class path and the Export-Package or Private-Package include this resource.
        Throws:
        java.lang.Exception
      • getClasspathEntrySuffix

        public java.lang.String getClasspathEntrySuffix​(java.io.File resource)
                                                 throws java.lang.Exception
        Answer the string of the resource that it has in the container. It is possible that the resource is a classpath entry. In that case an empty string is returned.
        Parameters:
        resource - The resource to look for
        Returns:
        A suffix on the classpath or "" if the resource is a class path entry
        Throws:
        java.lang.Exception
      • doNotCopy

        public boolean doNotCopy​(java.lang.String v)
        doNotCopy The doNotCopy variable maintains a patter for files that should not be copied. There is a default Constants.DEFAULT_DO_NOT_COPY but this ca be overridden with the Constants.DONOTCOPY property.
      • doNotCopy

        public boolean doNotCopy​(java.io.File from)
      • getDoNotCopy

        public java.util.regex.Pattern getDoNotCopy()
      • doDiff

        public void doDiff​(Jar dot)
                    throws java.lang.Exception
        Diff this bundle to another bundle for the given packages.
        Throws:
        java.lang.Exception
      • addSourcepath

        public void addSourcepath​(java.util.Collection<java.io.File> sourcepath)
      • doBaseline

        protected void doBaseline​(Jar dot)
                           throws java.lang.Exception
        Base line against a previous version. Should be overridden in the ProjectBuilder where we have access to the repos
        Throws:
        java.lang.Exception
      • _githead

        public java.lang.String _githead​(java.lang.String[] args)
                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • report

        public void report​(java.util.Map<java.lang.String,​java.lang.Object> table)
                    throws java.lang.Exception
        Create a report of the settings
        Overrides:
        report in class Analyzer
        Throws:
        java.lang.Exception
      • system

        public java.lang.String system​(boolean allowFail,
                                       java.lang.String command,
                                       java.lang.String input)
                                throws java.io.IOException,
                                       java.lang.InterruptedException
        We override system so that, for the duration of a build operation, we may cache the result of a given system call. In a large build with many 'make' build jars, such as some OSGi CT build projects, we may call system hundreds of time to compute headers based upon git information such as 'git describe'. Since this information will not change during the course of a single build operation, we cache results to only call once.
        Overrides:
        system in class Processor
        Throws:
        java.io.IOException
        java.lang.InterruptedException