Knopflerfish 3.6.0
Contents
Release Notes
License
Getting Started
Installing
Running
Building
Programming
Testing
Developer's Doc
Tutorials
Java API docs
Framework and Bundle docs
Bundle jar docs
www.knopflerfish.org
KF Forum
Bug tracker
Bundle repository
Source (subversion)
Eclipse plugin
Maintained by Makewave
Knopflerfish Pro
Professional Services
Training

Services for the OSGi Business User
Release Notes Knopflerfish 3.6.0 (OSGi R4 v4.2)
--------------------------------------------------

  Maintenance release of Knopflerfish available from
  http://www.knopflerfish.org/releases/3.6.0

  Here follows a breakdown of the most important changes since the
  last release.


=== Framework (Core) ===

* Framework 5.3.11

  - Fixed race condition in start-level controller that
    causes a NPE if you uninstall a bundle on the
    same start-level during bundle start.

  Framework 5.3.10

  - Removed faulty redundant check, when checking that
    all component were signed.

  Framework 5.3.9

  - Added framework property for work-around for bug
    JarInputStream in Oracle class library (found in
    java6 version 1.6.0_45).
    This bug causes the JarInputStream to miss picking
    up certificates for files under the "META-INF"
    directory if they directly follow the META-INF
    signature related files. This causes KF to mark
    the bundle as not completly signed.
    To avoid set following framework property to "true":
    org.knopflerfish.framework.bundlestorage.file.jar_verifier_bug
   
  - Fixed faulty filtering of META-INF in previous
    check-in/version.

  Framework 5.3.8

  - Missed counting some files under META-INF when checking
    if a bundle was properly signed. This resulted in a
    faulty error message.

  Framework 5.3.7

  - Use System.nanoTime() when available to avoid
    timer problems when correcting system clock.

  Framework 5.3.6

  - Fixed require bundle on system bundle. See,
    http://sourceforge.net/p/gatespace/bugs/172 and
    http://sourceforge.net/p/gatespace/bugs/173

  Framework 5.3.5

  - Time-out added to Bundle.start and Bundle.stop. The time-out
    is enabled by setting the framework property
    org.knopflerfish.framework.bundlethread.timeout. 

  Framework 5.3.4

  - Create data storage are for system bundle. Can be accessed via
    getDataFile() for the system bundle.
  - Split and narrow synchronization for URLStreamHandler
    adminstration.
  - Fixed bug when cleaning in URLStreamHandler adminstration during
    framework uninitialization.


=== Services (Compendium) ===

* Device-Manager 3.0.2

  - Missed a minus in last patch.

  Device-Manager 3.0.1

  - Use System.nanoTime() when available to avoid
    timer problems when correcting system clock.


* Event 3.0.10

  - Typo caused NPE in log message about unregistered service.

  Event 3.0.9

  - Use System.nanoTime() when available to avoid
    timer problems when correcting system clock.


* HTTP 3.1.5

  - Use System.nanoTime() when available to avoid
    timer problems when correcting system clock.
  - When all of the transaction threads can not be terminated on
    shut-down of the http bundle, we can not destroy the transaction
    manager thread group.

  HTTP 3.1.4

  - Fixed a resource leaks in the TransactionManager class.
    See https://sourceforge.net/p/gatespace/bugs/175/

  HTTP 3.1.3

  - Date headers could be messed up since the SimpleDateFormat
    instances used for the formating was shared without any
    synchronizatrion.  All usages of the shared date formatters are
    now properly synchronized.
    See https://sourceforge.net/p/gatespace/bugs/174/
  - The expires date in cookie headers is now in GMT (UTC) which is a
    requirement in RFC 2616 section 3.3.1 and also in RFC 6265.


* Prefs (OSGi Preferences Service) 3.0.2

  - Code requiring permissions have been wrapped in do-privileged
    constructions. Prefs should now work as expected with security
    enabled. 


* SCR(component) 3.1.18

  - Added error message when we get mismatch on bind, modify and
    unbind calls.
  - Don't deactivate factory components when last consumer ungets
    service.

  SCR(component) 3.1.17

  - Fixed so that bind and unbind is called for all references
    for all factory component instances.

  SCR(component) 3.1.16

  - Fixed a problem that caused delayed components to deadlock
    during deactivation.  

  SCR(component) 3.1.15

  - Fixed so that we can handle target filter properties that are
    string arrays with one element.


=== Misc (KF specific, start scripts, build system etc) ===

* Desktop-AWT 3.0.1

  - Use System.nanoTime() when available to avoid
    timer problems when correcting system clock.


