Added removeListener() and removeFilter() to Checker (bug 834367)

This commit is contained in:
Oleg Sukhodolsky 2003-11-05 04:26:12 +00:00
parent e63e42c7d6
commit 778e844080
4 changed files with 304 additions and 0 deletions

View File

@ -286,6 +286,9 @@
<li class="body">Changed HideUtiliyConstructor behaviour for classes
that do not extend java.lang.Object directly (partial fix for bug 824754)</li>
<li class="body">Added Checker.removeListener() (fix for
834367)</li>
</ul>
<p class="body">

View File

@ -237,10 +237,20 @@ public class Checker extends AutomaticBean
mFilters.addFilter(aFilter);
}
/**
* Removes filter.
* @param aFilter filter to remove.
*/
public void removeFilter(Filter aFilter)
{
mFilters.removeFilter(aFilter);
}
/** Cleans up the object. **/
public void destroy()
{
mListeners.clear();
mFilters.clear();
}
/**
@ -252,6 +262,15 @@ public class Checker extends AutomaticBean
mListeners.add(aListener);
}
/**
* Removes a given listener.
* @param aListener a listener to remove
*/
public void removeListener(AuditListener aListener)
{
mListeners.remove(aListener);
}
/**
* Processes a set of files with all FileSetChecks.
* Once this is done, it is highly recommended to call for

View File

@ -43,6 +43,15 @@ public class FilterSet
mFilters.add(aFilter);
}
/**
* Removes filter.
* @param aFilter filter to remove.
*/
public void removeFilter(Filter aFilter)
{
mFilters.remove(aFilter);
}
/**
* Returns the Filters of the filter set.
* @return the Filters of the filter set.
@ -88,4 +97,10 @@ public class FilterSet
}
return true;
}
/** Clears the FilterSet. */
public void clear()
{
mFilters.clear();
}
}

View File

