1. Minor Java API Release

There are a few API additions coming with this release. The changes are backwards-compatible, except those in @Internal interfaces.

Jira Version

New API Version

7.2+

16.10.0

See Structure API Versions for full version information and downloads.

2. Compatible Changes in the Java API

2.1. Horizontal scrolling

We have added a new parameter named "column display mode" to the view specification, with three new getters and setters:

  • ViewSpecification.getColumnDisplayMode()
  • ViewSpecification.Builder.getColumnDisplayMode()
  • ViewSpecification.Builder.setColumnDisplayMode(int)

Supported values are stored as int constants in the new class ColumnDisplayMode:

  • AUTO_FIT means that the columns fill the entire width of the panel, growing or shrinking as necessary;
  • SCROLLABLE means that the columns always have their manual or preferred widths, and a horizontal scroll bar appears if needed.

The default column display mode is AUTO_FIT.

2.2. New method in the Forest interface

The new method copySubforestAtIndex(int) returns a new forest that contains all descendants of the row at the given index. It is a counterpart to the existing method copySubforest(long), and it allows you to save an index lookup when you already have the index. The method is implemented in ArrayForest.

2.3. New row semantics

We have added two new codes to the CoreSemantics interface:

  • INSERTED marks rows added by inserter generators;
  • EXTENSION marks rows added by extenders.

Please note that row semantics is still a work in progress, and CoreSemantics is marked @Internal.

2.4. Miscellaneous fixes

A few minor changes in AbstractAggregateLoader, AbstractDistinctAggregateLoader, and ReductionStrategy are meant to prevent NullPointerException in certain circumstances.

We have also added reentrancy protection to the item lookup code in StructureException. Please note that item lookup is disabled by default since version 16.7.0 (Structure 4.4).

3. Incompatible changes in @Internal interfaces

The method ForestAccessCache.removeOutOfScopeIssues() was moved to a separate interface, ProjectScopeCache. We have also added a new internal interface named SubTaskIssueCache. Neither of the three interfaces is intended to be used by third-party developers at this point.