* DirDeployer 3.0.1

  - Fixed bug in automatic scaning interval setting and
    removed use of System.currentTimeMillis().


* ksoap_remotefw 3.0.4

  - Add support for service properties that are of type Set to the
    remoting.


* SCR Commands(scrcommands) 1.1.1

  - Fixed a typo that sometimes caused ArrayIndexOutOfBoundsException
    when using the list command.


* Util 2.1.0

  - Use System.nanoTime() when available to avoid
    timer problems when correcting system clock.
  - Added method Timer.timeMillis() that uses
    System.nanoTime() when available otherwise
    is reverts to System.currentTimeMillis().
  - Added version number to exported packages.



========================================================================



Release Notes Knopflerfish 3.5.0 (OSGi R4 v4.2)
--------------------------------------------------

  Maintenance release of Knopflerfish available from
  http://www.knopflerfish.org/releases/3.5.0

  Here follows a breakdown of the most important changes since the
  last release.


=== Framework (Core) ===

* Framework 5.3.3

  - Removed unnecessary delay in startlevel service during
    shutdown.
  - Fixed so that FrameworkPolicy.getPermissions() returns
    a mutable copy.

  Framework 5.3.2

  - Fixed NPE when uninstalling a bundle simultaneously from
    multiple threads.

  Framework 5.3.1

  - Fixed a bug when calculating candidate objectClasses that can
    match a given ldap-expression.
  - Fixed possible NullPointerException in ServiceListenerState.

  Framework 5.3.0

  - Added support for framework extensions that needs to register
    services or keep track of the creation / termination of bundle
    class loaders.


  Framework 5.2.8

  - Fixed ServiceReference.isAssignableTo() so that correctly handles
    exported packages from fragments and extensions.
  - Changed ServiceFactory handling so that it only sends a framework
    warning event instead of a framework error event when the
    ServiceFactory.getService() returns null.
  - Fixed permission problem when storing initial bundle start level.
  - Fixed race condition when doing refreshPackages on an uninstalling
    bundle.

  Framework 5.2.7

  - Fixed so that BundleURLConnection.getInputStream() throws IOException
    as it should, instead of returning null.

  Framework 5.2.6

  - Fixed race condition NPE when doing ServiceReference.(un)getService()
    on an unregistering service.

  Framework 5.2.5

  - Fixed NPE when doing ServiceReference.isAssignableTo on an
    unregistered service.


=== Services (Compendium) ===

* Event Admin 3.0.8

  - Fixed handling of FrameworkEvent.WARNING events.


* Log Service 3.1.3
  
  - Include FrameworkEvent nested exceptions in log entries
    for INFO and WARNING events.


* SCR(component) 3.1.14

  - Fixed so that postponed binds are not rebinded to early.
  - Corrected unbind service reference count handling.

  SCR(component) 3.1.13

  - Fixed race condition in ComponentFactory.newInstance().
  - Split ComponentFactory and org.apache.felix.scr.Component
    objects to be able to use permissions to hinder unwanted
    access.

  SCR(component) 3.1.12

  - Fixed bind/unbind calls on a re-enabled component.
  - Fixed NPE when logging to a component bundle.

  SCR(component) 3.1.11
  
  - Fixed so that delayed components that still was satisfied
     re-registered after being deactivated
     (This fixes the problem that scrcommands only works once).
  - Handle when trying to do newInstance on an unregistered
    ComponentFactory.
  - Fix so that static service references is valid during
    deactivate.
  - Fixed so that circular deactivate works, this by doing
    unbind of dynamic optional references before deactivating
    a component.


* User Administration Service 3.0.3
  - Fixed service listener leak. A new LogRef object is no longer
    created each time a user admin event is sent.


=== Misc (KF specific, start scripts, build system etc) ===

* Console 3.0.4
  
  - Removed unnecessary delay during shutdown.


* Desktop 3.2.5

  - The Service-Component XML presentation in the manifest-tab now
    links to the list of SCR components by name also when an
    XML-namespace prefix is present on the component-element.


* Framework Commands 3.2.0

  - Added "-s" flag to "threads" command for printing a
    stack trace for the thread (Only works on java 1.5 and later).
  - Added possibility to filter which threads to show.


* HttpClientConnector 3.1.2

  - Fixed conflicting interpretation of the string form URL; the
    http client connector expects non-escaped URLs (no %HH encoded
    characters) but the internal proxy handler expected text URLs that
    complied to RFC 2396 (all illegal chars %HH encoded). The internal
    proxy class now also assumes non-escaped URLs when parsing.
  - The non-proxy hosts was parsed incorrectly.


