aQute.lib.osgi
Class Analyzer

java.lang.Object
  extended by aQute.lib.osgi.Processor
      extended by aQute.lib.osgi.Analyzer
All Implemented Interfaces:
Constants, aQute.libg.reporter.Reporter, java.io.Closeable
Direct Known Subclasses:
Builder, Verifier

public class Analyzer
extends Processor


Field Summary
 
Fields inherited from class aQute.lib.osgi.Processor
DEFAULT_PLUGINS, LIST_SPLITTER
 
Fields inherited from interface aQute.lib.osgi.Constants
BLUEPRINT_TIMEOUT_ATTRIBUTE, BLUEPRINT_WAIT_FOR_DEPENDENCIES_ATTRIBUTE, BND_LASTMODIFIED, BUILDFILES, BUILDPATH, BUMPPOLICY, BUNDLE_ACTIVATIONPOLICY, BUNDLE_ACTIVATOR, BUNDLE_BLUEPRINT, BUNDLE_CATEGORY, BUNDLE_CLASSPATH, BUNDLE_CONTACTADDRESS, BUNDLE_COPYRIGHT, BUNDLE_DESCRIPTION, BUNDLE_DOCURL, BUNDLE_ICON, BUNDLE_LICENSE, BUNDLE_LOCALIZATION, BUNDLE_MANIFESTVERSION, BUNDLE_NAME, BUNDLE_NATIVECODE, BUNDLE_REQUIREDEXECUTIONENVIRONMENT, BUNDLE_SPECIFIC_HEADERS, BUNDLE_SYMBOLIC_NAME_ATTRIBUTE, BUNDLE_SYMBOLICNAME, BUNDLE_UPDATELOCATION, BUNDLE_VENDOR, BUNDLE_VERSION, BUNDLE_VERSION_ATTRIBUTE, CLASSPATH, COMMAND_DIRECTIVE, CONDITIONAL_PACKAGE, CONDUIT, CREATED_BY, CURRENT_PACKAGE, CURRENT_USES, CURRENT_VERSION, DEBUG, DEFAULT_BAR_EXTENSION, DEFAULT_BND_EXTENSION, DEFAULT_JAR_EXTENSION, DEPENDSON, DEPLOYREPO, DESCRIPTION_ATTRIBUTE, directives, DONOTCOPY, DUPLICATE_MARKER, DYNAMICIMPORT_PACKAGE, EXCLUDE_DIRECTIVE, EXPORT_CONTENTS, EXPORT_PACKAGE, EXPORT_SERVICE, EXTENSION_DIRECTIVE, FAIL_OK, FRAGMENT_ATTACHMENT_DIRECTIVE, FRAGMENT_HOST, headers, IGNORE_PACKAGE, IMPORT_DIRECTIVE, IMPORT_PACKAGE, IMPORT_PRIVATE, IMPORT_REFERENCE, IMPORT_SERVICE, importDirectives, INCLUDE, INCLUDE_DIRECTIVE, INCLUDE_RESOURCE, INCLUDERESOURCE, KEYSTORE_LOCATION_DIRECTIVE, KEYSTORE_PASSWORD_DIRECTIVE, KEYSTORE_PROVIDER_DIRECTIVE, LANGUAGE_ATTRIBUTE, LINK_ATTRIBUTE, MAKE, MANDATORY_DIRECTIVE, MANIFEST, METAPACKAGES, NAME_ATTRIBUTE, NO_IMPORT_DIRECTIVE, NOEXTRAHEADERS, NOMANIFEST, NONE, NOPE, NOUSES, options, OSNAME_ATTRIBUTE, OSVERSION_ATTRIBUTE, PATH_DIRECTIVE, PEDANTIC, PLUGIN, POM, PRESENCE_DIRECTIVE, PRIVATE_PACKAGE, PROCESSOR_ATTRIBUTE, RELEASEREPO, REMOVE_ATTRIBUTE_DIRECTIVE, REMOVE_HEADERS, REPORTNEWER, REQUIRE_BUNDLE, RESOLUTION_DIRECTIVE, RESOURCEONLY, RUNBUNDLES, RUNPATH, RUNPROPERTIES, RUNSYSTEMPACKAGES, RUNVM, SELECTION_FILTER_ATTRIBUTE, SERVICE_COMPONENT, SIGN, SIGN_PASSWORD_DIRECTIVE, SIGNATURE_TEST, SINGLETON_DIRECTIVE, SIZE_ATTRIBUTE, SOURCEPATH, SOURCES, SPLIT_PACKAGE_DIRECTIVE, STRATEGY_HIGHEST, STRATEGY_LOWEST, SUB, TESTBUNDLES, TESTCASES, TESTPACKAGES, TESTREPORT, TOOL, UNDERTEST, USES_DIRECTIVE, USES_USES, VALID_PROPERTY_TYPES, VERBOSE, VERSION_ATTRIBUTE, VERSIONPOLICY, VISIBILITY_DIRECTIVE
 
