Skip navigation links

Introduction

This document lists changes made to the Autoupdate Services API.


Index of APIs

Incompatible changes by date

Fuller descriptions of all changes can be found below (follow links).

Not all deprecations are listed here, assuming that the deprecated APIs continue to essentially work. For a full deprecation list, please consult the Javadoc.

All changes by date

Changes by version

These API specification versions may be used to indicate that a module requires a certain API feature in order to function. For example, if you see here a feature you need which is labelled 1.20, your manifest should contain in its main attributes the line:

OpenIDE-Module-Module-Dependencies: org.netbeans.modules.autoupdate.services > 1.20

Changes by affected class

org.netbeans.api.autoupdate.InstallSupport

org.netbeans.api.autoupdate.OperationContainer

org.netbeans.api.autoupdate.OperationException

org.netbeans.api.autoupdate.OperationSupport

org.netbeans.api.autoupdate.PluginInstaller

org.netbeans.spi.autoupdate.PluginInstallerImplementation

org.netbeans.api.autoupdate.UpdateElement

org.netbeans.spi.autoupdate.UpdateItem

org.netbeans.api.autoupdate.UpdateUnit

org.netbeans.api.autoupdate.UpdateUnitProvider


Details of all changes by API and date


Autoupdate Services API

Simple API to install modules

Mar 18 '23; API spec. version: 1.76; affected top-level classes: PluginInstaller PluginInstallerImplementation; made by: sdedic
Simplified API to install additional plugins to avoid dependencies on UI part of the AutoUpdate. CLI and UI implementations for the autoupdate plugs provides their implementations, UI is preferred.

Allow alternative unpack200 implementation

Aug 23 '20; API spec. version: 1.65; affected top-level classes: OperationContainer; made by: jtulach

OperationContainer has a new setUnpack200 method. There is also a preference also used by upgrader - read more.

KeyStoreProviders can now report which trustlevel they intent to supply

Nov 4 '19; API spec. version: 1.62; affected top-level classes: OperationContainer; made by: matthiasblaesing

The UpdateUnitProvider can now be declared trusted. If UpdateItems are provided by a trusted UpdateUnitProvider and can be linked to it (for example because the provider provides checksums in the catalog), they are considered trusted by the Autoupdate mechanism and will not trigger certificate warnings.

KeyStoreProviders can now report which trustlevel they intent to supply

Nov 4 '19; API spec. version: 1.61; affected top-level classes: OperationContainer; made by: matthiasblaesing

The validation of signatures of NBMs was done by checking if at least a partial certificate chain was present and if that chain was valid (i.e. not expired, not revoked). Instead of relying on this partial check this version bases the verification on a list of trusted certificates, similar to the existing KeyStoreProvider.

The existing KeyStoreProviders provide Certificates, that are fully trusted. The new getTrustLevel method allows a KeyStoreProvider to provide certificate for the new, lower trusted level. In addition to the to levels TRUST and VALIDATE, two variants: TRUST_CA and VALIDATE_CA are introduced. Certificates provided with that level are expected to be CA certificates and they are only trusted if a `CertPathValidator` validates the chain.

Report parts of a feature which is not installed yet

Nov 30 '18; API spec. version: 1.57; affected top-level classes: OperationContainer; made by: sdedic
A distributed feature may list a module, which is only available on some update center, in NB IDE case because of licensing issues. This token must be reported so the as part of the UpdateElement and Operation so the caller may initiate the download operation.

Find a visible ancestor of UpdateUnit

Oct 31 '12; API spec. version: 1.37; affected top-level classes: UpdateUnit; made by: jrechtacek; issues: #190246

Added a method {@link org.netbeans.api.autoupdate.UpdateUnit#getVisibleAncestor} which returns a visible plugin which depending upon this unit. Returns a unit if this unit is installed in the system and some of visible units depending upon this one, otherwise returns null.

Mark an update as preferred just if needed

May 16 '12; API spec. version: 1.33; affected top-level classes: UpdateItem; made by: jrechtacek; issues: #211734

Added a preferredupdate attribute into Update Center Descriptor to specify if an update has to be installed before other updates or not. This flag is off as default.

Added a method to get a descprition of content of Upadate Center

May 16 '12; API spec. version: 1.33; affected top-level classes: UpdateUnitProvider; made by: jrechtacek; issues: #211741

{@link org.netbeans.api.autoupdate.UpdateUnitProvider#getContentDescription} returns a description of content staging by this provider. The description might contains HTML tags e.g. HTML Links.

Added a method to get ID of license agreement

May 16 '12; API spec. version: 1.33; affected top-level classes: UpdateElement; made by: jrechtacek; issues: #211736

Added a method {@link org.netbeans.api.autoupdate.UpdateElement#getLicenseId} to get ID of license agreement if the UpdateElement has a copyright.

This ID could be stored somewhere once an user approves the license and will not be asked for approval again the same license ID.

Check write permissions to installation directory

May 16 '12; API spec. version: 1.33; affected top-level classes: InstallSupport OperationException; made by: jrechtacek; issues: #211777

InstallSupport find out the right directory where a plugin should be installed. After that it checks if an user has privilege to write there. In the case a lack of write permission, throws {@link org.netbeans.api.autoupdate.OperationException.WRITE_PERMISSION}.

Beside this it allows to write into userdir as a fallback in the case of insufficient privilege.

Allowing to specify external NBM content size

May 14 '12; API spec. version: 1.32; made by: jlahoda; issues: #212068

You can now specify the size of the external NBM content in the .external file by using SIZE: property (e.g. SIZE:42). The size will then be incorporated in the download size of the NBM.

External NBM contents

Feb 10 '11; API spec. version: 1.24; made by: jtulach; issues: #195041

You can now ask that publicly downloadable files be included in an NBM. Just replace netbeans/file with a text file netbeans/file.external with lines:

  1. CRC:123456789 to specify an expected CRC-32 checksum (nonnegative decimal format)
  2. URL:http://.../... to specify a download location (may be repeated to offer alternatives)

You can embed system properties in a URL using Ant-like syntax: http://.../feature-for-${java.specification.version}.nbm

The <makenbm> Ant task will automatically avoid packing the actual file if the *.external variant is also in the input cluster.

For convenience, the org.netbeans.modules.maven.embedder module (if present) can also handle URLs of the forms m2:/org.grp:art:1.0:jar or m2:/org.grp:art:1.0:jar:javadoc which can take advantage of the local repository as a cache.

Icons for update centers

Jan 10 '11; API spec. version: 1.23; affected top-level classes: UpdateElement UpdateUnitProvider; made by: jtulach; issues: #183778

Define icon when specifying an update center using categoryIconBase attribute.

New operation type introduced together with method for create appropriate container

Aug 19 '09; API spec. version: 1.11; affected top-level classes: OperationSupport OperationContainer; made by: dlipin; issues: #141714

New operation type - OperationSupport.OperationType.INTERNAL_UPDATE is introduced. This operation can be used to find out elements which have updates and which the particular element has the dependency on.

Feature enabled only when all its dependencies are enabled

Apr 15 '09; API spec. version: 1.8; affected top-level classes: UpdateItem; made by: jtulach; issues: #162673

The behaviour of UpdateItem.createFeature().getInstalled().isEnabled() has been changed. Now it returns true only if all dependencies are enabled.