* SCR Commands 1.1.0

  - Added "-s" and "-u" flag to the "list" command, so that you
    can select to only show "satisfied" or "unsatisfied" components.


========================================================================



Release Notes Knopflerfish 3.4.0 (OSGi R4 v4.2)
--------------------------------------------------

  Maintenance release of Knopflerfish available from
  http://www.knopflerfish.org/releases/3.4.0

  Here follows a breakdown of the most important changes since the
  last release.


=== Framework (Core) ===

* Framework 5.2.4

  - Removed Main class dependency from framework.
  - Updated system bundles symbolic name, version and
    bundle header vendor and description with
    correct values.
  - Launcher prints created framework symbolic name and version.
  - Set framework property org.osgi.framework.startlevel.beginning
    to current start level value before launch, if not previously
    set.
  - Removed unused revision file from framework.jar.

  Framework 5.2.3

  - Display current os, os version, processor and language when
    failing to resolving a bundles native-code header.

  Framework 5.2.2

  - Fixed race condition when doing dynamic package import during
    resolve of bundles.

  Framework 5.2.1

  - Fixed race condition in service unregister that caused a NPE.


=== Services (Compendium) ===

* Event Admin 3.0.7

  - Fixed NPE when handling unregistered services.

* HTTP 3.1.2

  - Improved the error handling in the fix that allowed HTTP bundle to
    start without command group when KF console API isn't available.

  HTTP 3.1.1

  - Corrected issue that prevented HTTP bundle to start correctly
    without a console command group when KF console API isn't
    available. 

  HTTP 3.1.0

  - Includes a new basic http console cmd group. Lists config, servlet
    and resource registrations, and transaction status of the HTTP
    server.  

* SCR(component) 3.1.10
  
  - Fixed clean-up when disabling a component, that caused problem
    when re-enabling the component.
  - Update component id when re-enabling a component.
  - Abort circular activate/deactivate.

  SCR(component) 3.1.9
  
  - Fixed error in Apache API. Reference.getServiceReference()
    returned all service candidates when cardinality was {0|1}..1,
    not just the bound one.
  - Fixed so that we allow bind methods to throw exceptions, but
    still considered it bound. See 112.5.7 in Compendium specification.

  SCR(component) 3.1.8
  
  - Fixed error recovery when trying to re-activate a component
    that previously failed to activate.

  SCR(component) 3.1.7
  
  - Fixed CM race condition that caused a NPE.

  SCR(component) 3.1.6
  
  - Fixed deadlock that could appear during bundle changed event.
  - Fixed faulty reference counter for component configurations,
    that caused faulty component deactivation.

  SCR(component) 3.1.5
  
  - Fixed deadlock that could appear during component activation.
  - Fixed circular component reference handling that could cause
    missing optional bind and activation problems.


=== Misc (KF specific, start scripts, build system etc) ===

* Desktop 3.2.4

  - Since the enable / disable operation for components are
    asynchronous a refresh-button has been added to the component
    details page.
  - Improved layout on the SCR component pages.

  Desktop 3.2.3

  - Better presentation of SCR components when several SCR-bundles are
    active.
  - Add work around for SCR-bundles that changes the component id when
    a component is disabled.

  Desktop 3.2.2

  - When looking at a SCR component XML-file in the manifest displayer
    the component name is now a link that when clicked will show a
    list with all components with that name.
  - The manifest displayer now handles multiple values as well as
    values with a wild-card for the Service-Component manifest
    attribute.

  Desktop 3.2.1

  - Added support for enabling / disabling components in the SCR tab.
  - If no bundle is selected the SCR tab will show all components.
  - The SCR-tab is now mentioned in the documentation.

  Desktop 3.2

  - New displayer that shows SCR components (a.k.a. declarative
    services) defined by a bundle. The state of the component as well
    as the state of its references are shown.
  - Optimizations: When the bundle selection state changes off-screen
    displayer will not be updated.
  - The navigation buttons (back, forward) at the bottom of some displayers
    now updates and remembers the links when clicking on a link in the it.
    The navigation history is cleared when a displayer becomes visible.


* Framework Commands 3.1

  - The dependency on packages org.osgi.service.permissionadmin and
    org.osgi.service.condpermadmin is now optional.


========================================================================