Constructor Summary
Analyzer()
           
Analyzer(Processor parent)
           
 
Method Summary
 java.lang.String _bsn(java.lang.String[] args)
           
 java.lang.String _classes(java.lang.String... args)
           
 java.lang.String _exporters(java.lang.String[] args)
          Get the exporter of a package ...
 java.lang.String _findname(java.lang.String[] args)
           
 java.lang.String _findpath(java.lang.String[] args)
          Findpath looks through the contents of the JAR and finds paths that end with the given regular expression ${findpath (; reg-expr (; replacement)? )? }
 void addClasspath(java.io.File cp)
           
 void addClasspath(Jar jar)
           
 void analyze()
          Calcualtes the data structures for generating a manifest.
 java.util.Map<java.lang.String,Clazz> analyzeBundleClasspath(Jar dot, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> bundleClasspath, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> contained, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> referred, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> uses)
           
protected  void begin()
           
 java.util.jar.Manifest calcManifest()
          One of the main workhorses of this class.
 java.lang.String calculateExportsFromContents(Jar bundle)
          Calculate an export header solely based on the contents of a JAR file
 boolean checkClass(java.lang.String interfaceName)
          Check if the given class or interface name is contained in the jar.
static java.lang.String cleanupVersion(java.lang.String version)
           
 void clear()
           
 void close()
           
 java.lang.String getBndInfo(java.lang.String key, java.lang.String defaultValue)
           
 long getBndLastModified()
           
 java.lang.String getBsn()
          Clear the key part of a header.
 java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getBundleClasspath()
           
 java.util.Collection<Clazz> getClasses(java.lang.String... args)
           
 java.util.List<Jar> getClasspath()
           
 java.util.Map<java.lang.String,Clazz> getClassspace()
           
 java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getContained()
           
 java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getExports()
           
protected  java.lang.String getImportPackages()
          Analyzer has an empty default but the builder has a * as default.
 java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getImports()
           
 Jar getJar()
           
static java.util.Properties getManifest(java.io.File dirOrJar)
          Specifically for Maven
 java.lang.String getPackage(java.lang.String clazz)
           
 java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getReferred()
           
 Jar getTarget()
           
 java.util.Set<java.lang.String> getUnreachable()
          Return the set of unreachable code depending on exports and the bundle activator.
 java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getUses()
           
 java.lang.String getVersion()
          Get the version from the manifest, a lot of work!
 java.lang.String getVersionPolicy()
           
 void mergeManifest(java.util.jar.Manifest manifest)
          Merge the existing manifest with the instructions.
 void putAll(java.util.Map<java.lang.String,java.lang.String> additional, boolean force)
           
 void setBase(java.io.File file)
           
 void setClasspath(java.io.File[] classpath)
          Set the classpath for this analyzer by file.
 void setClasspath(Jar[] classpath)
           
 void setClasspath(java.lang.String[] classpath)
           
 Jar setJar(java.io.File jar)
          Set the JAR file we are going to work in.
 Jar setJar(Jar jar)
          Set the JAR directly we are going to work on.
 
Methods inherited from class aQute.lib.osgi.Processor
_basedir, addClose, addIncluded, addProperties, appendPath, error, error, exists, getBase, getErrors, getFile, getFile, getFlattenedProperties, getInfo, getInfo, getMacroDomains, getManifestAsProperties, getParent, getPlugins, getPlugins, getProperties, getPropertiesFile, getProperty, getProperty, getReplacer, getTop, getWarnings, isDuplicate, isExceptions, isFailOk, isMissingPlugin, isOk, isPedantic, isPerfect, isTrue, join, join, join, lastModified, loadProperties, merge, mergeProperties, mergeProperties, newHashMap, newList, newList, newMap, newMap, newSet, newSet, normalize, normalize, parseHeader, parseHeader, printClause, printClauses, printClauses, progress, propertiesChanged, read, refresh, removeDuplicateMarker, replaceAll, replaceWitInstruction, setExceptions, setFileMustExist, setForceLocal, setParent, setPedantic, setProperties, setProperties, setProperties, setProperty, setTrace, split, split, split, trace, unsetProperty, updateModified, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Analyzer

public Analyzer(Processor parent)

Analyzer

public Analyzer()
Method Detail

getManifest

public static java.util.Properties getManifest(java.io.File dirOrJar)
                                        throws java.io.IOException
Specifically for Maven

Parameters:
properties - the properties
Throws:
java.io.IOException

