void addItem()

in src/main/java/org/apache/bsf/util/MethodUtils.java [63:90]


    void addItem (final Object newEntry)
    {
      if(size()==0) {
        addElement(newEntry);
    } else
        {
          final Class[] newargs=entryGetParameterTypes(newEntry);
          boolean keep=true;
          for (final Enumeration e = elements();
               keep & e.hasMoreElements() ;
                )
            {
              final Object oldEntry=e.nextElement();
              // CAVEAT: Implicit references to enclosing class!
              final Class[] oldargs=entryGetParameterTypes(oldEntry);
              if(areMethodConvertable(oldargs,newargs)) {
                removeElement(oldEntry); // New more specific; discard old
            } else if(areMethodConvertable(newargs,oldargs))
             {
                keep=false;     // Old more specific; discard new
              // Else they're tied. Keep both and hope someone beats both.
            }
            }
          if(keep) {
            addElement(newEntry);
        }
        }
    }