From: Alexey L. <lou...@us...> - 2004-05-01 15:58:44
|
User: loubyansky Date: 04/05/01 08:58:34 Modified: varia/src/main/org/jboss/varia/stats Tag: Branch_3_2 AbstractStatisticalItem.java StatisticalItem.java TxReport.java TxStatisticsInterceptor.java Log: fixed min/max count per tx, some more statistics Revision Changes Path No revision No revision 1.1.2.4 +10 -3 contrib/varia/src/main/org/jboss/varia/stats/Attic/AbstractStatisticalItem.java Index: AbstractStatisticalItem.java =================================================================== RCS file: /cvsroot/jboss/contrib/varia/src/main/org/jboss/varia/stats/Attic/AbstractStatisticalItem.java,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -u -r1.1.2.3 -r1.1.2.4 --- AbstractStatisticalItem.java 1 May 2004 14:35:38 -0000 1.1.2.3 +++ AbstractStatisticalItem.java 1 May 2004 15:58:34 -0000 1.1.2.4 @@ -9,7 +9,7 @@ /** * @author <a href="mailto:al...@jb...">Alexey Loubyansky</a> - * @version <tt>$Revision: 1.1.2.3 $</tt> + * @version <tt>$Revision: 1.1.2.4 $</tt> */ public abstract class AbstractStatisticalItem implements StatisticalItem @@ -38,12 +38,12 @@ public int getMinCountPerTx() { - return minCountPerTx; + return minCountPerTx == Integer.MAX_VALUE ? count : minCountPerTx; } public int getMaxCountPerTx() { - return maxCountPerTx; + return maxCountPerTx == 0 ? count : maxCountPerTx; } public int getCount() @@ -65,6 +65,7 @@ public void merge(StatisticalItem item) { add(item); + ++mergedItemsTotal; int count = item.getCount(); @@ -79,6 +80,12 @@ } } + public void mergeNull() + { + ++mergedItemsTotal; + minCountPerTx = 0; + } + public int getMergedItemsTotal() { return mergedItemsTotal; 1.1.2.4 +4 -2 contrib/varia/src/main/org/jboss/varia/stats/Attic/StatisticalItem.java Index: StatisticalItem.java =================================================================== RCS file: /cvsroot/jboss/contrib/varia/src/main/org/jboss/varia/stats/Attic/StatisticalItem.java,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -u -r1.1.2.3 -r1.1.2.4 --- StatisticalItem.java 1 May 2004 14:35:38 -0000 1.1.2.3 +++ StatisticalItem.java 1 May 2004 15:58:34 -0000 1.1.2.4 @@ -9,10 +9,10 @@ import java.io.Serializable; /** - * todo: this should be devided into StatisticalItemReport and StatisticalItem + * todo: this should be devided into StatisticalItemMerger and StatisticalItem * * @author <a href="mailto:al...@jb...">Alexey Loubyansky</a> - * @version <tt>$Revision: 1.1.2.3 $</tt> + * @version <tt>$Revision: 1.1.2.4 $</tt> */ public interface StatisticalItem extends Serializable @@ -31,5 +31,7 @@ public void merge(StatisticalItem item); + public void mergeNull(); + public int getMergedItemsTotal(); } 1.1.2.5 +21 -6 contrib/varia/src/main/org/jboss/varia/stats/Attic/TxReport.java Index: TxReport.java =================================================================== RCS file: /cvsroot/jboss/contrib/varia/src/main/org/jboss/varia/stats/Attic/TxReport.java,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -u -r1.1.2.4 -r1.1.2.5 --- TxReport.java 1 May 2004 14:35:38 -0000 1.1.2.4 +++ TxReport.java 1 May 2004 15:58:34 -0000 1.1.2.5 @@ -13,7 +13,7 @@ /** * @author <a href="mailto:al...@jb...">Alexey Loubyansky</a> - * @version <tt>$Revision: 1.1.2.4 $</tt> + * @version <tt>$Revision: 1.1.2.5 $</tt> */ public class TxReport implements Serializable @@ -67,6 +67,9 @@ return addedNew; } + /** + * This method destroys txReport parameter!!! Not really a nice implementation. + */ public void merge(TxReport txReport) { for(Iterator iter = txReport.stats.entrySet().iterator(); iter.hasNext();) @@ -83,19 +86,31 @@ } else { - for(Iterator itemIter = itemMap.values().iterator(); itemIter.hasNext();) + // first merge common items + for(Iterator myItems = myMap.values().iterator(); myItems.hasNext();) { - StatisticalItem newItem = (StatisticalItem) itemIter.next(); - StatisticalItem myItem = (StatisticalItem) myMap.get(newItem.getValue()); - if(myItem == null) + StatisticalItem myItem = (StatisticalItem) myItems.next(); + StatisticalItem newItem = (StatisticalItem) itemMap.remove(myItem.getValue()); + + if(newItem == null) { - myMap.put(newItem.getValue(), newItem); + myItem.mergeNull(); } else { myItem.merge(newItem); } } + + // add new items + if(!itemMap.isEmpty()) + { + for(Iterator newItems = itemMap.values().iterator(); newItems.hasNext();) + { + StatisticalItem newItem = (StatisticalItem) newItems.next(); + myMap.put(newItem.getValue(), newItem); + } + } } } 1.1.2.2 +41 -17 contrib/varia/src/main/org/jboss/varia/stats/Attic/TxStatisticsInterceptor.java Index: TxStatisticsInterceptor.java =================================================================== RCS file: /cvsroot/jboss/contrib/varia/src/main/org/jboss/varia/stats/Attic/TxStatisticsInterceptor.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- TxStatisticsInterceptor.java 29 Apr 2004 14:26:03 -0000 1.1.2.1 +++ TxStatisticsInterceptor.java 1 May 2004 15:58:34 -0000 1.1.2.2 @@ -8,7 +8,9 @@ import org.jboss.ejb.plugins.AbstractInterceptor; import org.jboss.invocation.Invocation; +import org.jboss.invocation.InvocationType; import org.jboss.metadata.XmlLoadable; +import org.jboss.metadata.BeanMetaData; import org.jboss.deployment.DeploymentException; import org.jboss.mx.util.MBeanServerLocator; import org.w3c.dom.Element; @@ -20,7 +22,7 @@ /** * @author <a href="mailto:al...@jb...">Alexey Loubyansky</a> - * @version <tt>$Revision: 1.1.2.1 $</tt> + * @version <tt>$Revision: 1.1.2.2 $</tt> */ public class TxStatisticsInterceptor extends AbstractInterceptor @@ -29,6 +31,11 @@ private MBeanServer server; private ObjectName serviceName; + private String local; + private String localHome; + private String remote; + private String home; + // XmlLoadable implementation public void importXml(Element element) throws Exception @@ -45,36 +52,53 @@ // Interceptor implementation + public void start() + { + BeanMetaData bean = container.getBeanMetaData(); + local = bean.getLocal(); + localHome = bean.getLocalHome(); + remote = bean.getRemote(); + home = bean.getHome(); + } + public Object invokeHome(final Invocation mi) throws Exception { - logInvocation(mi); + Method method = mi.getMethod(); + if(method != null) + { + String className = mi.getType() == InvocationType.LOCALHOME ? localHome : home; + logInvocation(className + "." + method.getName()); + } + return super.invokeHome(mi); } public Object invoke(final Invocation mi) throws Exception { - logInvocation(mi); + Method method = mi.getMethod(); + if(method != null) + { + String className = mi.getType() == InvocationType.LOCAL ? local : remote; + logInvocation(className + "." + method.getName()); + } + return super.invoke(mi); } // Private - private void logInvocation(Invocation mi) + private void logInvocation(String method) { - Method method = mi.getMethod(); - if(method != null) + try + { + StatisticalItem item = new TxReport.MethodStats(method); + server.invoke(serviceName, "addStatisticalItem", + new Object[]{item}, + new String[]{StatisticalItem.class.getName()}); + } + catch(Exception e) { - try - { - StatisticalItem item = new TxReport.MethodStats(method.getDeclaringClass() + "." + method.getName()); - server.invoke(serviceName, "addStatisticalItem", - new Object[]{item}, - new String[]{StatisticalItem.class.getName()}); - } - catch(Exception e) - { - log.error("Failed to add invocation.", e); - } + log.error("Failed to add invocation.", e); } } } |