From 40dbf7112423b1d97325cbf1557e185cc42a11c7 Mon Sep 17 00:00:00 2001 From: Frank Vennemeyer Date: Sat, 30 Mar 2019 16:21:41 +0100 Subject: [PATCH 1/5] Upgrade to CTD 9.7. Include SLF4J log service. --- _ext/eclipse-cdt/CHANGES.md | 18 + _ext/eclipse-cdt/build.gradle | 7 +- _ext/eclipse-cdt/gradle.properties | 10 +- .../cdt/EclipseCdtFormatterStepImpl.java | 7 +- .../extra/eclipse/cdt/LogErrorService.java | 458 ------------------ 5 files changed, 32 insertions(+), 468 deletions(-) create mode 100644 _ext/eclipse-cdt/CHANGES.md delete mode 100644 _ext/eclipse-cdt/src/main/java/com/diffplug/spotless/extra/eclipse/cdt/LogErrorService.java diff --git a/_ext/eclipse-cdt/CHANGES.md b/_ext/eclipse-cdt/CHANGES.md new file mode 100644 index 0000000000..e00a7aed9e --- /dev/null +++ b/_ext/eclipse-cdt/CHANGES.md @@ -0,0 +1,18 @@ +# spotless-eclipse-cdt + +### Version 9.7.0 - TBD ([artifact]([jcenter](https://bintray.com/diffplug/opensource/spotless-eclipse-cdt))) + +* Switch to Eclipse CTD release 9.7 for Eclipse 4.11 ([#378](https://github.com/diffplug/spotless/pull/378)). +* Include Eclipse logging allowing formatter warnings/errors to be logged via SLF4J ([#236](https://github.com/diffplug/spotless/issues/236)). + +### Version 9.4.5 - February 25th 2019 ([artifact]([jcenter](https://bintray.com/diffplug/opensource/spotless-eclipse-cdt))) + +* Replaced `http` update-site with `https` ([#360](https://github.com/diffplug/spotless/issues/360)). + +### Version 9.4.4 - September 04th 2018 ([artifact]([jcenter](https://bintray.com/diffplug/opensource/spotless-eclipse-cdt))) + +* Added missing log service, which caused exceptions on AST warnings ([#286](https://github.com/diffplug/spotless/pull/286)). + +### Version 9.4.3 - August 8th 2018 ([artifact]([jcenter](https://bintray.com/diffplug/opensource/spotless-eclipse-cdt))) + +* Initial release! diff --git a/_ext/eclipse-cdt/build.gradle b/_ext/eclipse-cdt/build.gradle index aad99affaa..f5fd7753e8 100644 --- a/_ext/eclipse-cdt/build.gradle +++ b/_ext/eclipse-cdt/build.gradle @@ -4,9 +4,12 @@ ext { ] p2Repository = "https://download.eclipse.org/tools/cdt/releases/${VER_ECLIPSE_CDT}" + p2Repository = "file:////home/pinky/Downloads/cbi/eclipse-cdt/final/" p2Dependencies = [ 'org.eclipse.cdt.core':'+', // CodeFormatter and related + 'org.eclipse.cdt.ui':'+', // IncludeOrganizer and related + 'org.eclipse.core.variables':'+', // CdtVariableManager required to create CProject (for IncludeOrganizer) ] } @@ -25,6 +28,8 @@ dependencies { compile "com.ibm.icu:icu4j:${VER_IBM_ICU}" // Required to by CCorePlugin calling PositionTrackerManager compile "org.eclipse.platform:org.eclipse.core.filebuffers:${VER_ECLISPE_PLATFORM}" + + testCompile("org.slf4j:slf4j-simple:${VER_SLF4J}") } @@ -32,6 +37,6 @@ dependencies { // Test // ////////// sourceSets { - // Use JAR file with all resources for Eclipse-XML integration-tests + // Use JAR file with all resources for Eclipse-CDT integration-tests test.runtimeClasspath = jar.outputs.files + sourceSets.test.output + sourceSets.test.compileClasspath } diff --git a/_ext/eclipse-cdt/gradle.properties b/_ext/eclipse-cdt/gradle.properties index 3356e79b7c..bcb94a7f2e 100644 --- a/_ext/eclipse-cdt/gradle.properties +++ b/_ext/eclipse-cdt/gradle.properties @@ -1,7 +1,7 @@ # Versions correspond to the Eclipse-CDT version used for the fat-JAR. # See https://www.eclipse.org/cdt/ for further information about Eclipse-CDT versions. # Patch version can be incremented independently for backward compatible patches of this library. -ext_version=9.4.5 +ext_version=9.7.0 ext_artifactId=spotless-eclipse-cdt ext_description=Eclipse's CDT C/C++ formatter bundled for Spotless ext_org=diffplug @@ -11,8 +11,12 @@ ext_group=com.diffplug.spotless ext_VER_JAVA=1.8 # Compile dependencies -VER_ECLIPSE_CDT=9.4 -VER_SPOTLESS_ECLISPE_BASE=[3.0.0,4.0.0[ +VER_ECLIPSE_CDT=9.7 +VER_SPOTLESS_ECLISPE_BASE=[3.1.0,4.0.0[ VER_ECLISPE_JFACE=[3.12.0,4.0.0[ +VER_ECLISPE_WORKBENCH=[3.11.0,4.0.0[ VER_ECLISPE_PLATFORM=[3.6.0,4.0.0[ VER_IBM_ICU=[61,62[ + +# Provided dependencies +VER_SLF4J=[1.6,2.0[ \ No newline at end of file diff --git a/_ext/eclipse-cdt/src/main/java/com/diffplug/spotless/extra/eclipse/cdt/EclipseCdtFormatterStepImpl.java b/_ext/eclipse-cdt/src/main/java/com/diffplug/spotless/extra/eclipse/cdt/EclipseCdtFormatterStepImpl.java index cf8a2a5bdc..fe535bfbd6 100644 --- a/_ext/eclipse-cdt/src/main/java/com/diffplug/spotless/extra/eclipse/cdt/EclipseCdtFormatterStepImpl.java +++ b/_ext/eclipse-cdt/src/main/java/com/diffplug/spotless/extra/eclipse/cdt/EclipseCdtFormatterStepImpl.java @@ -24,8 +24,6 @@ import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.formatter.CodeFormatter; import org.eclipse.core.internal.filebuffers.FileBuffersPlugin; -import org.eclipse.equinox.log.ExtendedLogReaderService; -import org.eclipse.equinox.log.ExtendedLogService; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.text.edits.TextEdit; @@ -37,12 +35,10 @@ public class EclipseCdtFormatterStepImpl { private final CodeFormatter codeFormatter; public EclipseCdtFormatterStepImpl(Properties settings) throws Exception { - LogErrorService logService = new LogErrorService(); SpotlessEclipseFramework.setup( config -> { config.applyDefault(); - config.add(ExtendedLogService.class, logService); - config.add(ExtendedLogReaderService.class, logService); + config.useSlf4J(EclipseCdtFormatterStepImpl.class.getPackage().getName()); }, plugins -> { plugins.applyDefault(); @@ -68,5 +64,4 @@ public String format(String raw) throws Exception { return doc.get(); } } - } diff --git a/_ext/eclipse-cdt/src/main/java/com/diffplug/spotless/extra/eclipse/cdt/LogErrorService.java b/_ext/eclipse-cdt/src/main/java/com/diffplug/spotless/extra/eclipse/cdt/LogErrorService.java deleted file mode 100644 index 41d97d16fd..0000000000 --- a/_ext/eclipse-cdt/src/main/java/com/diffplug/spotless/extra/eclipse/cdt/LogErrorService.java +++ /dev/null @@ -1,458 +0,0 @@ -/* - * Copyright 2016 DiffPlug - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.diffplug.spotless.extra.eclipse.cdt; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Collections; -import java.util.Enumeration; -import java.util.Optional; - -import org.eclipse.core.internal.runtime.InternalPlatform; -import org.eclipse.equinox.log.ExtendedLogReaderService; -import org.eclipse.equinox.log.ExtendedLogService; -import org.eclipse.equinox.log.LogFilter; -import org.eclipse.equinox.log.Logger; -import org.osgi.framework.Bundle; -import org.osgi.framework.ServiceReference; -import org.osgi.service.log.LogEntry; -import org.osgi.service.log.LogLevel; -import org.osgi.service.log.LogListener; -import org.osgi.service.log.LogService; -import org.osgi.service.log.LoggerConsumer; - -/** - * Simple log service for errors. - * The CDT formatter logs warnings for dedicated regional problems. - * For example the CDT formatter logs a warning for standard C function provider - * methods which do not use dedicated typedef for their return type. - * The warnings do not contain any information about the type or source of problem. - * Furthermore the other regions of the code(-line) are correctly formatted. - * Hence the useless warnings are eaten. Just errors are logged (though it seems - * that the formatter does not log any messages with an error level). - */ -public class LogErrorService implements ExtendedLogService, ExtendedLogReaderService { - - @Override - @Deprecated - //Backward compatibility with Eclipse OSGI 3.12 - public void log(int level, String message) {} - - @Override - @Deprecated - //Backward compatibility with Eclipse OSGI 3.12 - public void log(int level, String message, Throwable exception) { - log(level, message); - } - - @SuppressWarnings("rawtypes") - @Override - @Deprecated - //Backward compatibility with Eclipse OSGI 3.12 - public void log(ServiceReference sr, int level, String message) { - log(level, message); - } - - @SuppressWarnings("rawtypes") - @Override - @Deprecated - //Backward compatibility with Eclipse OSGI 3.12 - public void log(ServiceReference sr, int level, String message, Throwable exception) { - log(level, message, exception); - } - - @Override - public void log(Object context, int level, String message) { - log(level, message); - } - - @SuppressWarnings("deprecation") ////Backward compatibility with Eclipse OSGI 3.12 - @Override - public void log(Object context, int level, String message, Throwable exception) { - LogLevel logLevel; - switch (level) { - case LogService.LOG_DEBUG: - logLevel = LogLevel.DEBUG; - break; - case LogService.LOG_INFO: - logLevel = LogLevel.INFO; - break; - case LogService.LOG_ERROR: - logLevel = LogLevel.ERROR; - break; - case LogService.LOG_WARNING: - logLevel = LogLevel.WARN; - break; - default: - logLevel = LogLevel.AUDIT; - } - log(new SimpleLogEntry(logLevel, message, exception)); - } - - @Override - public boolean isLoggable(int level) { - return true; - } - - @Override - public String getName() { - return LogErrorService.class.getSimpleName(); - } - - @Override - public Logger getLogger(String loggerName) { - return this; - } - - @Override - public Logger getLogger(Bundle bundle, String loggerName) { - return this; - } - - @Override - public void addLogListener(LogListener listener) { - //Nothing to do - } - - @Override - public void removeLogListener(LogListener listener) { - //Nothing to do - } - - public void log(LogEntry entry) { - if (LogLevel.ERROR == entry.getLogLevel()) { - System.err.println(entry.toString()); - } - } - - @Override - @Deprecated - //Backward compatibility with Eclipse OSGI 3.12 - public Enumeration getLog() { - return Collections.emptyEnumeration(); //We do not provide historical information - } - - @Override - public void addLogListener(LogListener listener, LogFilter filter) { - addLogListener(listener); //Listener must filter if required - - } - - @Override - public org.osgi.service.log.Logger getLogger(Class clazz) { - return this; - } - - @Override - @Deprecated - public L getLogger(String name, Class loggerType) { - throw new UnsupportedOperationException("Logger Factory currently not supported."); - } - - @Override - @Deprecated - public L getLogger(Class clazz, Class loggerType) { - return getLogger(getName(), loggerType); - } - - @Override - @Deprecated - public L getLogger(Bundle bundle, String name, Class loggerType) { - return getLogger(getName(), loggerType); - } - - @Override - public boolean isTraceEnabled() { - return false; - } - - @Override - public void trace(String message) { - log(new SimpleLogEntry(LogLevel.TRACE, message)); - } - - @Override - public void trace(String format, Object arg) { - trace(String.format(format, arg)); - } - - @Override - public void trace(String format, Object arg1, Object arg2) { - trace(String.format(format, arg1, arg2)); - } - - @Override - public void trace(String format, Object... arguments) { - trace(String.format(format, arguments)); - } - - @Override - @Deprecated - public void trace(LoggerConsumer consumer) throws E { - throw new UnsupportedOperationException("Logger Consumer currently not supported."); - } - - @Override - public boolean isDebugEnabled() { - return false; - } - - @Override - public void debug(String message) { - log(new SimpleLogEntry(LogLevel.DEBUG, message)); - } - - @Override - public void debug(String format, Object arg) { - debug(String.format(format, arg)); - } - - @Override - public void debug(String format, Object arg1, Object arg2) { - debug(String.format(format, arg1, arg2)); - } - - @Override - public void debug(String format, Object... arguments) { - trace(String.format(format, arguments)); - } - - @Override - @Deprecated - public void debug(LoggerConsumer consumer) throws E { - throw new UnsupportedOperationException("Logger Consumer currently not supported."); - } - - @Override - public boolean isInfoEnabled() { - return false; - } - - @Override - public void info(String message) { - log(new SimpleLogEntry(LogLevel.INFO, message)); - } - - @Override - public void info(String format, Object arg) { - info(String.format(format, arg)); - } - - @Override - public void info(String format, Object arg1, Object arg2) { - info(String.format(format, arg1, arg2)); - } - - @Override - public void info(String format, Object... arguments) { - info(String.format(format, arguments)); - } - - @Override - @Deprecated - public void info(LoggerConsumer consumer) throws E { - throw new UnsupportedOperationException("Logger Consumer currently not supported."); - } - - @Override - public boolean isWarnEnabled() { - return false; - } - - @Override - public void warn(String message) { - log(new SimpleLogEntry(LogLevel.WARN, message)); - } - - @Override - public void warn(String format, Object arg) { - warn(String.format(format, arg)); - } - - @Override - public void warn(String format, Object arg1, Object arg2) { - warn(String.format(format, arg1, arg2)); - } - - @Override - public void warn(String format, Object... arguments) { - warn(String.format(format, arguments)); - } - - @Override - @Deprecated - public void warn(LoggerConsumer consumer) throws E { - throw new UnsupportedOperationException("Logger Consumer currently not supported."); - } - - @Override - public boolean isErrorEnabled() { - return true; - } - - @Override - public void error(String message) { - log(new SimpleLogEntry(LogLevel.ERROR, message)); - } - - @Override - public void error(String format, Object arg) { - error(String.format(format, arg)); - } - - @Override - public void error(String format, Object arg1, Object arg2) { - error(String.format(format, arg1, arg2)); - } - - @Override - public void error(String format, Object... arguments) { - error(String.format(format, arguments)); - } - - @Override - @Deprecated - public void error(LoggerConsumer consumer) throws E { - throw new UnsupportedOperationException("Logger Consumer currently not supported."); - } - - @Override - public void audit(String message) { - log(new SimpleLogEntry(LogLevel.AUDIT, message)); - } - - @Override - public void audit(String format, Object arg) { - audit(String.format(format, arg)); - } - - @Override - public void audit(String format, Object arg1, Object arg2) { - audit(String.format(format, arg1, arg2)); - } - - @Override - public void audit(String format, Object... arguments) { - audit(String.format(format, arguments)); - } - - public static class SimpleLogEntry implements LogEntry { - - private final LogLevel level; - private final String message; - private final Optional execption; - - public SimpleLogEntry(LogLevel level, String message) { - this(level, message, Optional.empty()); - } - - public SimpleLogEntry(LogLevel level, String message, Throwable execption) { - this(level, message, Optional.ofNullable(execption)); - } - - private SimpleLogEntry(LogLevel level, String message, Optional execption) { - this.level = level; - this.message = message; - this.execption = execption; - } - - @Override - public Bundle getBundle() { - //Return the spotless framework bundle - return InternalPlatform.getDefault().getBundleContext().getBundle(); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - @Override - public ServiceReference getServiceReference() { - return null; - } - - @Override - @Deprecated - //Backward compatibility with Eclipse OSGI 3.12 - public int getLevel() { - switch (level) { - case DEBUG: - case TRACE: - return LogService.LOG_DEBUG; - case AUDIT: - case INFO: - return LogService.LOG_INFO; - case ERROR: - return LogService.LOG_ERROR; - case WARN: - return LogService.LOG_WARNING; - } - return LogService.LOG_ERROR; //Don't fail here. Just log it as error. This is anyway just for debugging internal problems. - } - - @Override - public String getMessage() { - return message; - } - - @Override - public Throwable getException() { - return execption.orElse(null); - } - - @Override - public long getTime() { - return 0; - } - - @Override - public String toString() { - StringWriter result = new StringWriter(); - result.write(message); - if (execption.isPresent()) { - result.write('\n'); - result.write(execption.get().toString()); - result.write('\n'); - execption.get().printStackTrace(new PrintWriter(result)); - } - return result.toString(); - } - - @Override - public LogLevel getLogLevel() { - return level; - } - - @Override - public String getLoggerName() { - return this.getClass().getSimpleName(); - } - - @Override - public long getSequence() { - return 0; - } - - @Override - public String getThreadInfo() { - return null; - } - - @Override - public StackTraceElement getLocation() { - return null; - } - - } - -} From 69003e42a23668d284d7793d03d49dfe8ab5e6a9 Mon Sep 17 00:00:00 2001 From: Frank Vennemeyer Date: Sat, 30 Mar 2019 16:25:58 +0100 Subject: [PATCH 2/5] Updated change log. --- _ext/eclipse-cdt/CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_ext/eclipse-cdt/CHANGES.md b/_ext/eclipse-cdt/CHANGES.md index e00a7aed9e..6aa36d9e14 100644 --- a/_ext/eclipse-cdt/CHANGES.md +++ b/_ext/eclipse-cdt/CHANGES.md @@ -2,7 +2,7 @@ ### Version 9.7.0 - TBD ([artifact]([jcenter](https://bintray.com/diffplug/opensource/spotless-eclipse-cdt))) -* Switch to Eclipse CTD release 9.7 for Eclipse 4.11 ([#378](https://github.com/diffplug/spotless/pull/378)). +* Switch to Eclipse CTD release 9.7 for Eclipse 4.11 ([#389](https://github.com/diffplug/spotless/pull/389)). * Include Eclipse logging allowing formatter warnings/errors to be logged via SLF4J ([#236](https://github.com/diffplug/spotless/issues/236)). ### Version 9.4.5 - February 25th 2019 ([artifact]([jcenter](https://bintray.com/diffplug/opensource/spotless-eclipse-cdt))) From f0c79b56d4d3d223411eaa7cde7988e187e872c4 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sat, 30 Mar 2019 21:22:28 -0700 Subject: [PATCH 3/5] Remove p2 repo which was added accidentally. --- _ext/eclipse-cdt/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/_ext/eclipse-cdt/build.gradle b/_ext/eclipse-cdt/build.gradle index f5fd7753e8..4e9b4aa8dc 100644 --- a/_ext/eclipse-cdt/build.gradle +++ b/_ext/eclipse-cdt/build.gradle @@ -4,7 +4,6 @@ ext { ] p2Repository = "https://download.eclipse.org/tools/cdt/releases/${VER_ECLIPSE_CDT}" - p2Repository = "file:////home/pinky/Downloads/cbi/eclipse-cdt/final/" p2Dependencies = [ 'org.eclipse.cdt.core':'+', // CodeFormatter and related From 6507774f3357f82de900ba108268db9efd55c342 Mon Sep 17 00:00:00 2001 From: Frank Vennemeyer Date: Sun, 31 Mar 2019 08:14:50 +0200 Subject: [PATCH 4/5] Removed IncludeOrganizer dependencies. --- _ext/eclipse-cdt/build.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/_ext/eclipse-cdt/build.gradle b/_ext/eclipse-cdt/build.gradle index 4e9b4aa8dc..a8943e321c 100644 --- a/_ext/eclipse-cdt/build.gradle +++ b/_ext/eclipse-cdt/build.gradle @@ -7,8 +7,6 @@ ext { p2Dependencies = [ 'org.eclipse.cdt.core':'+', // CodeFormatter and related - 'org.eclipse.cdt.ui':'+', // IncludeOrganizer and related - 'org.eclipse.core.variables':'+', // CdtVariableManager required to create CProject (for IncludeOrganizer) ] } From 13eb8ef24c9a7569cbac3895cb609d3ac142fda7 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sun, 31 Mar 2019 12:51:12 -0700 Subject: [PATCH 5/5] Publish ext-eclipse-cdt/9.7.0. --- _ext/eclipse-cdt/CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_ext/eclipse-cdt/CHANGES.md b/_ext/eclipse-cdt/CHANGES.md index 6aa36d9e14..b4fbd087c5 100644 --- a/_ext/eclipse-cdt/CHANGES.md +++ b/_ext/eclipse-cdt/CHANGES.md @@ -1,6 +1,6 @@ # spotless-eclipse-cdt -### Version 9.7.0 - TBD ([artifact]([jcenter](https://bintray.com/diffplug/opensource/spotless-eclipse-cdt))) +### Version 9.7.0 - March 31st 2019 ([artifact]([jcenter](https://bintray.com/diffplug/opensource/spotless-eclipse-cdt))) * Switch to Eclipse CTD release 9.7 for Eclipse 4.11 ([#389](https://github.com/diffplug/spotless/pull/389)). * Include Eclipse logging allowing formatter warnings/errors to be logged via SLF4J ([#236](https://github.com/diffplug/spotless/issues/236)).