Release Notes Knopflerfish 3.3.0 (OSGi R4 v4.2)
--------------------------------------------------

  Maintenance release of Knopflerfish available from
  http://www.knopflerfish.org/releases/3.3.0

  Here follows a breakdown of the most important changes since the
  last release.


=== Framework (Core) ===

* Framework 5.2.0

  - Detect and abort recursive service factory calls.
  - Added support for running framework as an Android (4.x) application.
    The framework will create .dexopt files that lives side-by-side
    with the jar files. This can cause a problem if your bundles lives
    in a read-only directory and have the property (which is default):

    -Forg.knopflerfish.framework.bundlestorage.file.reference=true

    You then need to set the property to false, so that the bundle jars
    are copied into the "fwdir".

  Framework 5.1.18

  - Fixed dead lock problem with service listeners.
    http://sourceforge.net/tracker/?func=detail&aid=3475479&group_id=82798&atid=567241
  - Don't resolve bundle when doing an update.

  Framework 5.1.17

  - Fixed faulty loop variable when using "-update " command.
  - Fixed problem with import package for fragments.

  Framework 5.1.16

  - Handle the command line argument "-ff" like a property
    setting. I.e., load the default xargs files when no "-xargs" is
    given.

  Framework 5.1.15

  - Closed some InputStreams to avoid CloseGuard on Android.


=== Services (Compendium) ===

* Blueprint (API) 1.0.1
  
  - The API-bundle now imports all packages it exports.


* CM 3.0.4
  
  - Handle crippled PrivilegedExceptionAction in Android.

  CM 3.0.3
  
  - Removed unnecessary update calls introduced in 3.0.2.

  CM 3.0.2
  
  - The CM bundle now uses synchronous bundle listeners when
    updating location data.
  - Call update for new bundle when changing bundle location
    for a configuration.


* Deployment Admin (API) 1.0.2
  
  - The API-bundle now imports all packages it exports.


* DMTree 1.0.2
  
  - The API-bundle now imports all packages it exports.


* Event Admin 3.0.6
 
  - Removed spurious NullPointerException during shutdown.

  Event Admin 3.0.5
 
  - Removed three possible dead-locks between the Log-service and the
    Event Admin service that could happen when DEBUG-level logging was
    enabled. For details see
    https://sourceforge.net/tracker/?func=detail&aid=3413792&group_id=82798&atid=567241


* HTTP-Server 3.0.9
  
  - Closed some InputStreams to avoid CloseGuard on Android.

  HTTP-Server 3.0.8
  
  - Added optional import of "javax.net.ssl", so that we can use the
    SSL Client Authentication property.

  HTTP-Server 3.0.7
  
  - The API-version of this bundle now imports all packages it exports.
  - Fixed hanging when getting locale.


* IO (API) 3.0.1

  - The API-version of this bundle now imports all packages it exports.


* Log Service 3.1.2
  
  - Updated CM metatype information to R4 format.

  Log Service 3.1.1
  
  - The log configuration service now removes any directive or
    parameter from the bundle symbolic name before using it. For
    details see
    https://sourceforge.net/tracker/?func=detail&aid=3438377&group_id=82798&atid=567241

  Log Service 3.1.0

  - Made the format of the log entry timestamp when printed to a log
    file configurable (via LogConfig-service, CM and a new framework
    property).  For details see
    http://sourceforge.net/tracker/?func=detail&aid=3426947&group_id=82798&atid=567241
  - When using the LogConfig-service to update the log configuration
    an explicit call to LogConfig.commit() is now required to store
    the changes in CM. Previously some methods auto-commited changes.
  - Fixed synchronization issue; the same instance of SimpleDateFormat
    could be used concurrently from several threads to format
    timestamps without any synchronization.
  - The API-version of this bundle now imports all packages it
    exports.  For details see
    http://sourceforge.net/tracker/?func=detail&aid=3402741&group_id=82798&atid=567241


* KF_Metatype (metatype) 3.0.2

  - Do not try to insert system properties with a null value into the
    OCD for system properties (this will fail with a null pointer
    exception).


* SCR(component) 3.1.4
  
  - Fixed so that we always register service before running activation method.
  - Fixed racing condition in service listening code.
  - Fixed infinity loop introduced in 3.1.3

  SCR(component) 3.1.3
  
  - Fixed bug that caused reference bind methods to be called when
    service properties was changed.
  - Fixed ordering problem when active services changed service ranking.

  SCR(component) 3.1.2

  - Fixed potential security problem with writeable component properties.

  SCR(component) 3.1.1 / 3.1.0

  - The SCR now exports the org.apache.felix.scr API (version 1.6)
    and provides the ScrService. This is useful for examining and
    debug your service components.
    There is a new command group scrcommands, that uses this service.
    The service has not been thoroughly tested and the service also
    needs to be extended to handle factory components better.
    The service isn't thread safe yet.

  SCR(component) 3.0.5

  - Fixed dynamic reference problem when we added CM data.

  SCR(component) 3.0.4

  - Fixed problem with components that weren't activated in the correct
    order when we had immediate components with optional circular references.
  - Handle when we don't have a CM service installed.


