Workarounding classloader issue with CustomizerProviders, fixing compilation, as Utilities.radixInfo does not exist yet.
1.1 --- a/javahints/src/org/netbeans/modules/javahints/jdk/AddUnderscores.java Thu Oct 27 14:18:11 2011 +0200
1.2 +++ b/javahints/src/org/netbeans/modules/javahints/jdk/AddUnderscores.java Thu Oct 27 17:22:19 2011 +0200
1.3 @@ -41,7 +41,6 @@
1.4 */
1.5 package org.netbeans.modules.javahints.jdk;
1.6
1.7 -import com.sun.source.tree.LiteralTree;
1.8 import com.sun.source.tree.Tree.Kind;
1.9 import com.sun.source.util.TreePath;
1.10 import java.util.prefs.Preferences;
1.11 @@ -50,14 +49,13 @@
1.12 import javax.swing.JComponent;
1.13 import org.netbeans.api.java.source.CompilationInfo;
1.14 import org.netbeans.api.java.source.WorkingCopy;
1.15 -import org.netbeans.modules.java.hints.errors.Utilities;
1.16 -import org.netbeans.modules.java.hints.errors.Utilities.RadixInfo;
1.17 import org.netbeans.modules.java.hints.jackpot.code.spi.Hint;
1.18 import org.netbeans.modules.java.hints.jackpot.code.spi.TriggerTreeKind;
1.19 import org.netbeans.modules.java.hints.jackpot.spi.CustomizerProvider;
1.20 import org.netbeans.modules.java.hints.jackpot.spi.HintContext;
1.21 import org.netbeans.modules.java.hints.jackpot.spi.JavaFix;
1.22 import org.netbeans.modules.java.hints.jackpot.spi.support.ErrorDescriptionFactory;
1.23 +import org.netbeans.modules.java.hints.infrastructure.NoClassLoaderProblemCustomizerProvider;
1.24 import org.netbeans.modules.javahints.jdk.AddUnderscores.CustomizerProviderImpl;
1.25 import org.netbeans.modules.java.hints.spi.AbstractHint.HintSeverity;
1.26 import org.netbeans.spi.editor.hints.ErrorDescription;
1.27 @@ -68,7 +66,7 @@
1.28 *
1.29 * @author lahvac
1.30 */
1.31 -@Hint(id=AddUnderscores.ID, category="rules15", enabled=false, severity=HintSeverity.CURRENT_LINE_WARNING, customizerProvider=CustomizerProviderImpl.class)
1.32 +@Hint(id=AddUnderscores.ID, category="rules15", enabled=false, severity=HintSeverity.CURRENT_LINE_WARNING, customizerProvider=NoClassLoaderProblemCustomizerProvider.class)
1.33 public class AddUnderscores {
1.34 public static final String ID = "org.netbeans.modules.javahints.jdk.AddUnderscores";
1.35
1.36 @@ -81,7 +79,7 @@
1.37 int end = (int) ctx.getInfo().getTrees().getSourcePositions().getEndPosition(tp.getCompilationUnit(), tp.getLeaf());
1.38 String literal = ctx.getInfo().getText().substring(start, end);
1.39 if (!isReplaceLiteralsWithUnderscores(ctx.getPreferences()) && literal.contains("_")) return null;
1.40 - RadixInfo info = Utilities.radixInfo(literal);
1.41 + RadixInfo info = radixInfo(literal);
1.42 String normalized = info.constant.replaceAll(Pattern.quote("_"), "");
1.43 int separateCount = getSizeForRadix(ctx.getPreferences(), info.radix);
1.44 StringBuilder split = new StringBuilder();
1.45 @@ -147,6 +145,50 @@
1.46 prefs.putBoolean(KEY_ALSO_WITH_UNDERSCORES, value);
1.47 }
1.48
1.49 +
1.50 + public static RadixInfo radixInfo(String literal) {
1.51 + int currentRadix = 10;
1.52 + String prefix = "";
1.53 +
1.54 + if (literal.startsWith("0x") || literal.startsWith("0X")) {
1.55 + currentRadix = 16;
1.56 + prefix = literal.substring(0, 2);
1.57 + literal = literal.substring(2);
1.58 + } else if (literal.startsWith("0b") || literal.startsWith("0B")) {
1.59 + currentRadix = 2;
1.60 + prefix = literal.substring(0, 2);
1.61 + literal = literal.substring(2);
1.62 + } else if (literal.startsWith("0")) {
1.63 + currentRadix = 8;
1.64 + prefix = literal.substring(0, 1);
1.65 + literal = literal.substring(1);
1.66 + }
1.67 +
1.68 + String suffix = "";
1.69 +
1.70 + if (literal.endsWith("l") || literal.endsWith("L")) {
1.71 + suffix = literal.substring(literal.length() - 1);
1.72 + literal = literal.substring(0, literal.length() - 1);
1.73 + }
1.74 +
1.75 + return new RadixInfo(prefix, literal, suffix, currentRadix);
1.76 + }
1.77 +
1.78 + public static final class RadixInfo {
1.79 + public final String prefix;
1.80 + public final String constant;
1.81 + public final String suffix;
1.82 + public final int radix;
1.83 +
1.84 + public RadixInfo(String prefix, String constant, String suffix, int radix) {
1.85 + this.prefix = prefix;
1.86 + this.constant = constant;
1.87 + this.suffix = suffix;
1.88 + this.radix = radix;
1.89 + }
1.90 +
1.91 + }
1.92 +
1.93 private static final class FixImpl extends JavaFix {
1.94
1.95 private final String target;
1.96 @@ -168,6 +210,10 @@
1.97 }
1.98
1.99 }
1.100 +
1.101 + static {
1.102 + NoClassLoaderProblemCustomizerProvider.register(ID, new CustomizerProviderImpl());
1.103 + }
1.104
1.105 public static final class CustomizerProviderImpl implements CustomizerProvider {
1.106