@ -4,6 +4,12 @@ import java.io.File;
import junit.framework.TestCase;
import com.puppycrawl.tools.checkstyle.api.AuditEvent;
import com.puppycrawl.tools.checkstyle.api.AuditListener;
import com.puppycrawl.tools.checkstyle.api.CheckstyleException;
import com.puppycrawl.tools.checkstyle.api.Filter;
import com.puppycrawl.tools.checkstyle.api.LocalizedMessage;
public class CheckerTest extends TestCase
{
public void testDosBasedir() throws Exception
@ -31,4 +37,265 @@ public class CheckerTest extends TestCase
assertEquals(testinputs_dir + "coding", c.getBasedir());
}
public void testDestroy() throws Exception
{
DebugChecker c= new DebugChecker();
DebugAuditAdapter aa = new DebugAuditAdapter();
c.addListener(aa);
DebugFilter f = new DebugFilter();
c.addFilter(f);
c.destroy(); // should remove al listeners and filters
// Let's try fire some events
c.fireAuditStarted();
c.fireAuditFinished();
c.fireFileStarted("Some File Name");
c.fireFileFinished("Some File Name");
LocalizedMessage[] msgs = new LocalizedMessage[1];
msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
new Object[] {"arg"},
getClass());
c.fireErrors("Some File Name", msgs);
assertFalse("Checker.destroy() doesn't remove listeners.", aa.wasCalled());
assertFalse("Checker.destroy() doesn't remove filters.", f.wasCalled());
}
public void testAddListener() throws Exception
{
DebugChecker c= new DebugChecker();
DebugAuditAdapter aa = new DebugAuditAdapter();
c.addListener(aa);
// Let's try fire some events
c.fireAuditStarted();
assertTrue("Checker.fireAuditStarted() doesn't call listener", aa.wasCalled());
aa.resetListener();
c.fireAuditFinished();
assertTrue("Checker.fireAuditFinished() doesn't call listener", aa.wasCalled());
aa.resetListener();
c.fireFileStarted("Some File Name");
assertTrue("Checker.fireFileStarted() doesn't call listener", aa.wasCalled());
aa.resetListener();
c.fireFileFinished("Some File Name");
assertTrue("Checker.fireFileFinished() doesn't call listener", aa.wasCalled());
aa.resetListener();
LocalizedMessage[] msgs = new LocalizedMessage[1];
msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
new Object[] {"arg"},
getClass());
c.fireErrors("Some File Name", msgs);
assertTrue("Checker.fireErrors() doesn't call listener", aa.wasCalled());
}
public void testRemoveListener() throws Exception
{
DebugChecker c= new DebugChecker();
DebugAuditAdapter aa = new DebugAuditAdapter();
DebugAuditAdapter aa2 = new DebugAuditAdapter();
c.addListener(aa);
c.addListener(aa2);
c.removeListener(aa);
// Let's try fire some events
c.fireAuditStarted();
assertTrue("Checker.fireAuditStarted() doesn't call listener", aa2.wasCalled());
assertFalse("Checker.fireAuditStarted() does call removed listener", aa.wasCalled());
aa2.resetListener();
c.fireAuditFinished();
assertTrue("Checker.fireAuditFinished() doesn't call listener", aa2.wasCalled());
assertFalse("Checker.fireAuditFinished() does call removed listener", aa.wasCalled());
aa2.resetListener();
c.fireFileStarted("Some File Name");
assertTrue("Checker.fireFileStarted() doesn't call listener", aa2.wasCalled());
assertFalse("Checker.fireFileStarted() does call removed listener", aa.wasCalled());
aa2.resetListener();
c.fireFileFinished("Some File Name");
assertTrue("Checker.fireFileFinished() doesn't call listener", aa2.wasCalled());
assertFalse("Checker.fireFileFinished() does call removed listener", aa.wasCalled());
aa2.resetListener();
LocalizedMessage[] msgs = new LocalizedMessage[1];
msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
new Object[] {"arg"},
getClass());
c.fireErrors("Some File Name", msgs);
assertTrue("Checker.fireErrors() doesn't call listener", aa2.wasCalled());
assertFalse("Checker.fireErrors() does call removed listener", aa.wasCalled());
}
public void testAddFilter() throws Exception
{
DebugChecker c= new DebugChecker();
DebugFilter f = new DebugFilter();
c.addFilter(f);
// Let's try fire some events
c.fireAuditStarted();
assertTrue("Checker.fireAuditStarted() doesn't call filter", f.wasCalled());
f.resetFilter();
c.fireAuditFinished();
assertTrue("Checker.fireAuditFinished() doesn't call filter", f.wasCalled());
f.resetFilter();
c.fireFileStarted("Some File Name");
assertTrue("Checker.fireFileStarted() doesn't call filter", f.wasCalled());
f.resetFilter();
c.fireFileFinished("Some File Name");
assertTrue("Checker.fireFileFinished() doesn't call filter", f.wasCalled());
f.resetFilter();
LocalizedMessage[] msgs = new LocalizedMessage[1];
msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
new Object[] {"arg"},
getClass());
c.fireErrors("Some File Name", msgs);
assertTrue("Checker.fireErrors() doesn't call filter", f.wasCalled());
}
public void testRemoveFilter() throws Exception
{
DebugChecker c= new DebugChecker();
DebugFilter f = new DebugFilter();
DebugFilter f2 = new DebugFilter();
c.addFilter(f);
c.addFilter(f2);
c.removeFilter(f);
// Let's try fire some events
c.fireAuditStarted();
assertTrue("Checker.fireAuditStarted() doesn't call filter", f2.wasCalled());
assertFalse("Checker.fireAuditStarted() does call removed filter", f.wasCalled());
f2.resetFilter();
c.fireAuditFinished();
assertTrue("Checker.fireAuditFinished() doesn't call filter", f2.wasCalled());
assertFalse("Checker.fireAuditFinished() does call removed filter", f.wasCalled());
f2.resetFilter();
c.fireFileStarted("Some File Name");
assertTrue("Checker.fireFileStarted() doesn't call filter", f2.wasCalled());
assertFalse("Checker.fireFileStarted() does call removed filter", f.wasCalled());
f2.resetFilter();
c.fireFileFinished("Some File Name");
assertTrue("Checker.fireFileFinished() doesn't call filter", f2.wasCalled());
assertFalse("Checker.fireFileFinished() does call removed filter", f.wasCalled());
f2.resetFilter();
LocalizedMessage[] msgs = new LocalizedMessage[1];
msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
new Object[] {"arg"},
getClass());
c.fireErrors("Some File Name", msgs);
assertTrue("Checker.fireErrors() doesn't call filter", f2.wasCalled());
assertFalse("Checker.fireErrors() does call removed filter", f.wasCalled());
}
}
// Utility classes
class DebugChecker extends Checker
{
public DebugChecker() throws CheckstyleException
{
super();
}
public void fireAuditFinished()
{
super.fireAuditFinished();
}
public void fireAuditStarted()
{
super.fireAuditStarted();
}
}
class DebugAuditAdapter implements AuditListener
{
/** keeps track of the number of errors */
private boolean mCalled;
public boolean wasCalled()
{
return mCalled;
}
public void resetListener()
{
mCalled = false;
}
/** @see AuditListener */
public void addError(AuditEvent aEvt)
{
mCalled = true;
}
/** @see AuditListener */
public void addException(AuditEvent aEvt, Throwable aThrowable)
{
mCalled = true;
}
/** @see AuditListener */
public void auditStarted(AuditEvent aEvt)
{
mCalled = true;
}
/** @see AuditListener */
public void fileStarted(AuditEvent aEvt)
{
mCalled = true;
}
/** @see AuditListener */
public void auditFinished(AuditEvent aEvt)
{
mCalled = true;
}
/** @see AuditListener */
public void fileFinished(AuditEvent aEvt)
{
mCalled = true;
}
}
class DebugFilter implements Filter
{
private boolean mCalled;
public boolean accept(Object aObject)
{
mCalled = true;
return true;
}
public boolean wasCalled()
{
return mCalled;
}
public void resetFilter()
{
mCalled = false;
}
}