* User Admin 3.0.2

  - The API-version of this bundle now imports all packages it exports.



=== Misc (KF specific, start scripts, build system etc) ===

* Axis2-osgi 1.3.0.kf3-001

  - Fix broken handling of http.nonProxyHosts system property.


* CM-Commands 3.0.2
  
  - Handle crippled PrivilegedExceptionAction in Android.


* Console 3.0.3
  
  - Handle crippled PrivilegedExceptionAction in Android.

  Console 3.0.2
  
  - The method exported helper method
    org.knopflerfish.service.console.Util.symbolicName(Bundle) now
    removes any directive or parameter from the bundle symbolic name
    before using it. For details see
    https://sourceforge.net/tracker/?func=detail&aid=3438377&group_id=82798&atid=567241


* Desktop 3.1.10

  - The selected sort order in the Large Icons bundle displayer is now
    saved amongst other user preferences. If the system / framework
    property "org.knopflerfish.desktop.display.large_icons.sort" is
    set it will temporary over-ride the saved preferences value.

* Desktop 3.1.9

  - Added support for selecting the initial sort order in the Large Icons
    bundle displayer. The value of the system /framework property
    "org.knopflerfish.desktop.display.large_icons.sort" may be set to
    one of "id" (default), "start_level", "name" to select the sort order.
 
* Desktop 3.1.8

  - Fix bundle stop so that it works if called right after start.
  - Add typecasts needed when compiling against version 1.6 of the
    framework package.

* Desktop 3.1.7
  
  - The API-version of this bundle now imports all packages it exports.


* Framework Commands 3.0.4

  - The call command has been updated. It is now possible to call a method
    in a service interface that is inherited.


* HttpClientConnector 3.1.1

  - Added support for HTTP "PUT" method.

  HttpClientConnector 3.1.0

  - Added support for HTTP "DELETE" method.


* JSDK 2.5.0.kf3-2
  
  - The API-version of this bundle now imports all packages it exports.


* Log Commands 3.1.1
  
  - The showLevel and setLevel commands now removes any directive or
    parameter from the bundle symbolic name before using it. For
    details see
    https://sourceforge.net/tracker/?func=detail&aid=3438377&group_id=82798&atid=567241

  Log Commands 3.1.0

  - Added support for setting the log entry timestamp pattern.
  - All commands that changes the log configuration now commits the
    new configuration to CM.
  - It is now possible to change file logging related properties when
    the file log is not enabled.


* RXTX 2.2.0.pre2

  - Updated rxtxcomm API to 2.2.0.pre2 version.


* RXTX linux-x86 2.2.0.pre2

  - Added 2.2.0pre2 rxtxcomm native code fragment for linux-x86.


* SCR Commands(scrcommands) 1.0.0

  - New bundle that provides a console command group for controlling
    and inspecting service components. See bundle documentation for
    more information.


* Serial Port Device 2.0.1
  
  - The API-version of this bundle now imports all packages it exports.


* Build System

  - When suffixing the bundle kind to the bundle symbolic name
    directives and parameters are now handled correctly. For details see
    https://sourceforge.net/tracker/?func=detail&aid=3438377&group_id=82798&atid=567241
  - Fixed a problem with Android instrumentation on windows. Also
    factored out the Android instrumentation to a separate build
    file. For details, see
    https://sourceforge.net/tracker/?func=detail&aid=3405464&group_id=82798&atid=567241
  - Fixed a problem with the BundleArchives task, it failed to derives
    the correct short bundle name from the file name of a bundle
    archive when the qualifier part of the bundle version contained a
    '-'.
  - When using the bundleinfo task with the implicitImports option set
    to true it now adds a version range, not only a version to the
    generated import specification. The version ranges starts with the
    version that the bundle exports and ends with the next major
    version (excluded). If another version range is needed an explicit
    import with that range needs to be specified.
  - The master bundle build file, bundlebuild.xml, now adds implicit
    imports to API-bundles for packages exported by the API-bundle.
    To override the version range in an implicitly derived import
    package header for an API-bundle, use the template manifest file
    to define an attribute named "api-Import-Package" with the desired
    explicit version range for the package to be imported.
  - Added missing source for scrcommands.

