You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2008/04/07 13:04:51 UTC
svn commit: r645459 - in
/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring:
listeners/ reporting/
Author: nicolas
Date: Mon Apr 7 04:04:48 2008
New Revision: 645459
URL: http://svn.apache.org/viewvc?rev=645459&view=rev
Log:
Add date (long) of secondary repository attachement/detachement from observed repository
change PeriodicLogger to explicitly use a SecondaryRepository
Repository Decorator for historization
Added:
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java (with props)
Modified:
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/SecondaryRepository.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java
Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java?rev=645459&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java (added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java Mon Apr 7 04:04:48 2008
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.monitoring.listeners;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.monitoring.Monitor;
+import org.apache.commons.monitoring.Repository;
+import org.apache.commons.monitoring.StopWatch;
+import org.apache.commons.monitoring.Repository.Listener;
+import org.apache.commons.monitoring.Repository.Observable;
+import org.apache.commons.monitoring.reporting.AbstractPeriodicLogger;
+
+/**
+ *
+ * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
+ */
+public class HistorizedRepositoryDecorator extends AbstractPeriodicLogger
+{
+ /** The decorated repository */
+ private Repository.Observable repository;
+
+ private List<SecondaryRepository> history;
+
+ private int size;
+
+ @SuppressWarnings("serial")
+ public HistorizedRepositoryDecorator( long period, final int size, Observable repository )
+ {
+ super( period, repository );
+ this.repository = repository;
+ this.size = size;
+ this.history = new LinkedList<SecondaryRepository>();
+ }
+
+ /**
+ * Store the period Repository into the history Map, using System.currentTimeMillis().
+ * <p>
+ * {@inheritDoc}
+ * @see org.apache.commons.monitoring.reporting.AbstractPeriodicLogger#log(SecondaryRepository)
+ */
+ @Override
+ protected void log( SecondaryRepository period )
+ throws IOException
+ {
+ history.add( period );
+ while (history.size() > size)
+ {
+ history.remove( history.size() );
+ }
+ }
+
+ public void addListener( Listener listener )
+ {
+ repository.addListener( listener );
+ }
+
+ public Set<String> getCategories()
+ {
+ return repository.getCategories();
+ }
+
+ public Monitor getMonitor( String name, String category, String subsystem )
+ {
+ return repository.getMonitor( name, category, subsystem );
+ }
+
+ public Monitor getMonitor( String name, String category )
+ {
+ return repository.getMonitor( name, category );
+ }
+
+ public Monitor getMonitor( String name )
+ {
+ return repository.getMonitor( name );
+ }
+
+ public Collection<Monitor> getMonitors()
+ {
+ return repository.getMonitors();
+ }
+
+ public Collection<Monitor> getMonitorsFromCategory( String category )
+ {
+ return repository.getMonitorsFromCategory( category );
+ }
+
+ public Collection<Monitor> getMonitorsFromSubSystem( String subsystem )
+ {
+ return repository.getMonitorsFromSubSystem( subsystem );
+ }
+
+ public Set<String> getSubSystems()
+ {
+ return repository.getSubSystems();
+ }
+
+ public void removeListener( Listener listener )
+ {
+ repository.removeListener( listener );
+ }
+
+ public void reset()
+ {
+ repository.reset();
+ }
+
+ public StopWatch start( Monitor monitor )
+ {
+ return repository.start( monitor );
+ }
+
+ public List<SecondaryRepository> getHistory()
+ {
+ return history;
+ }
+}
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/SecondaryRepository.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/SecondaryRepository.java?rev=645459&r1=645458&r2=645459&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/SecondaryRepository.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/SecondaryRepository.java Mon Apr 7 04:04:48 2008
@@ -41,10 +41,15 @@
private boolean detached;
+ private long attachedAt;
+
+ private long detachedAt;
+
public SecondaryRepository( Repository.Observable repository )
{
super();
this.repository = repository;
+ this.attachedAt = System.currentTimeMillis();
this.detached = false;
for ( Monitor monitor : repository.getMonitors() )
{
@@ -64,6 +69,7 @@
{
( (Detachable) monitor ).detach();
}
+ this.detachedAt = System.currentTimeMillis();
}
/**
@@ -79,10 +85,29 @@
/**
* {@inheritDoc}
+ *
* @see org.apache.commons.monitoring.Repository#start(org.apache.commons.monitoring.Monitor)
*/
public StopWatch start( Monitor monitor )
{
throw new UnsupportedOperationException( "Not available on a secondary repository" );
+ }
+
+ /**
+ * @return When (as a System.currentTimeMillis() time) the
+ * SecondaryRepository started to observe the repository
+ */
+ public long getAttachedAt()
+ {
+ return attachedAt;
+ }
+
+ /**
+ * @return When (as a System.currentTimeMillis() time) the
+ * SecondaryRepository stopped observing the repository
+ */
+ public long getDetachedAt()
+ {
+ return detachedAt;
}
}
Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java?rev=645459&r1=645458&r2=645459&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java Mon Apr 7 04:04:48 2008
@@ -105,5 +105,5 @@
* Log the data from the (secondary) repository generated during the period
* @param period secondary repository that observed the monitored state during the last active period
*/
- protected abstract void log( Repository period ) throws IOException;
+ protected abstract void log( SecondaryRepository period ) throws IOException;
}
Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java?rev=645459&r1=645458&r2=645459&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java Mon Apr 7 04:04:48 2008
@@ -22,6 +22,7 @@
import java.util.List;
import org.apache.commons.monitoring.Repository;
+import org.apache.commons.monitoring.listeners.SecondaryRepository;
/**
* A periodic logger implementation that uses a set of selector to extract
@@ -70,7 +71,7 @@
* during the last active period
*/
@Override
- protected final void log( Repository period )
+ protected final void log( SecondaryRepository period )
throws IOException
{
Object[] values = new Object[selectors.length];