[Skip to content]

History

Provides details about the changes, fixes and enhancements between the different releases. For the list of supported 3rd party application, please refer to the Plug-ins page.

1.9.4_108 (2010-06-22)

New features

#0000038: It's now possible to have all members of chained method calls wrapped if the whole expression does not fit into just one line. This can greatly enhance readability, and given the popularity of fluent interfaces and the builder pattern, seems to be useful for a lot of developers. It is recommended to enable call chain alignment as well for best results. Please refer to the wrapping section in the user's guide for further information.

field("name").ofType(String.class)
             .in(person)
             .set("Anakin");

#0000781: The settings for nested chained method calls have been expanded to match those available for chained method calls. Please refer to the wrapping section in the user's guide for further information.

#0000779: The Maven plug-in provides a new parameter "compile" to have the project sources compiled before formatting is applied. This way, the plug-in can be moved to the process-sources phase without having to disable any of the features that require type resolution. Please refer to the Maven plug-in chapter in the user's guide for further information.

<plugins>
  <plugin>
    <groupId>triemax</groupId>
    <artifactId>jalopy-maven</artifactId>
    <version>1.9.4-116</version>
    <configuration>
      <compile>true</compile>
      ...
    </configuration>
    <executions>
      <execution>
        <phase>process-sources</phase>
        <goals>
          <goal>format</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  ...
</plugins>

Suggested by Martin Scholl, Robert Lieb

#0000777: The Maven plug-in provides a new "skip" parameter to disable formatting for projects. This can be useful to easily skip formatting for non Java projects. Please refer to the Maven plug-in chapter in the user's guide for further information.

<plugin>
  <groupId>triemax</groupId>
  <artifactId>jalopy-maven</artifactId>
  <configuration>
    <skip>true</skip>
  </configuration>
</plugin>

Suggested by Martin Scholl

#0000782: Most Maven plug-in parameters can now be overwritten from the command-line. This excludes only the parameters that use a collection type, e.g. java.util.List and java.util.Map

$ mvn -Djalopy.threads=8 -Djalopy.compile=false ...

#0000776: Javadoc generation may now be disabled by looking for specific annotations. E.g. to easily skip JUnit tests, add the @Test annotation to the list of exclusions. Please refer to the Javadoc section in the user's guide for further information.

@Test
public void addition() {
    assertEquals(12, simpleMath.add(7, 5));
}

Suggested by Cyrill Rüttimann

#0000762: Static methods may now be grouped separately from instance methods. Please refer to the sorting section in the user's guide for further information. Suggested by Wolfgang Baltes

#0000116: Insert final modifier for method parameters and local variables. Please refer to the Java section in the user's guide for further information.

public void doSomething(final Data rInput) {
   final Matrix result = calc(rInput);
   ...
}

#0000764: The Eclipse plug-in now integrates with Code CleanUp. Please refer to the Eclipse plug-in chapter in the user's guide for further information. Suggested by Jörg Schaible

#0000780: New option to disable line wrapping after the return keyword altogether. Please refer to the wrapping section in the user's guide for further information. Suggested by Arno Unkrig

#0000743: The line wrap guide of the preview window is now directly adjustable to provide a more playful experience configuring the settings. There is a new slider widget to configure the wrapping column, but the wrap guide might be directly dragged as well. Please refer to the user's guide for further information. Suggested by Wolfgang Baltes

#0000785: The Swing based plug-ins now provide similar message grouping capabilities as the Eclipse plug-in with its custom message view. Namely you can now group messages by severity level and/or package name

#0000724: The IDE plug-ins now highlight clickable messages on mouse-over. Suggested by Ziad Aouad

#0000760: The .pdf user's guide now includes letter bookmarks for the index to ease navigation. Suggested by Wolfgang Baltes

Changes

#0000783: As there are better ways to apply settings synchronization, the prior "Global > Auto > Synchronize profile with external code convention" option has been abandoned. To synchronize settings for the IDE plug-ins, you should either specify the location of the external code convention right during the installation as outlined in the user's guide, set the external code convention on the Synchronization settings/preferences page in the plug-in IDE preferences or use the Java System property triemax.jalopy.convention.

$ eclipse -vmargs -Dtriemax.jalopy.convention=http://server/jalopy.xml [...]

The headless plug-ins provide a parameter/property "convention" to set the external configuration file to use. Please refer to the corresponding plug-in chapters in the user's guide for further information

#0000786: The version requirements for certain plug-ins have been bumped: Baseline for the respective plug-ins is now IntelliJ IDEA 7.0, JDeveloper 10.1.3, jEdit 4.3 and NetBeans 5.0

Bug fixes

#0000787: Wrong line break after assignments with mixed endline indentation. Reported by Jörg Schaible

