Workarounding classloader issue with CustomizerProviders, fixing compilation, as Utilities.radixInfo does not exist yet.
authorJan Lahoda <jlahoda@netbeans.org>
Thu, 27 Oct 2011 17:22:19 +0200
changeset 1765799f0f6d43c81
parent 17656 1bbfa3f03919
child 17658 54a0ce91f44e
Workarounding classloader issue with CustomizerProviders, fixing compilation, as Utilities.radixInfo does not exist yet.
javahints/src/org/netbeans/modules/javahints/jdk/AddUnderscores.java
     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