analyze

public void analyze()
             throws java.io.IOException
Calcualtes the data structures for generating a manifest.

Throws:
java.io.IOException

getImportPackages

protected java.lang.String getImportPackages()
Analyzer has an empty default but the builder has a * as default.

Returns:

calcManifest

public java.util.jar.Manifest calcManifest()
                                    throws java.io.IOException
One of the main workhorses of this class. This will analyze the current setp and calculate a new manifest according to this setup. This method will also set the manifest on the main jar dot

Returns:
Throws:
java.io.IOException

getBsn

public java.lang.String getBsn()
Clear the key part of a header. I.e. remove everything from the first ';'

Parameters:
value -
Returns:

_bsn

public java.lang.String _bsn(java.lang.String[] args)

calculateExportsFromContents

public java.lang.String calculateExportsFromContents(Jar bundle)
Calculate an export header solely based on the contents of a JAR file

Parameters:
bundle - The jar file to analyze
Returns:

getBundleClasspath

public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getBundleClasspath()

getContained

public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getContained()

getExports

public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getExports()

getImports

public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getImports()

getJar

public Jar getJar()

getReferred

public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getReferred()

getUnreachable

public java.util.Set<java.lang.String> getUnreachable()
Return the set of unreachable code depending on exports and the bundle activator.

Returns:

getUses

public java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getUses()

getVersion

public java.lang.String getVersion()
Get the version from the manifest, a lot of work!

Returns:
version or unknown.

getBndLastModified

public long getBndLastModified()

getBndInfo

public java.lang.String getBndInfo(java.lang.String key,
                                   java.lang.String defaultValue)

mergeManifest

public void mergeManifest(java.util.jar.Manifest manifest)
                   throws java.io.IOException
Merge the existing manifest with the instructions.

Parameters:
manifest - The manifest to merge with
Throws:
java.io.IOException

setBase

public void setBase(java.io.File file)
Overrides:
setBase in class Processor

setClasspath

public void setClasspath(java.io.File[] classpath)
                  throws java.io.IOException
Set the classpath for this analyzer by file.

Parameters:
classpath -
Throws:
java.io.IOException

setClasspath

public void setClasspath(Jar[] classpath)

setClasspath

public void setClasspath(java.lang.String[] classpath)

setJar

public Jar setJar(java.io.File jar)
           throws java.io.IOException
Set the JAR file we are going to work in. This will read the JAR in memory.

Parameters:
jar -
Returns:
Throws:
java.io.IOException

setJar

public Jar setJar(Jar jar)
Set the JAR directly we are going to work on.

Parameters:
jar -
Returns:

begin

protected void begin()
Overrides:
begin in class Processor

checkClass

public boolean checkClass(java.lang.String interfaceName)
Check if the given class or interface name is contained in the jar.

Parameters:
interfaceName -
Returns:

close

public void close()
Specified by:
close in interface java.io.Closeable
Overrides:
close in class Processor

_findpath

public java.lang.String _findpath(java.lang.String[] args)
Findpath looks through the contents of the JAR and finds paths that end with the given regular expression ${findpath (; reg-expr (; replacement)? )? }

Parameters:
args -
Returns:

_findname

public java.lang.String _findname(java.lang.String[] args)

putAll

public void putAll(java.util.Map<java.lang.String,java.lang.String> additional,
                   boolean force)

getClasspath

public java.util.List<Jar> getClasspath()

addClasspath

public void addClasspath(Jar jar)

addClasspath

public void addClasspath(java.io.File cp)
                  throws java.io.IOException
Throws:
java.io.IOException

clear

public void clear()
Overrides:
clear in class Processor

getTarget

public Jar getTarget()

analyzeBundleClasspath

public java.util.Map<java.lang.String,Clazz> analyzeBundleClasspath(Jar dot,
                                                                    java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> bundleClasspath,
                                                                    java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> contained,
                                                                    java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> referred,
                                                                    java.util.Map<java.lang.String,java.util.Set<java.lang.String>> uses)
                                                             throws java.io.IOException
Throws:
java.io.IOException

cleanupVersion

public static java.lang.String cleanupVersion(java.lang.String version)

getPackage

public java.lang.String getPackage(java.lang.String clazz)

getVersionPolicy

public java.lang.String getVersionPolicy()

_classes

public java.lang.String _classes(java.lang.String... args)

getClasses

public java.util.Collection<Clazz> getClasses(java.lang.String... args)

_exporters

public java.lang.String _exporters(java.lang.String[] args)
                            throws java.lang.Exception
Get the exporter of a package ...

Throws:
java.lang.Exception

getClassspace

public java.util.Map<java.lang.String,Clazz> getClassspace()