========================================================================



Release Notes Knopflerfish 3.2.0 (OSGi R4 v4.2)
--------------------------------------------------

  Maintenance release of Knopflerfish available from
  http://www.knopflerfish.org/releases/3.2.0

  Here follows a breakdown of the most important changes since the
  last release.


=== Framework (Core) ===

  Framework 5.1.14

  - Fix bug in conditional permission admin when using names for
    encoded policies
  - Fixed bug when resolving bundles with optional resolution that isn't
    satisfied, see
    http://sourceforge.net/tracker/?func=detail&atid=567241&aid=3301526&group_id=82798
  - Fixed bug when wiring packages with conflicting attributes.
  - Fixed permission check bug for package import.
  - Fixed a problem with the beginning start level for the start level
    service, see 
    https://sourceforge.net/tracker/?func=detail&aid=3303909&group_id=82798&atid=567241
  - Some code clean-up and reformatting.
  - Added support for dynamic fragment attach.
  - Refactored fragment handling and improved handling of
    conflicting imports.
  - Bundle threads hanging in bundle start or stop methods are
    now aborted if the bundle is uninstalled. A new framework 
    property, "org.knopflerfish.framework.bundlethread.abort" 
    specifies abort action. Valid values are "stop", "minprio"
    and "ignore".
  - Fixed bug when matching native code with "os.arch" property.
  - Added missing export of URL service in build system.
  - Fixed consistency issues when doing update/uninstall.


=== Services (Compendium) ===

  Component (SCR) 3.0.3
  
  - Corrected issue with servicefactory check when servicefactory was explicitly
    was set to false.
  - Immediate components are now correctly activated, previously they
    were only active when they were used.
  - The value of a property specified in the body of the
    property-element is now returned always an as array. 
    For details see the issue in the tracker, 
    https://sourceforge.net/tracker/?func=detail&aid=3285927&group_id=82798&atid=567241


  HTTP-Server 3.0.5

  - Improved handling of persistent connections for GET and HEAD
  - Configurable features and limits added to better control and
    handle DoS attacks:
      org.knopflerfish.http.trace.enabled (false)
      org.knopflerfish.http.limit.requestline (8090)
      org.knopflerfish.http.limit.requestheaders (100)
      org.knopflerfish.http.limit.postsize (-1) 
  - Changed request URI parsing logic in order to avoid problems with
    some URL class implementations.


=== Misc (KF specific, start scripts, build system etc) ===

  ConsoleTelnet 3.0.1

  - A telnet client that closed its socket directly after sending a
    quit command resulted in a looping thread in the consoletelnet
    bundle. The root of this problem was the the internal TelnetReader
    class did not return the proper values indicating End of File when
    its underlying reader was closed.


  Desktop 3.1.6

  - Bundles are now all-ways selected when installed and deselected
    when uninstalled. The viewers did not all-ways show details for a
    new bundle when it was installed (the bundle was selected, but due
    to a race condition the selection notification was sometimes
    ignored).
  - Viewers are now updated when one of the selected bundles are
    changes. E.g., when updated.


  HTTP-root 3.0.1

  - Sort entries on the Http-Server-Info page.
  - Added example of a Http Service registration that publishes
    contents from the local file system (the Knopflerfish
    documentation). Updated look and feel of the published pages to
    match the one used on the Knopflerfish web-site. Replaced the
    service listener with a ServiceTracker.
    
  Util-LIB 2.0.1

  - Added documentation for the Executable Bundle Activator


  Documentation and Tutorials

  - A new tutorial on how to run Knopflerfish OSGi with security
    enabled has been added under "Developer's Doc / Tutorials". This
    tutorial demonstrates how to use the Conditional Permission Admin
    service.

  - A new tutorial on how to build and run Knopflerfish on Android 
    using the Dalvik VM. 

  Directory Structure

  - A new bundle source code directory for example bundles has been
    added. The name of the directory is osgi/bundles_examples, the
    resulting jar files are placed in the directory
    osgi/example_jars.
  - The directory osgi/bundles/demos has been moved to
    osgi/bundles_examples/demos.
  - A new tools/android directory for simplified build of dex versions 
    of KF bundles.

  Build System

  - The xargs-filtering target in the xargs include file has been
    replaced by a task that can be used to expand bundle names and
    variables in xargs-file templates. With the new task it is
    possible to add your own variables to replace as well as searching
    for bundles on more than two jars-directories to determine
    expansions for bundle names with -N.N.N.jar in the template xargs
    file.
  - The build system now requires that all packages to be exported by
    a bundle matches one of the patterns defined in the properties
    named 'api.pattern' or 'impl-api.pattern'. This applies to
    packages in the source-directory as well as to packages from
    nested jar-files on the bundle class path.
  - Previously the build system assumed that all packages from
    jar-files on the bundle class path was to be exported. Now it is
    only packages that matches one of 'api.pattern' or
    'impl-api.pattern' that are assumed to be exported, all other
    packages in the bundle class path are considered private.
  - Started to use macrodefs in bundlebuild.xml to reduce its size and
    increase readability. No functional change.
  - The bundlesinfo-task can now derive both Import-Package and
    Export-Package in one call. Nested elements that are file-sets
    named 'exports' and 'impls' determines which packages included in
    the bundle that shall be exported and which packages to keep
    private.
  - Added an antlib.xml file defining all the provided tasks to the
    bundle_tasks.jar.
  - The bundle_tasks.jar is now only built if not present. I.e.,
    when changing any of the tasks an explicit build must be done in
    the ant-subdir to create an up-to date version of the
    bundle_tasks.jar-file.
  - Fixed so that KF builds with ant 1.8.
  - Improved support for dexifying and generating classes.dex files



