public void testSigSnameFragment() throws Exception {
    Map<String, String> mapFqn = new HashMap<String, String>();
    mapFqn.put("extractSig", "1");
    mapFqn.put("shortNamesOnly", "1");

    fqnFactory.init(mapFqn);

    // note .. there is no whitespace here
    is =
        new WhitespaceTokenizer(
            new StringReader(
                "org.wonderly.ham.speech.DB23Announcements.connected(_UNRESOLVED_.Parameters<?java.util.List<java.lang.String>>,java.lang.String)"));

    FqnFilter fqnf = fqnFactory.create(is);
    RemoveSigOrderFilterFactory rsoff = new RemoveSigOrderFilterFactory();
    DelimiterFilter rsof = rsoff.create(fqnf);
    FragmentFilterFactory fff = new FragmentFilterFactory();
    FragmentFilter ff = fff.create(rsof);

    final Token reusableToken = new Token();
    Token nextToken = ff.next(reusableToken);
    assertEquals("Parameters", nextToken.term());
    nextToken = ff.next(reusableToken);
    assertEquals("String", nextToken.term());
    assertNull(ff.next(reusableToken));
  }
  public void testFqnShortName3() throws Exception {
    Map<String, String> mapFqn = new HashMap<String, String>();
    mapFqn.put("extractSig", "0");
    mapFqn.put("shortNamesOnly", "1");

    fqnFactory.init(mapFqn);

    // note .. there is no whitespace here
    is = new WhitespaceTokenizer(new StringReader("connected"));

    FqnFilter tokenizer = fqnFactory.create(is);
    final Token reusableToken = new Token();
    Token nextToken = tokenizer.next(reusableToken);
    assertEquals("connected", nextToken.term());
    assertNull(tokenizer.next(reusableToken));
  }
  public void testFqnShortName() throws Exception {
    Map<String, String> mapFqn = new HashMap<String, String>();
    mapFqn.put("extractSig", "0");
    mapFqn.put("shortNamesOnly", "1");

    fqnFactory.init(mapFqn);

    // note .. there is no whitespace here
    is =
        new WhitespaceTokenizer(
            new StringReader(
                "org.wonderly.ham.speech.DB23Announcements.connected(_UNRESOLVED_.Parameters<?java.util.List<java.lang.String>>,java.lang.String)"));

    FqnFilter tokenizer = fqnFactory.create(is);
    final Token reusableToken = new Token();
    Token nextToken = tokenizer.next(reusableToken);
    assertEquals("connected", nextToken.term());
    assertNull(tokenizer.next(reusableToken));
  }
  public void testMethodSname() throws Exception {
    Map<String, String> mapFqn = new HashMap<String, String>();
    mapFqn.put("extractSig", "0");
    mapFqn.put("shortNamesOnly", "1");

    fqnFactory.init(mapFqn);

    // note .. there is no whitespace here
    is =
        new WhitespaceTokenizer(
            new StringReader("org.wonderly.ham.speech.DB23Announcements.connected()"));

    FqnFilter ff = fqnFactory.create(is);
    //		RemoveSigOrderFilterFactory rsoff = new RemoveSigOrderFilterFactory();
    //		DelimiterFilter rsof = rsoff.create(fqnf);
    //		FragmentFilterFactory fff = new FragmentFilterFactory();
    //		FragmentFilter ff = fff.create(rsof);

    final Token reusableToken = new Token();
    Token nextToken = ff.next(reusableToken);
    assertEquals("connected", nextToken.term());
    assertNull(ff.next(reusableToken));
  }
  public void testAngBrackets() throws Exception {
    /*
    <tokenizer
    	class="solr.WhitespaceTokenizerFactory"/>
           <filter class="edu.uci.ics.sourcerer.search.analysis.FqnFilterFactory"
    	extractSig="0" shortNamesOnly="1" />
    <filter class="edu.uci.ics.sourcerer.search.analysis.NonAlphaNumTokenizerFilterFactory"/>
    <filter class="edu.uci.ics.sourcerer.search.analysis.CamelCaseSplitFilterFactory"/>
    <filter class="edu.uci.ics.sourcerer.search.analysis.LetterDigitSplitFilterFactory" preserveOriginal="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    */
    String fqns =
        "org.ayutabeans.util.BindingTypes.getBindingTypes()"
            + " com.sun.xml.bind.v2.model.impl.ClassInfoImpl$ConflictException.<init>(java.util.List<java.lang.annotation.Annotation>)"
            + " com.redlenses.net.transport.pickling.reflection.PropertyAccessor.setAnnotations(java.util.List<java.lang.annotation.Annotation>)"
            + " org.cbf.impl.ModuleInfoImpl.getBeanConfigurations(java.lang.String)"
            + " org.cbf.impl.BeanDescriptionImpl.getBeanConfigurations()"
            + " org.cbf.BeanDescription.getBeanConfigurations()"
            + " org.ayutabeans.util.BindingTypes.match(java.util.List<java.lang.annotation.Annotation>)"
            +
            // this fqn was giving empty stack exception
            " org.ayutabeans.component.impl.JavaBeanComponentImpl.<init>"
            + "(org.ayutabeans.container.AyutaContainer,org.ayutabeans.util.BindingTypes<javax.webbeans.BindingType>,"
            + "java.lang.Class<<?+java.lang.annotation.Annotation>>,"
            + "java.lang.Class<<?+java.lang.annotation.Annotation>>,"
            + "java.lang.String,java.lang.Class<<T>>,"
            + "org.ayutabeans.component.ComponentConstructor<<T>>,"
            + "java.util.List<org.ayutabeans.component.impl.InjectFieldImpl>,"
            + "java.util.List<org.ayutabeans.component.impl.InjectMethodImpl>,"
            + "org.ayutabeans.component.impl.LifecycleMethodImpl,"
            + "org.ayutabeans.component.impl.LifecycleMethodImpl)"
            + " com.sun.jersey.core.spi.factory.InjectableProviderFactory.getInjectable(java.lang.Class<<?+java.lang.annotation.Annotation>>,com.sun.jersey.core.spi.component.ComponentContext,<A>,<C>,java.util.List<com.sun.jersey.core.spi.component.ComponentScope>)"
            + " com.sun.jersey.spi.inject.InjectableProviderContext.getInjectable(java.lang.Class<<?+java.lang.annotation.Annotation>>,com.sun.jersey.core.spi.component.ComponentContext,<A>,<C>,java.util.List<com.sun.jersey.core.spi.component.ComponentScope>) ";

    Map<String, String> mapFqn = new HashMap<String, String>();
    mapFqn.put("extractSig", "0");
    mapFqn.put("shortNamesOnly", "1");

    fqnFactory.init(mapFqn);

    // is = new WhitespaceTokenizer(new StringReader(fqns));
    is = new SingleSpaceTokenizer(new StringReader(fqns));

    FqnFilter fqnf = fqnFactory.create(is);
    NonAlphaNumTokenizerFilterFactory ntf = new NonAlphaNumTokenizerFilterFactory();
    NonAlphaNumTokenizerFilter nf = ntf.create(fqnf);
    CamelCaseSplitFilterFactory ccf = new CamelCaseSplitFilterFactory();
    CamelCaseSplitFilter cf = ccf.create(nf);
    LetterDigitSplitFilterFactory lff = new LetterDigitSplitFilterFactory();
    Map<String, String> args = new HashMap<String, String>();
    args.put("preserveOriginal", "1");
    lff.init(args);
    LetterDigitSplitFilter lf = lff.create(cf);
    LowerCaseFilterFactory loff = new LowerCaseFilterFactory();
    LowerCaseFilter lof = loff.create(lf);

    final Token reusableToken = new Token();
    Token nextToken = lof.next(reusableToken);
    assertEquals("get", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("binding", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("types", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("init", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("set", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("annotations", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("get", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("bean", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("configurations", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("get", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("bean", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("configurations", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("get", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("bean", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("configurations", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("match", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("init", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("get", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("injectable", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("get", nextToken.term());
    nextToken = lof.next(reusableToken);
    assertEquals("injectable", nextToken.term());
    nextToken = lof.next(reusableToken);

    // note the last space in the input string above
    assertEquals(1, nextToken.term().length());
    nextToken = lof.next(reusableToken);

    assertNull(nextToken);
  }