#0000778: Continuation indent does not always work for the + operator. Reported by Martin Scholl

#0000775: The @Override annotation has not been generated for interface method that extend base interface methods

#0000721: Semicolon in enum without constants removed. Reported by Christoph Strebin

#0000720: Installer is not able to install into MyEclipse. Reported by Matthias Nott, Jesús Marín Ruiz

#0000722: NPE when removing obsolete import. Reported by Christoph Strebin

#0000723: NPE with import optimizing and headers. Reported by Christoph Strebin

#0000774: IllegalStateException with "Insert @Override". Reported by Robert Lieb

#0000773: Method override detection fails for methods using generic type parameters. Reported by Martin Heitz

#0000772: HTML correction missing for enum constant. Reported by Martin Heitz

#0000771: Update check fails behind corporate firewall. Reported by Sascha Herrmann, Dr. Mark Tu

#0000770: JDeveloper plug-in: java.lang.IllegalStateException: reentrant node change

#0000769: Line length exceeded within anonymous inner classes

#0000768: Wrongly generated Javadoc @return tag text. Reported by Robert Lieb

#0000767: Wrong Misused Javadoc tag "@version" found warning

#0000765: @Override annotation not inserted within local inner class. Reported by Jörg Schaible

#0000756: Missing line break after enum constants with inner class. Reported by Jörg Schaible

#0000761: NPE during import optimization. Reported by Dan Lewis

#0000758: Eclipse Plug-in: NPE performing Code Cleanup. Reported by Jörg Schaible

#0000757: Maven plug-in: Build still succeeds in case of error. Reported by Martin Scholl

#0000755: NetBeans plug-in: Cannot format file with bookmark. Reported by Wynn Jones, Frederic Barachant

#0000754: NPE when inserting missing @Override annotation. Reported by Martin Scholl

#0000749: "Align array" only works for the shorthand notation, not the full creator. Reported by Stephen Wiebe

#0000748: "Mixed Endline" general indentation causes NPE. Reported by Stephen Wiebe

#0000745: Wrap and reflow single-line comments can exceed max line length

#0000752: Wrongly added @Override leads to non-compilable code. Reported by Jörg Schaible

#0000751: Mixed up wrapping settings for ternary operators. Reported by Jörg Schaible

#0000750: Missing line break after assignment for array creator

#0000747: OutOfMemoryException with Javadoc HTML checking enabled. Reported by Eric Huppert

#0000746: HTML tag checking breaks XDoclet contract. Reported by Eric Huppert

#0000744: Formatting Java files in a simple project removes imports.

#0000742: Active profile not shown by default when nested. Reported by Wolfgang Baltes

#0000741: Console plug-in: --convention option not allowed with --configure. Reported by Mikael Petterson

#0000740: XDoclet quoted string problem. Reported by Eric Huppert

#0000725: Alias definitions not exported

#0000739: No formatting applied during save. Reported by Gerhard Radatz

#0000738: IllegalStateException in settings dialog. Reported by Maurice Montgenie

#0000737: Automatic profile switch not working when format during save. Reported by Gerhard Radatz

#0000736: NPE during settings synchronization. Reported by Timo Vuorijärvi

#0000734: Preview for Whitespace Java Element view not working

#0000733: Jumping cursor

#0000732: IllegalArgumentException invoking formatter for property file. Reported by Gerhard Radatz

#0000730: Importing convention file with sub-profiles doesn't work correctly. Reported by Stephen Wiebe

#0000731: Static import not expanded.

#0000727: Imports referenced in Javadoc comments lost. Reported by Elmar Sonnenschein

#0000729: Formatting directory tree containing no files causes usage error. Reported by Stephen Wiebe

#0000728: Settings reset to defaults after import. Reported by Philippe Gondek

#0000788: On Mac OS X, the installer was unable to install the plug-in below the NetBeans application app folder. Reported by Joel Goldberger

1.9.3_156 (2009-12-18)

New features

#0000718: Jalopy no longer copies the whole description when generating the text for the @return tag if the description starts with "Returns".

/**
 * Returns true if this list contains all elements of the collection.
 *
 * @return  true  if this list contains all elements of the collection.
 */

Suggested by John Bishop

#0000716: The installer now allows one to specify an URL for settings synchronization for the IDE plug-ins. This way the plug-ins can be deployed without the need for any local configuration. The plug-ins automatically configure themselves from the central configuration. Suggested by Eric Huppert

#0000712: The JDeveloper plug-in now provides the format action from the pending changes view context menu as well. Suggested by Sascha Herrmann

#0000711: The Format with Jalopy action has been added to the JDeveloper editor toolbar (JDeveloper 11g or later). Suggested by Sascha Herrmann