========================================================================


Release Notes Knopflerfish 3.1.0 (OSGi R4 v4.2)
--------------------------------------------------

  Maintenance release of Knopflerfish available from
  http://www.knopflerfish.org/releases/3.1.0

  Here follows a breakdown of the most important changes since the
  last release.


=== Framework (Core) ===

  Framework 5.1.6

  - Always wait for stop operations to complete before continuing.
  - Fixed bug with call to removed a removed service listener.
  - Fixed race conditions in StartLevel-service and Bundle.getHeaders().
  - Fixed bug when shutting down a framework running at start level 1.
  - Fixed IllegalArgumentException for StartLevel-service.
  - Add threaded handling of listeners, this means that asynchronous listeners
    will be called asynchronously. The number of threads used is controlled via
    the property, org.knopflerfish.framework.listener.n_threads. Default value
    is 1. If the value is 0 then we will revert to the old behavior and call
    all listeners synchronously. Also fixed some minor bugs that was revealed
    during the testing of the new listener handling.
  - Use system properties to set default values for OSGi framework properties.
  - Recognize deprecated processor value "arm" in native code matching.
  - Fixed locking problem when stopping a crashed bundle.
  - Fixed NPE when unregistering URLStreamHandlerService.
  - Fixed getEntry() method for system bundle. The result will
    vary depending on the JVM since we use getResource() via the
    framework class loader.
  - Fixed handling of none null boot-classloader.
  - Fixed bug in lazy activation class filtering.
  - Fixed handling of org.osgi.framework.storage property on command line.
  - Merged fix of class loader problem when running on Android 7/8 from
    the kf_2_support branch. The boot-classloader of Android does not
    return the expected null as its parent class loader, it returns
    itself.


