Overview

# Introduction

This document lists changes made to the Java Project API.

# Index of APIs

- Classpath Support SPI
- Java Project API
- UI Support SPI

# 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.

- (Aug 28 '05) Semantic changes in the BrokenReferencesModel.updateReference behavior

# All changes by date

- (Aug 28 '05) Semantic changes in the BrokenReferencesModel.updateReference behavior
- (May 11 '05) Introduction of a new interface PackageRenameHandler which allows plugging into `PackageViewChildren.PackageNode.setName()`
- (Apr 20 '05) Added artifact type representing folder
- (Mar 21 '05) Added a new factory method for creating the name/package chooser wizard panel into the templates SPI.
- (Jan 10 '05) Display of packages in a list added
- (Jan 6 '05) Added helper method for creating `ClassPathImplementation` based on an Ant property
- (Jan 5 '05) `ProjectClassPathExtender` made public
- (Dec 22 '04) Switched to major release version 1

# 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.java.project/1 > 1.20

- (1.6) Semantic changes in the BrokenReferencesModel.updateReference behavior
- (1.5) Introduction of a new interface PackageRenameHandler which allows plugging into `PackageViewChildren.PackageNode.setName()`
- (1.4) Added artifact type representing folder
- (1.3) Added a new factory method for creating the name/package chooser wizard panel into the templates SPI.
- (1.3) Display of packages in a list added
- (1.3) Added helper method for creating `ClassPathImplementation` based on an Ant property
- (1.3) `ProjectClassPathExtender` made public
- (1.3) Switched to major release version 1

# Changes by affected class

## `org.netbeans.api.java.project.JavaProjectConstants`

- (Apr 20 '05) Added artifact type representing folder

## `org.netbeans.spi.java.project.support.ui.templates.JavaTemplates`

- (Mar 21 '05) Added a new factory method for creating the name/package chooser wizard panel into the templates SPI.

## `org.netbeans.spi.java.project.support.ui.PackageRenameHandler`

- (May 11 '05) Introduction of a new interface PackageRenameHandler which allows plugging into `PackageViewChildren.PackageNode.setName()`

## `org.netbeans.spi.java.project.support.ui.PackageView`

- (Jan 10 '05) Display of packages in a list added

## `org.netbeans.spi.java.project.classpath.ProjectClassPathExtender`

- (Jan 5 '05) `ProjectClassPathExtender` made public

## `org.netbeans.spi.java.project.classpath.support.ProjectClassPathSupport`

- (Jan 6 '05) Added helper method for creating `ClassPathImplementation` based on an Ant property

# Details of all changes by API and date

## Classpath Support SPI

### Added helper method for creating `ClassPathImplementation` based on an Ant property

Jan 6 '05; API spec. version: 1.3; affected top-level classes: `ProjectClassPathSupport`; made by: tzezula; issues: #42309

Added new helper class `ProjectClassPathSupport` with a factory method `createPropertyBasedClassPathImplementation(...)`. This method creates a live classpath based on the list of Ant properties holding the path. The classpath implementation listens on changes of properties, updates state and fires events to clients.

### `ProjectClassPathExtender` made public

Jan 5 '05; API spec. version: 1.3; affected top-level classes: `ProjectClassPathExtender`; made by: tzezula; issues: #52998

`ProjectClassPathExtender` was a private contract between `j2seproject` and `form` which allowed the form editor to extend the compilation classpath of a project by a new classpath element (archive file, folder, dependent project, or library). This interface was moved into a public SPI package to remove the need to have an implementation dependency of `form` and `j2seproject` on `java/project`.

## Java Project API

### Semantic changes in the BrokenReferencesModel.updateReference behavior

Aug 28 '05; API spec. version: 1.6; made by: tzezula; issues: #63401
The BrokenReferencesModel was changed to support better sharability of projects. The BrokenReferencesModel always stores the resolved broken reference into the private properties as absolute files and does not affect the project properties.

### Added artifact type representing folder

Apr 20 '05; API spec. version: 1.4; affected top-level classes: `JavaProjectConstants`; made by: tzezula; issues: #57733

The freeform project may have as its output a folder rather than a jar archive. The JavaProjectConstants was extended by the ARTIFACT_TYPE_FOLDER constant to represent such an output.

### Switched to major release version 1

Dec 22 '04; API spec. version: 1.3; made by: jglick; issues: #51468

To indicate that this is now considered a stable API, the major release version was incremented to 1 from 0.

Compatibility:

Clients should begin requesting the new version to avoid a warning at startup.

## UI Support SPI

### Introduction of a new interface PackageRenameHandler which allows plugging into `PackageViewChildren.PackageNode.setName()`

May 11 '05; API spec. version: 1.5; affected top-level classes: `PackageRenameHandler`; made by: jbecicka; issues: #53295
Refactoring needs to handle rename of Package Nodes. It is allowed through PackageRenameHandler. Any client can put it's PackageRenameHandler into Lookup (only one instance is allowed). Implementation of packageNode.setName() will use this instance to handle rename request.

### Added a new factory method for creating the name/package chooser wizard panel into the templates SPI.

Mar 21 '05; API spec. version: 1.3; affected top-level classes: `JavaTemplates`; made by: pjiricka; issues: #56730

A new factory method for creating the name and package chooser panel in the Java file wizard. This method is similar to the methods that already exist in this class; it has an extra boolean parameter that allows to specify whether the entered package name is required to be valid (non-empty).

### Display of packages in a list added

Jan 10 '05; API spec. version: 1.3; affected top-level classes: `PackageView`; made by: tzezula; issues: #48618

New methods supporting creation of package lists were added to `PackageView`. `createListView(SourceGroup)` creates a `ComboBoxModel` containing the packages from a given source group. `listRenderer()` returns a `ListCellRenderer` rendering the packages.

Built on December 7 2006. | Portions Copyright 1997-2005 Sun Microsystems, Inc. All rights reserved.