#0000611: All XDoclet2 tags are now automatically recognized in Javadoc comments. It is no longer necessary to add the them manually. Suggested by Jens Schröder

#0000701: Missing implicit constructors can be auto-generated. Suggested by Ziad Aouad

#0000702: You can now control whether a Javadoc comment should be created when generating missing serial version ids. Suggested by Ziad Aouad

#0000698: New pragma comment to instruct Jalopy to keep line breaks within arrays and calls.

String[] disable =
    { //J:KEEP+
        "-command", "disable",
        "-featureId", rIdentifier,
        "-version", version
    }; 

#0000685: The annotation styles for declarations and parameters can now be configured independently. Suggested by Ziad Aouad

#0000695: Formatting is now performed in the background with the Eclipse Plug-in. Open files are blocked while formatting, but released immediately when the file has been formatted. Suggested by Dr. Mark Tu

#0000694: The format action is now available from the Eclipse search view context menu as well.

#0000675: New variable to captialize text for property names. Suggested by Oliver Breidenbach

#0000646: New option to isse a line break after each marker annotation. Suggested by Samuel Rouiller

#0000667: NetBeans 6.7 and 6.8 compatible Plug-ins

#0000663: The Format with Jalopy action is now avaiiable from the IntelliJ IDEA Changes view pop-up as well. Sugested by Anders Wallgren

#0000513: It’s now possible to import settings from the Maven class path using the classpath:[path] convention. This way you can put an artifact with the settings into the repository and reference it as a dependency in the Maven configuration

#0000640: The Ant task may now be loaded via the antlib namespace.

<target name="format">
  <typedef resource="com/triemax/antlib.xml" classpath="${deps}" />
  <jalopy ...>
    ...
  </jalopy>
</target>

#0000638: The Ant taks now supports a nested classpath element.

<jalopy ...>
  <classpath>
    <pathelement name="${classpath}" />
  </classpath>
  ...
</jalopy>

Changes

#0000705: Keep line breaks has now higher priority than compacting arrays. This way, code like

@MetadataSet({
  @MetaData("A"),
  @MetaData("B"),
  @MetaData("C")
})

is no longer compacted.

Suggested by Ziad Aouad

#0000691: As a consequence of the bug fix, the IDE plug-ins no longer call into the IDE-specific import optimizer, but use the same custom implementation as the headless plug-ins

#0000687: The parser no longer reports several issues in case of a syntax error, but only displays one error pointing to the offending line in the source file. Suggested by Dr. Mark Tu

#0000568: It is no longer necessary to have the history feature enabled when using the --track option with the headless plug-ins. Suggested by Dan MacMillan

Bug fixes

#0000717: The generated description of the @return tag did not include the trailing punctuation if this punctuation has been generated.

#0000715: The footer was duplicated when a file only contained a package statement which is commonly the case with package-info.java files. Reported by Dr. Mark Tu

#0000714: IllegalStateException with Javadoc tag sorting enabled. Reported by Douglas Bullard

#0000713: The parser choked on quoted attributes in Javadoc comments. Reported by Douglas Bullard

#0000710: The correction for wrongly nested lists in Javadoc comments was suboptimal. Reported by Udo Kühne

#0000708: Missing blank line after enum constants

#0000709: Enum members were not automatically grouped together. Reported by Ziad Aouad

#0000707: The Eclipse plug-in was not able to import settings from a web server.

#0000706: The line wrapping of annotations before enum constants was inconsistent. Reported by Ziad Aouad

#0000704: Variables were not always correctly aligned when both "Align identifiers" and "Align assignments" were enabled. Reported by Douglas Bullard

#0000703: Wrongly aligned method calls upon wrapping with "Align chained method calls". Reported by Lars Kappenberg

#0000700: Possible NullPointerException when generating serialVersionUID. Reported by Ziad Aouad

#0000697: Exception when performing "Apply Patch" in IntelliJ IDEA. Reported by Manuela Metzner

#0000696: NullPointerException with concatenated literals in annotations like

@Inject("aaa" + "bbb")

Reported by Ziad Aouad

#0000693: The context menu items were not correctly placed with IntelliJ IDEA 8.0

#0000692: It was not possible to format the whole NetBeans whole project

#0000691: Errors using Eclipse import optimization.

Reported by Dan MacMillan, Elmar Sonnenschein, Eric Huppert

#0000690: The edit dialog opened behind the IntelliJ IDEA preferences dialog on Mac OS X. Reported by Cyrill Rüttimann

#0000689: Excluding Javadoc for overridden methods failed for inner classes. Reported by Christoph Strebin

#0000688: StringIndexOutOfBoundsException with custom throws indent. Reported by G. Ralph Kuntz

#0000686: Nested annotations were not expanded during import optimization within Eclipse.

