Skip to content

Commit 9a07516

Browse files
committed
Fix IndexOutOfBoundsException when running on mismatched Eclipse
Update `spring-javaformat-formatter-elcipse` so that all of `org.eclipse.jdt` is shaded into `io.spring.javaformat.eclipse.jdt`. This update ensures that the version of the AST parsing classes are aligned with the version of the formatter. Prior to this commit the misalignment would cause `IndexOutOfBounds` exceptions. Fixes gh-288
1 parent 492d2f5 commit 9a07516

File tree

9 files changed

+404
-399
lines changed

9 files changed

+404
-399
lines changed

spring-javaformat-eclipse/io.spring.javaformat.eclipse/src/io/spring/javaformat/eclipse/Activator.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2019 the original author or authors.
2+
* Copyright 2017-2021 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -19,6 +19,8 @@
1919
import org.eclipse.ui.plugin.AbstractUIPlugin;
2020
import org.osgi.framework.BundleContext;
2121

22+
import io.spring.javaformat.eclipse.jdt.core.JavaCore;
23+
2224
/**
2325
* The activator class controls the plug-in life cycle.
2426
*
@@ -33,17 +35,22 @@ public class Activator extends AbstractUIPlugin {
3335

3436
private static Activator plugin;
3537

38+
private JavaCore javaCore;
39+
3640
public Activator() {
41+
this.javaCore = new JavaCore();
3742
}
3843

3944
@Override
4045
public void start(BundleContext context) throws Exception {
4146
super.start(context);
4247
plugin = this;
48+
this.javaCore.start(context);
4349
}
4450

4551
@Override
4652
public void stop(BundleContext context) throws Exception {
53+
this.javaCore.stop(context);
4754
plugin = null;
4855
super.stop(context);
4956
}

spring-javaformat-gradle/spring-javaformat-gradle-plugin/src/test/java/io/spring/javaformat/gradle/testkit/GradleBuild.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2019 the original author or authors.
2+
* Copyright 2017-2021 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -40,8 +40,8 @@
4040
import org.junit.runners.model.Statement;
4141
import org.xml.sax.InputSource;
4242

43+
import io.spring.javaformat.eclipse.jdt.internal.formatter.Preparator;
4344
import io.spring.javaformat.formatter.Formatter;
44-
import io.spring.javaformat.formatter.eclipse.Preparator;
4545
import io.spring.javaformat.org.eclipse.jdt.core.formatter.CodeFormatter;
4646

4747
/**

spring-javaformat/spring-javaformat-checkstyle/src/test/java/io/spring/javaformat/checkstyle/AssertionsAuditListener.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2019 the original author or authors.
2+
* Copyright 2017-2021 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -110,8 +110,8 @@ private void recordLevel(AuditEvent event) {
110110
}
111111

112112
private void recordLocalizedMessage(String message, String... args) {
113-
recordMessage(new Violation(0, Definitions.CHECKSTYLE_BUNDLE, message, args, null,
114-
Violation.class, null).getViolation());
113+
recordMessage(new Violation(0, Definitions.CHECKSTYLE_BUNDLE, message, args, null, Violation.class, null)
114+
.getViolation());
115115
}
116116

117117
private void recordMessage(String message) {

spring-javaformat/spring-javaformat-formatter-eclipse/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,14 @@
5050
<filter>
5151
<artifact>io.spring.javaformat:spring-javaformat-formatter-eclipse-runtime</artifact>
5252
<includes>
53-
<include>org/eclipse/jdt/internal/formatter/**</include>
53+
<include>org/eclipse/jdt/**</include>
5454
</includes>
5555
</filter>
5656
</filters>
5757
<relocations>
5858
<relocation>
59-
<pattern>org.eclipse.jdt.internal.formatter</pattern>
60-
<shadedPattern>io.spring.javaformat.formatter.eclipse</shadedPattern>
59+
<pattern>org.eclipse.jdt</pattern>
60+
<shadedPattern>io.spring.javaformat.eclipse.jdt</shadedPattern>
6161
</relocation>
6262
</relocations>
6363
<createDependencyReducedPom>false</createDependencyReducedPom>

spring-javaformat/spring-javaformat-formatter/src/main/java/io/spring/javaformat/formatter/Formatter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222
import java.util.Map;
2323
import java.util.Properties;
2424

25-
import org.eclipse.jdt.core.formatter.CodeFormatter;
2625
import org.eclipse.jface.text.IRegion;
2726
import org.eclipse.text.edits.TextEdit;
2827

2928
import io.spring.javaformat.config.IndentationStyle;
3029
import io.spring.javaformat.config.JavaFormatConfig;
31-
import io.spring.javaformat.formatter.eclipse.ExtendedCodeFormatter;
32-
import io.spring.javaformat.formatter.eclipse.Preparator;
30+
import io.spring.javaformat.eclipse.jdt.core.formatter.CodeFormatter;
31+
import io.spring.javaformat.eclipse.jdt.internal.formatter.ExtendedCodeFormatter;
32+
import io.spring.javaformat.eclipse.jdt.internal.formatter.Preparator;
3333
import io.spring.javaformat.formatter.preparator.Preparators;
3434

3535
/**
@@ -195,7 +195,7 @@ private static Map<String, String> loadOptions(JavaFormatConfig javaFormatConfig
195195

196196
private static void applyConfig(Properties properties, JavaFormatConfig javaFormatConfig) {
197197
if (javaFormatConfig.getIndentationStyle() == IndentationStyle.SPACES) {
198-
properties.put("org.eclipse.jdt.core.formatter.tabulation.char", "space");
198+
properties.put("io.spring.javaformat.eclipse.jdt.core.formatter.tabulation.char", "space");
199199
}
200200
}
201201

spring-javaformat/spring-javaformat-formatter/src/main/java/io/spring/javaformat/formatter/preparator/CodeLineBreakPreparator.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2019 the original author or authors.
2+
* Copyright 2017-2021 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,20 +16,19 @@
1616

1717
package io.spring.javaformat.formatter.preparator;
1818

19-
import org.eclipse.jdt.core.dom.ASTNode;
20-
import org.eclipse.jdt.core.dom.ASTVisitor;
21-
import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
22-
import org.eclipse.jdt.core.dom.AnnotationTypeDeclaration;
23-
import org.eclipse.jdt.core.dom.EnumDeclaration;
24-
import org.eclipse.jdt.core.dom.FieldDeclaration;
25-
import org.eclipse.jdt.core.dom.SimpleName;
26-
import org.eclipse.jdt.core.dom.TypeDeclaration;
27-
import org.eclipse.jdt.core.formatter.CodeFormatter;
28-
import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
29-
30-
import io.spring.javaformat.formatter.eclipse.Preparator;
31-
import io.spring.javaformat.formatter.eclipse.Token;
32-
import io.spring.javaformat.formatter.eclipse.TokenManager;
19+
import io.spring.javaformat.eclipse.jdt.core.dom.ASTNode;
20+
import io.spring.javaformat.eclipse.jdt.core.dom.ASTVisitor;
21+
import io.spring.javaformat.eclipse.jdt.core.dom.AbstractTypeDeclaration;
22+
import io.spring.javaformat.eclipse.jdt.core.dom.AnnotationTypeDeclaration;
23+
import io.spring.javaformat.eclipse.jdt.core.dom.EnumDeclaration;
24+
import io.spring.javaformat.eclipse.jdt.core.dom.FieldDeclaration;
25+
import io.spring.javaformat.eclipse.jdt.core.dom.SimpleName;
26+
import io.spring.javaformat.eclipse.jdt.core.dom.TypeDeclaration;
27+
import io.spring.javaformat.eclipse.jdt.core.formatter.CodeFormatter;
28+
import io.spring.javaformat.eclipse.jdt.internal.compiler.parser.TerminalTokens;
29+
import io.spring.javaformat.eclipse.jdt.internal.formatter.Preparator;
30+
import io.spring.javaformat.eclipse.jdt.internal.formatter.Token;
31+
import io.spring.javaformat.eclipse.jdt.internal.formatter.TokenManager;
3332

3433
/**
3534
* {@link Preparator} to fine tune curly-brace line breaks.

spring-javaformat/spring-javaformat-formatter/src/main/java/io/spring/javaformat/formatter/preparator/JavadocLineBreakPreparator.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2019 the original author or authors.
2+
* Copyright 2017-2021 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -20,20 +20,19 @@
2020
import java.util.Collections;
2121
import java.util.List;
2222

23-
import org.eclipse.jdt.core.dom.ASTNode;
24-
import org.eclipse.jdt.core.dom.ASTVisitor;
25-
import org.eclipse.jdt.core.dom.Comment;
26-
import org.eclipse.jdt.core.dom.CompilationUnit;
27-
import org.eclipse.jdt.core.dom.Javadoc;
28-
import org.eclipse.jdt.core.dom.TagElement;
29-
import org.eclipse.jdt.core.dom.TextElement;
30-
import org.eclipse.jdt.core.dom.TypeDeclaration;
31-
import org.eclipse.jdt.core.formatter.CodeFormatter;
32-
import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
33-
34-
import io.spring.javaformat.formatter.eclipse.Preparator;
35-
import io.spring.javaformat.formatter.eclipse.Token;
36-
import io.spring.javaformat.formatter.eclipse.TokenManager;
23+
import io.spring.javaformat.eclipse.jdt.core.dom.ASTNode;
24+
import io.spring.javaformat.eclipse.jdt.core.dom.ASTVisitor;
25+
import io.spring.javaformat.eclipse.jdt.core.dom.Comment;
26+
import io.spring.javaformat.eclipse.jdt.core.dom.CompilationUnit;
27+
import io.spring.javaformat.eclipse.jdt.core.dom.Javadoc;
28+
import io.spring.javaformat.eclipse.jdt.core.dom.TagElement;
29+
import io.spring.javaformat.eclipse.jdt.core.dom.TextElement;
30+
import io.spring.javaformat.eclipse.jdt.core.dom.TypeDeclaration;
31+
import io.spring.javaformat.eclipse.jdt.core.formatter.CodeFormatter;
32+
import io.spring.javaformat.eclipse.jdt.internal.compiler.parser.TerminalTokens;
33+
import io.spring.javaformat.eclipse.jdt.internal.formatter.Preparator;
34+
import io.spring.javaformat.eclipse.jdt.internal.formatter.Token;
35+
import io.spring.javaformat.eclipse.jdt.internal.formatter.TokenManager;
3736

3837
/**
3938
* {@link Preparator} to fine tune Javadoc whitespace.

spring-javaformat/spring-javaformat-formatter/src/main/java/io/spring/javaformat/formatter/preparator/Preparators.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017-2019 the original author or authors.
2+
* Copyright 2017-2021 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@
1818

1919
import java.util.function.Consumer;
2020

21-
import io.spring.javaformat.formatter.eclipse.Preparator;
21+
import io.spring.javaformat.eclipse.jdt.internal.formatter.Preparator;
2222

2323
/**
2424
* {@link Preparator} instances that can be added.

0 commit comments

Comments
 (0)