Skip to content

Commit

Permalink
Eclipse 4.8.0 (JDT) (#262)
Browse files Browse the repository at this point in the history
Made Spotless-Eclipse-JDT 4.8.0 default version. Added functionality to lookup Maven Coordinate information from Jar-State.
  • Loading branch information
fvgh committed Jul 19, 2018
1 parent 28a6073 commit 420d688
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ You might be looking for:

### Version 1.14.0-SNAPSHOT - TBD (javadoc [lib](https://diffplug.github.io/spotless/javadoc/spotless-lib/snapshot/) [lib-extra](https://diffplug.github.io/spotless/javadoc/spotless-lib-extra/snapshot/), [snapshot repo](https://oss.sonatype.org/content/repositories/snapshots/com/diffplug/spotless/))

* Updated default eclipse-jdt from 4.7.2 to 4.8.0 ([#239](https://github.com/diffplug/spotless/pull/239)). New version fixes a bug preventing Java code formatting within JavaDoc comments ([#191](https://github.com/diffplug/spotless/issues/191)).
* Eclipse formatter versions decoupled from Spotless formatter step implementations to allow independent updates of M2 based Eclipse dependencies. ([#253](https://github.com/diffplug/spotless/pull/253))

### Version 1.13.0 - June 1st 2018 (javadoc [lib](https://diffplug.github.io/spotless/javadoc/spotless-lib/1.11.0/) [lib-extra](https://diffplug.github.io/spotless/javadoc/spotless-lib-extra/1.13.0/), artifact [lib]([jcenter](https://bintray.com/diffplug/opensource/spotless-lib), [lib-extra]([jcenter](https://bintray.com/diffplug/opensource/spotless-lib-extra)))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Properties;

import com.diffplug.common.base.Errors;
Expand Down Expand Up @@ -151,6 +152,12 @@ public Properties getPreferences() {
return preferences.getProperties();
}

/** Returns first coordinate from sorted set that starts with a given prefix.*/
public Optional<String> getMavenCoordinate(String prefix) {
return jarState.getMavenCoordinates().stream()
.filter(coordinate -> coordinate.startsWith(prefix)).findFirst();
}

/** Load class based on the given configuration of JAR provider and Maven coordinates. */
public Class<?> loadClass(String name) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,10 @@ public final class EclipseJdtFormatterStep {
private EclipseJdtFormatterStep() {}

private static final String NAME = "eclipse jdt formatter";
private static final String FORMATTER_CLASS = "com.diffplug.gradle.spotless.java.eclipse.EclipseFormatterStepImpl";
private static final String DEFAULT_VERSION = "4.7.2";
private static final String FORMATTER_CLASS_OLD = "com.diffplug.gradle.spotless.java.eclipse.EclipseFormatterStepImpl";
private static final String FORMATTER_CLASS = "com.diffplug.spotless.extra.eclipse.java.EclipseJdtFormatterStepImpl";
private static final String MAVEN_GROUP_ARTIFACT = "com.diffplug.spotless:spotless-eclipse-jdt";
private static final String DEFAULT_VERSION = "4.8.0";
private static final String FORMATTER_METHOD = "format";

public static String defaultVersion() {
Expand All @@ -43,9 +45,16 @@ public static EclipseBasedStepBuilder createBuilder(Provisioner provisioner) {
}

private static FormatterFunc apply(State state) throws Exception {
Class<?> formatterClazz = state.loadClass(FORMATTER_CLASS);
Class<?> formatterClazz = getClass(state);
Object formatter = formatterClazz.getConstructor(Properties.class).newInstance(state.getPreferences());
Method method = formatterClazz.getMethod(FORMATTER_METHOD, String.class);
return input -> (String) method.invoke(formatter, input);
}

private static Class<?> getClass(State state) {
if (state.getMavenCoordinate(MAVEN_GROUP_ARTIFACT).isPresent()) {
return state.loadClass(FORMATTER_CLASS);
}
return state.loadClass(FORMATTER_CLASS_OLD);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Spotless formatter based on JDT version 4.8.0 (see https://projects.eclipse.org/projects/eclipse.jdt)
com.diffplug.spotless:spotless-eclipse-jdt:4.8.0
com.diffplug.spotless:spotless-eclipse-base:3.0.0
com.google.code.findbugs:annotations:3.0.0
com.google.code.findbugs:jsr305:3.0.0
org.eclipse.jdt:org.eclipse.jdt.core:3.14.0
org.eclipse.platform:org.eclipse.core.commands:3.9.100
org.eclipse.platform:org.eclipse.core.contenttype:3.7.0
org.eclipse.platform:org.eclipse.core.jobs:3.10.0
org.eclipse.platform:org.eclipse.core.resources:3.13.0
org.eclipse.platform:org.eclipse.core.runtime:3.14.0
org.eclipse.platform:org.eclipse.equinox.app:1.3.500
org.eclipse.platform:org.eclipse.equinox.common:3.10.0
org.eclipse.platform:org.eclipse.equinox.preferences:3.7.100
org.eclipse.platform:org.eclipse.equinox.registry:3.8.0
org.eclipse.platform:org.eclipse.osgi:3.13.0
org.eclipse.platform:org.eclipse.text:3.6.300
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class EclipseJdtFormatterStepTest extends EclipseCommonTests {

@Override
protected String[] getSupportedVersions() {
return new String[]{"4.6.1", "4.6.3", "4.7.0", "4.7.1", "4.7.2"};
return new String[]{"4.6.1", "4.6.3", "4.7.0", "4.7.1", "4.7.2", "4.8.0"};
}

@Override
Expand Down
6 changes: 5 additions & 1 deletion lib/src/main/java/com/diffplug/spotless/JarState.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
public final class JarState implements Serializable {
private static final long serialVersionUID = 1L;

@SuppressWarnings("unused")
private final Set<String> mavenCoordinates;
@SuppressWarnings("unused")
private final FileSignature fileSignature;
Expand Down Expand Up @@ -92,4 +91,9 @@ URL[] jarUrls() {
public ClassLoader getClassLoader() {
return SpotlessCache.instance().classloader(this);
}

/** Returns unmodifiable view on sorted Maven coordinates */
public Set<String> getMavenCoordinates() {
return Collections.unmodifiableSet(mavenCoordinates);
}
}
2 changes: 1 addition & 1 deletion lib/src/main/java/com/diffplug/spotless/PaddedCell.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
public final class PaddedCell {
/** The kind of result. */
public enum Type {
CONVERGE, CYCLE, DIVERGE;
CONVERGE, CYCLE, DIVERGE;

/** Creates a PaddedCell with the given file and steps. */
PaddedCell create(File file, List<String> steps) {
Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

### Version 3.14.0-SNAPSHOT - TBD ([javadoc](https://diffplug.github.io/spotless/javadoc/snapshot/), [snapshot](https://oss.sonatype.org/content/repositories/snapshots/com/diffplug/spotless/spotless-plugin-gradle/))

* Updated default eclipse-jdt from 4.7.2 to 4.8.0 ([#239](https://github.com/diffplug/spotless/pull/239)). New version fixes a bug preventing Java code formatting within JavaDoc comments ([#191](https://github.com/diffplug/spotless/issues/191)).
* Eclipse formatter versions decoupled from Spotless formatter step implementations to allow independent updates of M2 based Eclipse dependencies. ([#253](https://github.com/diffplug/spotless/pull/253))

### Version 3.13.0 - June 1st 2018 ([javadoc](https://diffplug.github.io/spotless/javadoc/spotless-plugin-gradle/3.13.0/), [jcenter](https://bintray.com/diffplug/opensource/spotless-plugin-gradle/3.13.0))
Expand Down
1 change: 1 addition & 0 deletions plugin-maven/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

### Version 1.14.0-SNAPSHOT - TBD ([javadoc](https://diffplug.github.io/spotless/javadoc/spotless-maven-plugin/snapshot/), [snapshot](https://oss.sonatype.org/content/repositories/snapshots/com/diffplug/spotless/spotless-maven-plugin/))

* Updated default eclipse-jdt from 4.7.2 to 4.8.0 ([#239](https://github.com/diffplug/spotless/pull/239)). New version fixes a bug preventing Java code formatting within JavaDoc comments ([#191](https://github.com/diffplug/spotless/issues/191)).
* Require 3.1.0+ version of Maven ([#259](https://github.com/diffplug/spotless/pull/259)).
* Eclipse formatter versions decoupled from Spotless formatter step implementations to allow independent updates of M2 based Eclipse dependencies. ([#253](https://github.com/diffplug/spotless/pull/253))

Expand Down

0 comments on commit 420d688

Please sign in to comment.