import com.foo.Service.Name;

class Foo {
  @Service.Name
  private String s;
}

Reported by Ziad Aoud

#0000683: IllegalArgumentException with enum constant. Reported by Christoph Strebin

#0000682: During settings synchronisation, if the exported settings defined a profile, the profile was not activated and therefore the wrong profile used. Reported by Eric Huppert

#0000681: Wrongly inserted punctuation after {@inheritDoc}.

#0000680: Wrapped method call chains were not indented with "Indent dotted expresions"

#0000679: Ecluding Javadoc comment generation failed for methods with varargs.

@Override
public void format(Locale locale, Object... args) {
}

Reported by Jens Schröder

#0000676: NullPointerExeption when closing Eclipse editor. Reported by Conny Kreßsel

#0000677: Possible wrong number of blank lines before footer

#0000678: Environment variables in footers were not interpolated

#0000674: Separator comment wrongly inserted between comments. Reported by Martin Heitz

#0000673: Wrong blank space inserted for code in Javadoc inline tag.

{@code RelationType<T>  aType = new RelationType<T>(...,T.class)}
                      ^^

Reported by Elmar Sonnenschein

#0000672: java.lang.ClassNotFoundException with Maven plug-in due to unresolved class path. Reported by Robert Olivier

#0000669: Wrongly aligned variable identifier with generic types. Reported by Elmar Sonnenschein

#0000671: Error enforcing output encoding. Reported by Gregory Gerard

#0000670: Message view cannot be displayed in second Eclipse workbench window

#0000668: Unstable Javadoc formatting. Reported by Hannes Arkonah

#0000665: Quoted XDoclet attribute values could be wrongly printed. Reported by Jens Schröder

#0000664: Importing code convention did not work in headless environment. Reported by Hannes Arkona

#0000662: Illegal thread access when displaying option dialog in IntelliJ IDEA 8.0. Reported by Anders Wallgren

#0000661: Class path warnings with the Console plug-in even if no class path specified. Reported by Eric Zoerner

#0000660: Javadoc comment wrongly placed in front of field when generating serialVersionUID.

#0000659: Guarded section could be destroyed with declaration sorting enabled. Reported by Frédéric Barachant

#0000657: Import not expanded when norepository option used. Reported by Eric Zoerner

#0000651: Import removed when type only referenced in Javadoc. Reported by Udo Kühne, Eric Zoerner

#0000656: IllegalStateException when Javadoc generation and "Generate @see tags" enabled. Reported by Eric Zoerner

#0000655: Unable to insert serial version UID within interface. Reported by Eric Zoerner

#0000654: Static imports could be removed when optimizing imports. Reported by Ziad Aquad

#0000653: On Mac OS X, the Eclipse Plug-in did not allow one to choose a new file to export settings to. Only existing files could be chosen. Reported by Gregory Gerard

#0000650: Sentence punctuation wrongly inserted before Javadoc inline tag. Reported by Udo Kühne

#0000652: Breakpoints removed when formatting selected portion in Eclipse

#0000649: java.lang.IllegalArgumentException: Unexpected node: <8>. Reported by Frédéric Barachant

#0000648: java.lang.UnsupportedOperationException with "Align endline comments". Reported by Frédéric Barachant

#0000645: XDoclet attribute name could be lost. Reported by Conny Kreßsel

#0000644: java.lang.IllegalStateException with custom import optimization collapsing static imports

#0000643: java.lang.StringIndexOutOfBoundsException when "Exclude overriden/implemented" is enabled for Javadoc comment generation. Reported by Jens Schröder

#0000642: Removed import with custom import optimization when collapsing imports that reference annotations

#0000641: Regular expressions in XDoclet attributes were trashed. Reported by Samuel Rouiller

#0000639: XDoclet attributes with numbers wrongly printed.

@struts.validator-args arg0resource="form.cc.subscribe.search.foo"

Reported by Samuel Rouiller

Prior releases

To learn about the changes in prior releases, follow the link below.

Old history »»

What is Jalopy?

Jalopy is a world-class source code formatter for Java. It automates and enforces all aspects of source code layout—to meet a certain coding style without putting any burden on individual developers.

Learn more

Who needs it?

Jalopy is for everyone involved with source code editing. It scales from single developer usage to large scale enterprise deployment and seamlessly integrates with your favorite Java IDE or build tool.

Go and see yourself

I want some!

Concentrate on your problem domain and don’t waste time shuffling characters around. Pricing starts at USD $40 for a single-user license. Buy now using secure online purchase or wire transfer.

What are you waiting for?

Learn the details

Deploy, configure and use the software to best meet your needs. Download the printable user’s guide and learn everything there is to know to put Jalopy’s capabilities to full use.

Download (.pdf - 8.3MB)