Author: sdeboy
Date: Fri Oct 15 07:19:21 2010
New Revision: 1022842
URL: http://svn.apache.org/viewvc?rev=1022842&view=rev
Log:
Performance improvements
- only applying find rule filtering from mediator if find rule filtering is
required
- no longer refiltering when properties are added or removed
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/RuleMediator.java
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java?rev=1022842&r1=1022841&r2=1022842&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
(original)
+++
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
Fri Oct 15 07:19:21 2010
@@ -86,12 +86,12 @@ class ChainsawCyclicBufferTableModel ext
//use and increment this row counter as the ID for each received row
int uniqueRow;
private final Set uniquePropertyKeys = new HashSet();
- private Rule displayRule;
+ private Rule ruleMediator;
private final PropertyChangeSupport propertySupport = new
PropertyChangeSupport(this);
private RuleColorizer colorizer;
private final String tableModelName;
- public ChainsawCyclicBufferTableModel(int cyclicBufferSize, RuleColorizer
colorizer, String tableModelName) {
+ public ChainsawCyclicBufferTableModel(int cyclicBufferSize, RuleColorizer
colorizer, String tableModelName) {
propertySupport.addPropertyChangeListener("cyclic", new ModelChanger());
this.cyclicBufferSize = cyclicBufferSize;
this.colorizer = colorizer;
@@ -106,12 +106,18 @@ class ChainsawCyclicBufferTableModel ext
*/
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getSource() instanceof Rule) {
- reFilter();
+ if (evt.getSource() == ruleMediator &&
evt.getPropertyName().equals("findRule")) {
+ if (((RuleMediator) evt.getSource()).isFindRuleRequired()) {
+ //only refilter if find rule is required
+ reFilter();
+ }
+ } else {
+ reFilter();
+ }
}
}
public List getMatchingEvents(Rule rule) {
-
List list = new ArrayList();
List unfilteredCopy;
synchronized (mutex) {
@@ -138,7 +144,7 @@ class ChainsawCyclicBufferTableModel ext
propertySupport.firePropertyChange("refilter", Boolean.FALSE,
Boolean.TRUE);
previousSize = filteredList.size();
filteredList.clear();
- if (displayRule == null) {
+ if (ruleMediator == null) {
LoggingEventWrapper lastEvent = null;
for (Iterator iter =
unfilteredList.iterator();iter.hasNext();) {
LoggingEventWrapper loggingEventWrapper =
(LoggingEventWrapper)iter.next();
@@ -153,7 +159,7 @@ class ChainsawCyclicBufferTableModel ext
while (iter.hasNext()) {
LoggingEventWrapper loggingEventWrapper =
(LoggingEventWrapper) iter.next();
- if
(displayRule.evaluate(loggingEventWrapper.getLoggingEvent(), null)) {
+ if
(ruleMediator.evaluate(loggingEventWrapper.getLoggingEvent(), null)) {
loggingEventWrapper.setDisplayed(true);
filteredList.add(loggingEventWrapper);
updateEventMillisDelta(loggingEventWrapper, lastEvent);
@@ -302,17 +308,16 @@ class ChainsawCyclicBufferTableModel ext
*
* In any case, the model ensures the Filtered list is made up to date in a
separate thread.
*/
- public void setDisplayRule(Rule displayRule) {
- if (this.displayRule != null) {
- this.displayRule.removePropertyChangeListener(this);
+ public void setRuleMediator(RuleMediator ruleMediator) {
+ if (this.ruleMediator != null) {
+ this.ruleMediator.removePropertyChangeListener(this);
}
- this.displayRule = displayRule;
+ this.ruleMediator = ruleMediator;
- if (this.displayRule != null) {
- this.displayRule.addPropertyChangeListener(this);
+ if (this.ruleMediator != null) {
+ this.ruleMediator.addPropertyChangeListener(this);
}
-
reFilter();
}
@@ -636,7 +641,7 @@ class ChainsawCyclicBufferTableModel ext
lastLoggingEventWrapper = (LoggingEventWrapper)
unfilteredList.get(unfilteredSize - 1);
}
unfilteredList.add(loggingEventWrapper);
- if ((displayRule == null) ||
(displayRule.evaluate(loggingEventWrapper.getLoggingEvent(), null))) {
+ if ((ruleMediator == null) ||
(ruleMediator.evaluate(loggingEventWrapper.getLoggingEvent(), null))) {
loggingEventWrapper.setDisplayed(true);
updateEventMillisDelta(loggingEventWrapper,
lastLoggingEventWrapper);
filteredList.add(loggingEventWrapper);
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java?rev=1022842&r1=1022841&r2=1022842&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
(original)
+++
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
Fri Oct 15 07:19:21 2010
@@ -145,10 +145,10 @@ public interface EventContainer extends
*/
void reFilter();
/**
- * Sets the DisplayFilter in operation
- * @param displayRule
+ * Sets the RuleMediator in operation
+ * @param ruleMediator
*/
- void setDisplayRule(Rule displayRule);
+ void setRuleMediator(RuleMediator ruleMediator);
/**
* Returns the index of the LoggingEventWrapper
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java?rev=1022842&r1=1022841&r2=1022842&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
(original)
+++
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
Fri Oct 15 07:19:21 2010
@@ -727,8 +727,8 @@ public class LogPanel extends DockablePa
* Set the Display rule to use the mediator, the model will add itself as
* a property change listener and update itself when the rule changes.
*/
- tableModel.setDisplayRule(tableRuleMediator);
- searchModel.setDisplayRule(searchRuleMediator);
+ tableModel.setRuleMediator(tableRuleMediator);
+ searchModel.setRuleMediator(searchRuleMediator);
tableModel.addEventCountListener(
new EventCountListener() {
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java?rev=1022842&r1=1022841&r2=1022842&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
(original)
+++
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
Fri Oct 15 07:19:21 2010
@@ -82,28 +82,20 @@ public class LoggingEventWrapper {
public void setProperty(String propName, String propValue) {
loggingEvent.setProperty(propName, propValue);
- if (propName.equals(Constants.LOG4J_ID_KEY)) {
- id = Integer.parseInt(propValue);
- }
- if (!propName.equals(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE)) {
- eventContainer.reFilter();
+ if (id == 0) {
+ if (propName.equals(Constants.LOG4J_ID_KEY)) {
+ id = Integer.parseInt(propValue);
+ }
}
if (syncWrapper != null &&
!propName.equals(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE)) {
syncWrapper.getLoggingEvent().setProperty(propName, propValue);
- EventContainer syncWrapperEventContainer = syncWrapper.eventContainer;
- syncWrapperEventContainer.reFilter();
}
}
public Object removeProperty(String propName) {
Object result = loggingEvent.removeProperty(propName);
- if (!propName.equals(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE)) {
- eventContainer.reFilter();
- }
if (syncWrapper != null &&
!propName.equals(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE)) {
syncWrapper.getLoggingEvent().removeProperty(propName);
- EventContainer syncWrapperEventContainer = syncWrapper.eventContainer;
- syncWrapperEventContainer.reFilter();
}
return result;
}
@@ -170,9 +162,6 @@ public class LoggingEventWrapper {
public void setDisplayed(boolean b) {
markerHeight = DEFAULT_HEIGHT;
msgHeight = DEFAULT_HEIGHT;
- if (!b) {
- setProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE, "");
- }
}
public void setPreviousDisplayedEventTimestamp(long
previousDisplayedEventTimeStamp) {
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/RuleMediator.java
URL:
http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/RuleMediator.java?rev=1022842&r1=1022841&r2=1022842&view=diff
==============================================================================
---
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/RuleMediator.java
(original)
+++
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/RuleMediator.java
Fri Oct 15 07:19:21 2010
@@ -70,6 +70,10 @@ public class RuleMediator extends Abstra
return true;
}
+ public boolean isFindRuleRequired() {
+ return findRuleRequired;
+ }
+
public void setFilterRule(Rule r) {
Rule oldFilterRule = this.filterRule;
this.filterRule = r;