=== Services (Compendium) ===

  Event 3.0.4
  
  - Fixed infinite loop when debug logging was enabled for event admin.


  Deploymentadmin 1.0.1

  - The version of the "org.osgi.service.deploymentadmin.spi"-package
    that this bundle exports was wrong, for OSGi R4 v4.2 the version
    should be 1.0.1 and nothing else. Note that it was only the
    version stated in the Export-Package header that was wrong.


  Dmtree 1.0.1

  - The version of the "org.osgi.service.dmtree"-package
    that this bundle exports was wrong, for OSGi R4 v4.2 the version
    should be 1.0.1 and nothing else. Note that it was only the
    version stated in the Export-Package header that was wrong.
  - This bundle must use dynamic import package "*" to allow a bundle
    to provide the digest class specified by the system property
    "org.osgi.vendor.dmtree.DigestDelegate".


  HTTP-Server 3.0.1

  - The version of the "org.osgi.service.http"-package that this
    bundle exports was wrong, for OSGi R4 v4.2 the version should be
    1.2.1 and nothing else. Note that it was only the version stated
    in the Export-Package header that was wrong.


  Log 3.0.5

  - Fix NPE in 3.0.4. Register ManagedService with a PID that matches
    configuration meta data. LogRef now handles calls to the
    log()-methods occurring after the bundle it logs for have been
    stopped.
  - Clean up old broken Java-Doc comments and remove a potential
    problem with synchronization on non-final variables.
  - Use a cache to avoid recomputing the log-level for a bundle for
    each entry it sends to the logs.
  - Resolved some dead-locks and NullPointerExceptions occurring during
    shut-down that was made visible by the listener handling changes
    in the v 5.1 of the framework.


  Measurement 3.0.1

  - The version of the "org.osgi.util.measurement"-package that this
    bundle exports was wrong, for OSGi R4 v4.2 the version should be
    1.0.1 and nothing else. Note that it was only the version stated
    in the Export-Package header that was wrong.


  Position 3.0.1

  - The version of the "org.osgi.util.position"-package that this
    bundle exports was wrong, for OSGi R4 v4.2 the version should be
    1.0.1 and nothing else. Note that it was only the version stated
    in the Export-Package header that was wrong.


  Prefs (OSGi Preferences Service) 3.0.1

  - The version of the "org.osgi.service.prefs"-package that this
    bundle exports was wrong, for OSGi R4 v4.2 the version should be
    1.1.1 and nothing else. Note that it was only the version stated
    in the Export-Package header that was wrong.


  Xml 3.0.1

  - The version of the "org.osgi.util.xml"-package that this
    bundle exports was wrong, for OSGi R4 v4.2 the version should be
    1.0.1 and nothing else. Note that it was only the version stated
    in the Export-Package header that was wrong.


  Kf_metatype 3.0.1

  - Made bundle listeners synchronous, so that we always have
    the correct state of the metatype information.


=== Misc (KF specific, start scripts, build system etc) ===

  Bundlerepository 3.1.2

  - Use "http://www.knopflerfish.org/releases/current-kf_3/repository.xml"
    as the default repository URL for non-release builds. Release
    builds will use the repository of that release.


  Desktop 3.1.5

  - Ensure that all code handles a null PackageAdmin-service object.
  - When the path from the property "org.knopflerfish.gosg.jars"
    contains more than one element, use the first one that exists as
    the starting directory of the install bundle dialog.
  - Removed some NullPointerExceptions during shut-down that was made
    visible by the listener handling changes in  v 5.1 of the framework.
  - The version of the "org.osgi.service.cm"-package
    that this bundle re-exports was wrong, for OSGi R4 v4.2 the version
    should be 1.3.0 and nothing else. Note that it was only the
    version stated in the Export-Package header that was wrong.
  - The version of the "org.osgi.service.event"-package
    that this bundle re-exports was wrong, for OSGi R4 v4.2 the version
    should be 1.2.0 and nothing else. Note that it was only the
    version stated in the Export-Package header that was wrong.
  - The version of the "org.osgi.service.prefs"-package
    that this bundle re-exports was wrong, for OSGi R4 v4.2 the version
    should be 1.1.1 and nothing else. Note that it was only the
    version stated in the Export-Package header that was wrong.
  - Fixed a dead-lock problem caused by a bundle listener that did
    call-backs to the framework on the event delivery thread which a
    framework implementation does not need to support.
  - The large icons displayer now scrolls to make new bundles visible
    again.
  - The set of selected bundles no longer changes when a bundle is
    started, stopped, updated, refreshed. The problem was caused by
    the bundle details displayer that fired to coarse table model
    change events when receiving bundle change events from the
    framework, causing the underlying swing table model to clear all
    selections.
  

  FW-Tray 3.0.2

  - A class loader may throw a NoClassDefFoundError when it fails to
    define a class since some class that the class to be loaded needs
    are missing. Changed the tray icon bundle to handle this, i.e., it
    now catches Throwable and not just Exception when trying to
    instantiate java.awt.SystemTray.


  Xalan 2.7.1.kf3_01

  - Set export and import versions of javax.xml.* packages so that
    it works together with the Xerxes bundle. 


  Build System

  - The "Bundle" task now uses the version from the "packageinfo"-file
    when generating the export packages header.
  - bundlebuidl.xml did not create an Export-Package header for
    impl-bundles that specified an "impl-api.pattern".
  - The BundleInfoTask now assigns versions to exported packages based
    on the version specified in the "packageinfo"-file in the
    directory that holds the classes of the package. The build will
    fail if there is a miss-match between the version given in the
    template manifest and the version in the "packageinfo"-file.
  - bundlebuild.xml now copies resources from the source tree to the
    classes tree in the compile step. The internal target that added
    resources from the source tree to the bundle jar file has been
    removed since those resources are added to the jar 

----------------------------------------------

Please read on the KF site for more information.

 http://www.knopflerfish.org/