Revision: 21d1decc952f
Author: troy.k...@gmail.com
Date: Tue Jul 5 10:11:22 2011
Log: Removed the Stats class as singletons are evil. StatsFactory
should be...
http://code.google.com/p/stajistics/source/detail?r=21d1decc952f
Revision: 2acc27702a03
Author: troy.k...@gmail.com
Date: Wed Jul 6 09:42:09 2011
Log: Refactored management event handling. Created the start of
TaskService...
http://code.google.com/p/stajistics/source/detail?r=2acc27702a03
Revision: 67ff94fb2134
Author: troy.k...@gmail.com
Date: Wed Jul 6 11:14:38 2011
Log: Changed TaskService to be a singleton instance rather than one
per Sta...
http://code.google.com/p/stajistics/source/detail?r=67ff94fb2134
==============================================================================
Revision: 21d1decc952f
Author: troy.k...@gmail.com
Date: Tue Jul 5 10:11:22 2011
Log: Removed the Stats class as singletons are evil. StatsFactory
should be used in client code going forward.
http://code.google.com/p/stajistics/source/detail?r=21d1decc952f
Deleted:
/stajistics-core/src/main/java/org/stajistics/Stats.java
/stajistics-core/src/test/java/org/stajistics/StatsTest.java
Modified:
/stajistics-core/src/main/java/org/stajistics/AbstractStatsKey.java
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKey.java
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKeyBuilder.java
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKeyFactory.java
/stajistics-core/src/main/java/org/stajistics/DefaultStatsManager.java
/stajistics-core/src/main/java/org/stajistics/NullStatsKey.java
/stajistics-core/src/main/java/org/stajistics/SimpleStatsKey.java
/stajistics-core/src/main/java/org/stajistics/SingleAttributeStatsKey.java
/stajistics-core/src/main/java/org/stajistics/StatsFactory.java
/stajistics-core/src/main/java/org/stajistics/StatsKey.java
/stajistics-core/src/main/java/org/stajistics/StatsKeyFactory.java
/stajistics-core/src/main/java/org/stajistics/StatsManagerRegistry.java
/stajistics-core/src/main/java/org/stajistics/aop/LifeCycleMonitor.java
/stajistics-core/src/main/java/org/stajistics/aop/StatsDecorators.java
/stajistics-core/src/main/java/org/stajistics/aop/StatsProxy.java
/stajistics-core/src/main/java/org/stajistics/aop/StatsSelectiveProxy.java
/stajistics-core/src/main/java/org/stajistics/bootstrap/DefaultStatsManagerFactory.java
/stajistics-core/src/main/java/org/stajistics/bootstrap/StatsManagerFactory.java
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterInputStream.java
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterOutputStream.java
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterReader.java
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterWriter.java
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanUtil.java
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsConfigMXBean.java
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsSessionMXBean.java
/stajistics-core/src/main/java/org/stajistics/session/AbstractStatsSession.java
/stajistics-core/src/main/java/org/stajistics/session/AsynchronousSession.java
/stajistics-core/src/main/java/org/stajistics/session/ConcurrentSession.java
/stajistics-core/src/main/java/org/stajistics/session/DefaultSessionFactory.java
/stajistics-core/src/main/java/org/stajistics/session/DefaultSessionManager.java
/stajistics-core/src/main/java/org/stajistics/session/ImmutableSession.java
/stajistics-core/src/main/java/org/stajistics/session/StatsSessionFactory.java
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractTracker.java
/stajistics-core/src/main/java/org/stajistics/tracker/Tracker.java
/stajistics-core/src/main/java/org/stajistics/tracker/incident/DefaultIncidentTracker.java
/stajistics-core/src/main/java/org/stajistics/tracker/manual/DefaultManualTracker.java
/stajistics-core/src/main/java/org/stajistics/tracker/span/AbstractSpanTracker.java
/stajistics-core/src/main/java/org/stajistics/util/Misc.java
/stajistics-core/src/test/java/org/stajistics/AbstractStajisticsTestCase.java
/stajistics-core/src/test/java/org/stajistics/AbstractStatsKeyTestCase.java
/stajistics-core/src/test/java/org/stajistics/DefaultStatsKeyBuilderTest.java
/stajistics-core/src/test/java/org/stajistics/DefaultStatsKeyTest.java
/stajistics-core/src/test/java/org/stajistics/DefaultStatsManagerTest.java
/stajistics-core/src/test/java/org/stajistics/Issue31Test.java
/stajistics-core/src/test/java/org/stajistics/Issue32Test.java
/stajistics-core/src/test/java/org/stajistics/SimpleStatsKeyTest.java
/stajistics-core/src/test/java/org/stajistics/SingleAttributeStatsKeyTest.java
/stajistics-core/src/test/java/org/stajistics/StajisticsAssert.java
/stajistics-core/src/test/java/org/stajistics/StatsFactoryTest.java
/stajistics-core/src/test/java/org/stajistics/StatsKeyMatcherMatchTest.java
/stajistics-core/src/test/java/org/stajistics/TestApp.java
/stajistics-core/src/test/java/org/stajistics/TestUtil.java
/stajistics-core/src/test/java/org/stajistics/aop/StatsDecoratorsTest.java
/stajistics-core/src/test/java/org/stajistics/aop/StatsProxyTest.java
/stajistics-core/src/test/java/org/stajistics/aop/StatsSelectiveProxyTest.java
/stajistics-core/src/test/java/org/stajistics/bootstrap/AbstractStatsManagerFactoryTestCase.java
/stajistics-core/src/test/java/org/stajistics/configuration/DefaultStatsConfigManagerTest.java
/stajistics-core/src/test/java/org/stajistics/management/StatsKeyOpenTypeConverterTest.java
/stajistics-core/src/test/java/org/stajistics/management/StatsManagementFactoryTest.java
/stajistics-core/src/test/java/org/stajistics/management/beans/DefaultStatsConfigMXBeanTest.java
/stajistics-core/src/test/java/org/stajistics/management/beans/DefaultStatsSessionMXBeanTest.java
/stajistics-core/src/test/java/org/stajistics/session/AbstractStatsSessionManagerTestCase.java
/stajistics-core/src/test/java/org/stajistics/session/AsynchronousSessionTest.java
/stajistics-core/src/test/java/org/stajistics/session/DefaultSessionFactoryTest.java
/stajistics-core/src/test/java/org/stajistics/tracker/AbstractTrackerTestCase.java
/stajistics-core/src/test/java/org/stajistics/tracker/incident/DefaultIncidentTrackerTest.java
/stajistics-core/src/test/java/org/stajistics/tracker/span/AbstractSpanTrackerTestCase.java
=======================================
--- /stajistics-core/src/main/java/org/stajistics/Stats.java Fri Jun 24
05:48:14 2011
+++ /dev/null
@@ -1,453 +0,0 @@
-/* Copyright 2009 - 2010 The Stajistics Project
- *
- * Licensed 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.stajistics;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.stajistics.bootstrap.DefaultStatsManagerFactory;
-import org.stajistics.bootstrap.StatsManagerFactory;
-import org.stajistics.configuration.StatsConfigBuilder;
-import org.stajistics.configuration.StatsConfigManager;
-import org.stajistics.event.EventManager;
-import org.stajistics.session.StatsSessionManager;
-import org.stajistics.tracker.NullTracker;
-import org.stajistics.tracker.Tracker;
-import org.stajistics.tracker.TrackerLocator;
-import org.stajistics.tracker.incident.IncidentTracker;
-import org.stajistics.tracker.manual.ManualTracker;
-import org.stajistics.tracker.span.SpanTracker;
-
-/**
- * <p>A facade to the Stajistics core API. Maintains a singleton default
instance of a
- * {@link StatsManager}. Provides static convenience methods for
manipulating the
- * underlying API.</p>
- *
- * <p>The methods in this class that return {@link Tracker} instances do
not throw
- * Exceptions, checked nor unchecked. Rather, these methods catch and log
Exceptions and return
- * a no-operation {@link Tracker} instance. The necessity in this design
is to shield a
- * client application from any problems related to invoking statistics
collection, possibly caused
- * by misconfiguration. To bypass this Exception-swallowing behaviour, the
use of this facade
- * can be discarded and the underlying API can be accessed directly.</p>
- *
- * @author The Stajistics Project
- */
-public final class Stats {
-
- private static final Logger logger =
LoggerFactory.getLogger(Stats.class);
-
- private static volatile StatsManager manager;
- private static volatile StatsFactory factory;
-
- /**
- * Specify the sole default {@link StatsManager} instance, replacing
any existing instance.
- *
- * @param manager The {@link StatsManager} instance to use.
- * @see #getManager()
- */
- public static synchronized void loadManager(final StatsManager
manager) {
- if (manager == null) {
- throw new NullPointerException("manager");
- }
-
- if (Stats.manager != null) {
- logger.debug("A Stats manager has already been loaded.
Replacing existing: {}",
- Stats.manager);
- }
-
- logger.debug("Loaded: {}: {}", StatsManager.class.getSimpleName(),
manager);
-
- Stats.manager = manager;
- Stats.factory = new StatsFactory(manager);
- }
-
- /**
- * Obtain the sole {@link StatsManager} instance.
- * The sole StatsManager instance can be specified using the {@link
#loadManager(StatsManager)} method.
- * If an instance has not previously been loaded, a call to this
method will
- * instantiate and load a {@link DefaultStatsManager}.
- *
- * @return A StatsManager instance, never <tt>null</tt>.
- * @see #loadManager(StatsManager)
- */
- public static StatsManager getManager() {
- if (manager == null) {
- synchronized (Stats.class) {
- if (manager == null) {
- loadManager(loadDefaultStatsManager());
- }
- }
- }
-
- return manager;
- }
-
- private static StatsFactory getFactory() {
- if (factory == null) {
- getManager(); // Assigns util
- }
- return factory;
- }
-
- protected static StatsManager loadDefaultStatsManager() {
-
- StatsManager manager = null;
-
- try {
- StatsManagerFactory managerFactory =
loadStatsManagerFactoryFromProperties();
- if (managerFactory != null) {
- manager = managerFactory.createManager();
- }
-
- if (manager == null) {
- manager = loadStatsManagerFromProperties();
- }
-
- } catch (Exception e) {
- logger.error("Failed to load " +
StatsManager.class.getSimpleName() +
- ": " + e.toString(),
- e);
- }
-
- if (manager == null) {
- manager = new DefaultStatsManagerFactory().createManager();
- }
-
- return manager;
- }
-
- protected static StatsManager loadStatsManagerFromProperties() throws
Exception {
- StatsManager manager = null;
-
- String managerClassName =
System.getProperty(StatsManager.class.getName());
- System.out.println("Loading StatsManager: " + managerClassName);
- if (managerClassName != null) {
- @SuppressWarnings("unchecked")
- Class<StatsManager> managerClass =
- (Class<StatsManager>)Class.forName(managerClassName);
-
- manager = managerClass.newInstance();
- }
-
- return manager;
- }
-
- protected static StatsManagerFactory
loadStatsManagerFactoryFromProperties() throws Exception {
- StatsManagerFactory managerFactory = null;
-
- String managerFactoryClassName =
System.getProperty(StatsManagerFactory.class.getName());
- if (managerFactoryClassName != null) {
- @SuppressWarnings("unchecked")
- Class<StatsManagerFactory> managerFactoryClass =
-
(Class<StatsManagerFactory>)Class.forName(managerFactoryClassName);
-
- managerFactory = managerFactoryClass.newInstance();
- }
-
- return managerFactory;
- }
-
- /**
- * Get the {@link org.stajistics.configuration.StatsConfigManager}.
- *
- * @return The {@link StatsConfigManager}, never <tt>null</tt>.
- *
- * @see StatsManager#getConfigManager()
- */
- public static StatsConfigManager getConfigManager() {
- return getManager().getConfigManager();
- }
-
- /**
- * Get the {@link StatsSessionManager}.
- *
- * @return The @link StatsSessionManager}, never <tt>null</tt>.
- *
- * @see StatsManager#getSessionManager()
- */
- public static StatsSessionManager getSessionManager() {
- return getManager().getSessionManager();
- }
-
- /**
- * Get the {@link EventManager}.
- *
- * @return The {@link EventManager}, never <tt>null</tt>.
- *
- * @see StatsManager#getEventManager()
- */
- public static EventManager getEventManager() {
- return getManager().getEventManager();
- }
-
- /**
- * Determine if statistics collection is enabled.
- *
- * @return <tt>true</tt> if statistics collection is enabled,
<tt>false</tt> otherwise.
- *
- * @see StatsManager#isEnabled()
- */
- public static boolean isEnabled() {
- return getManager().isEnabled();
- }
-
- /**
- * Obtain a {@link SpanTracker} for the given <tt>keyName</tt> that
can be used
- * to collect statistics related to some span. Equivalent to calling
- * <tt>Stats.getSpanTracker(Stats.newKey(name))</tt>.
- *
- * @param keyName The key name for which to return a tracker.
- * @return A {@link SpanTracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- */
- public static SpanTracker getSpanTracker(final String keyName) {
- return getFactory().getSpanTracker(keyName);
- }
-
- /**
- * Obtain a {@link SpanTracker} for the given <tt>key</tt> that can be
used
- * to collect statistics related to some span.
- *
- * @param key The {@link StatsKey} for which to return a tracker.
- * @return A {@link SpanTracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- */
- public static SpanTracker getSpanTracker(final StatsKey key) {
- return getFactory().getSpanTracker(key);
- }
-
- /**
- * Obtain a {@link SpanTracker} for the given <tt>keys</tt> that can
be used
- * to collect statistics related to some span.
- *
- * @param keys The {@link StatsKey}s for which to return a tracker.
- * @return A {@link SpanTracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- */
- public static SpanTracker getSpanTracker(final StatsKey... keys) {
- return getFactory().getSpanTracker(keys);
- }
-
- /**
- * A convenience method equivalent to calling:
- * <tt>Stats.getSpanTracker(Stats.newKey(keyName)).track()</tt>.
- *
- * @param keyName The key name for which to return a tracker.
- * @return A {@link SpanTracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- *
- * @see TrackerLocator#getSpanTracker(StatsKey)
- * @see SpanTracker#track()
- */
- public static SpanTracker track(final String keyName) {
- return getFactory().track(keyName);
- }
-
- /**
- * A convenience method equivalent to calling:
- * <tt>Stats.getSpanTracker(key).track()</tt>
- *
- * @param key The {@link StatsKey} for which to return a tracker.
- * @return A {@link SpanTracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- *
- * @see TrackerLocator#getSpanTracker(StatsKey)
- * @see SpanTracker#track()
- */
- public static SpanTracker track(final StatsKey key) {
- return getFactory().track(key);
- }
-
- /**
- * A convenience method equivalent to calling:
- * <tt>Stats.getSpanTracker(keys).track()</tt>.
- *
- * @param keys The {@link StatsKey}s for which to return a tracker.
- * @return A {@link SpanTracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- *
- * @see TrackerLocator#getSpanTracker(StatsKey...)
- * @see SpanTracker#track()
- */
- public static SpanTracker track(final StatsKey... keys) {
- return getFactory().track(keys);
- }
-
- /**
- * Obtain an {@link IncidentTracker} for the given <tt>keyName</tt>
that can be
- * used to report incidents of events.
- *
- * @param keyName The key name for which to return an incident tracker.
- * @return An {@link IncidentTracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- *
- * @see TrackerLocator#getIncidentTracker(StatsKey)
- */
- public static IncidentTracker getIncidentTracker(final String keyName)
{
- return getFactory().getIncidentTracker(keyName);
- }
-
- /**
- * Obtain an {@link IncidentTracker} for the given <tt>key</tt> that
can be
- * used to report incidents of events.
- *
- * @param key The {@link StatsKey} for which to return an incident
tracker.
- * @return An {@link IncidentTracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- *
- * @see TrackerLocator#getIncidentTracker(StatsKey)
- */
- public static IncidentTracker getIncidentTracker(final StatsKey key) {
- return getFactory().getIncidentTracker(key);
- }
-
- /**
- * Report an incident. Equivalent to calling:
- * <tt>Stats.getIncidentTracker(Stats.newKey(keyName)).incident()</tt>.
- *
- * @param keyName The key name for which to report an incident.
- *
- * @see TrackerLocator#getIncidentTracker(StatsKey...)
- * @see IncidentTracker#incident()
- */
- public static void incident(final String keyName) {
- getFactory().incident(keyName);
- }
-
- /**
- * Report an incident. Equivalent to calling:
- * <tt>Stats.getIncidentTracker(key).incident()</tt>.
- *
- * @param key The {@link StatsKey} for which to report an incident.
- *
- * @see TrackerLocator#getIncidentTracker(StatsKey...)
- * @see IncidentTracker#incident()
- */
- public static void incident(final StatsKey key) {
- getFactory().incident(key);
- }
-
- /**
- * Report an incident. Equivalent to calling:
- * <tt>Stats.getIncidentTracker(keys).incident()</tt>.
- *
- * @param keys The {@link StatsKey}s for which to report an incident.
- *
- * @see TrackerLocator#getIncidentTracker(StatsKey...)
- * @see IncidentTracker#incident()
- */
- public static void incident(final StatsKey... keys) {
- getFactory().incident(keys);
- }
-
- /**
- * Report a failure that is represented by a Throwable.
- *
- * @param failure The Throwable that represents the failure.
- * @param keyName The key name for which to report an incident.
- */
- public static void failure(final Throwable failure,
- final String keyName) {
- getFactory().failure(failure, keyName);
- }
-
- /**
- * Report a failure that is represented by a Throwable.
- *
- * @param failure The Throwable that represents the failure.
- * @param key The {@link StatsKey} for which to report a failure.
- */
- public static void failure(final Throwable failure,
- final StatsKey key) {
- getFactory().failure(failure, key);
- }
-
- /**
- * Report a failure that is represented by a Throwable.
- *
- * @param keys The {@link StatsKey}s for which to report a failure.
- * @param failure The Throwable that represents the failure.
- */
- public static void failure(final Throwable failure,
- final StatsKey... keys) {
- getFactory().failure(failure, keys);
- }
-
- /**
- * Obtain a {@link ManualTracker} for the given key <tt>keyName</tt>
that can be
- * used to report manually collected statistics.
- *
- * @param keyName The key name for which to return a manual tracker.
- * @return A {@link Tracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- *
- * @see TrackerLocator#getManualTracker(StatsKey)
- */
- public static ManualTracker getManualTracker(final String keyName) {
- return getFactory().getManualTracker(keyName);
- }
-
- /**
- * Obtain a {@link ManualTracker} for the given <tt>key</tt> that can
be
- * used to report manually collected statistics.
- *
- * @param key The {@link StatsKey} for which to return a manual
tracker.
- * @return A {@link Tracker} instance,
- * or a {@link NullTracker} if an Exception occurred, never
<tt>null</tt>.
- *
- * @see TrackerLocator#getManualTracker(StatsKey)
- */
- public static ManualTracker getManualTracker(final StatsKey key) {
- return getFactory().getManualTracker(key);
- }
-
- /**
- * Create a new {@link StatsKey} from the given <tt>name</tt>.
- *
- * @param name The name of the key to create.
- * @return A new {@link StatsKey} instance or a {@link NullStatsKey}
- * if an Exception occurred, never <tt>null</tt>.
- *
- * @see StatsKeyFactory#createKey(String)
- */
- public static StatsKey newKey(final String name) {
- return getFactory().newKey(name);
- }
-
- /**
- * Create a new {@link StatsKeyBuilder} which can create a new {@link
StatsKey}
- * for the given <tt>name</tt>.
- *
- * @param name The name of the key that the builder will create.
- * @return A {@link StatsKeyBuilder} which can be used to define key
attributes,
- * or a {@link NullStatsKeyBuilder} if an Exception occurred,
never <tt>null</tt>.
- *
- * @see StatsKeyFactory#createKeyBuilder(StatsKey)
- */
- public static StatsKeyBuilder buildKey(final String name) {
- return getFactory().buildKey(name);
- }
-
- /**
- * Create a new {@link StatsConfigBuilder} which can assemble various
configurations.
- *
- * @return A {@link StatsKeyBuilder} which can be used to specify
configuration, never <tt>null</tt>.
- *
- * @see
org.stajistics.configuration.StatsConfigBuilderFactory#createConfigBuilder()
- */
- public static StatsConfigBuilder buildConfig() {
- return getFactory().buildConfig();
- }
-
-}
=======================================
--- /stajistics-core/src/test/java/org/stajistics/StatsTest.java Fri Jun 24
05:48:14 2011
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Copyright 2009 - 2010 The Stajistics Project
- *
- * Licensed 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.stajistics;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-
-import org.jmock.Expectations;
-import org.junit.Before;
-import org.junit.Test;
-import org.stajistics.bootstrap.StatsManagerFactory;
-import org.stajistics.configuration.StatsConfigBuilder;
-import org.stajistics.configuration.StatsConfigBuilderFactory;
-import org.stajistics.configuration.StatsConfigManager;
-import org.stajistics.event.EventManager;
-import org.stajistics.session.StatsSessionManager;
-import org.stajistics.task.TaskService;
-import org.stajistics.tracker.TrackerLocator;
-import org.stajistics.tracker.incident.IncidentTracker;
-import org.stajistics.tracker.manual.ManualTracker;
-import org.stajistics.tracker.span.SpanTracker;
-
-/**
- *
- *
- *mockTrackerLocator = mockery.mock(TrackerLocator.class);
-
- * @author The Stajistics Project
- */
-public class StatsTest extends AbstractStajisticsTestCase {
-
- private StatsManager mockManager;
- private TrackerLocator mockTrackerLocator;
-
- @Before
- public void setUp() {
- mockManager = mockery.mock(StatsManager.class);
- mockTrackerLocator = mockery.mock(TrackerLocator.class);
-
- mockery.checking(new Expectations() {{
- allowing(mockManager).getTrackerLocator();
will(returnValue(mockTrackerLocator));
- }});
-
- Stats.loadManager(mockManager);
- }
-
- @Test
- public void testGetManager() {
- assertSame(mockManager, Stats.getManager());
- }
-
- @Test
- public void testLoadManagerWithNull() {
- try {
- Stats.loadManager(null);
- } catch (NullPointerException npe) {
- assertEquals("manager", npe.getMessage());
- }
- }
-
- @Test
- public void testLoadManager() {
- Stats.loadManager(mockManager);
- assertEquals(mockManager, Stats.getManager());
- }
-
- @Test
- public void testLoadDefaultStatsManagerReturnsNotNull() {
- assertNotNull(Stats.loadDefaultStatsManager());
- }
-
- @Test
- public void testLoadStatsManagerFactoryFromProperties() throws
Exception {
- try {
- System.getProperties()
- .setProperty(StatsManagerFactory.class.getName(),
-
ClassLoadableMockStatsManagerFactory.class.getName());
-
- StatsManagerFactory factory =
Stats.loadStatsManagerFactoryFromProperties();
-
- assertNotNull(factory);
- assertInstanceOf(factory,
ClassLoadableMockStatsManagerFactory.class);
-
- } finally {
- System.getProperties()
- .remove(StatsManagerFactory.class.getName());
- }
- }
-
- @Test
- public void testLoadStatsManagerFromProperties() throws Exception {
- try {
- System.getProperties()
- .setProperty(StatsManager.class.getName(),
-
ClassLoadableMockStatsManager.class.getName());
-
- StatsManager mgr = Stats.loadStatsManagerFromProperties();
-
- assertNotNull(mgr);
- assertInstanceOf(mgr, ClassLoadableMockStatsManager.class);
-
- } finally {
- System.getProperties()
- .remove(StatsManager.class.getName());
- }
- }
-
- @Test(expected = ClassNotFoundException.class)
- public void testLoadInvalidStatsManagerFromProperties() throws
Exception {
-
- try {
- System.getProperties()
- .setProperty(StatsManager.class.getName(),
- "org.stajistics.DoesntExistAtAllInAnyWayWhatSoEverSoThereHa");
-
- StatsManager mgr = Stats.loadStatsManagerFromProperties();
-
- assertNotNull(mgr);
- assertInstanceOf(mgr, ClassLoadableMockStatsManager.class);
-
- } finally {
- System.getProperties()
- .remove(StatsManager.class.getName());
- }
- }
-
- @Test
- public void testGetConfigManager() {
- mockery.checking(new Expectations() {{
- one(mockManager).getConfigManager();
- }});
-
- Stats.getConfigManager();
- }
-
- @Test
- public void testGetSessionManager() {
- mockery.checking(new Expectations() {{
- one(mockManager).getSessionManager();
- }});
-
- Stats.getSessionManager();
- }
-
- @Test
- public void testGetEventManager() {
- mockery.checking(new Expectations() {{
- one(mockManager).getEventManager();
- }});
-
- Stats.getEventManager();
- }
-
- @Test
- public void testIsEnabled() {
- mockery.checking(new Expectations() {{
- one(mockManager).isEnabled();
- }});
-
- Stats.isEnabled();
- }
-
-
- /* NESTED CLASSES */
-
- @SuppressWarnings("serial")
- public static final class ClassLoadableMockStatsManager implements
StatsManager {
-
- @Override
- public String getNamespace() {
- return "ns";
- }
-
- @Override
- public void initialize() {}
-
- @Override
- public boolean isRunning() {
- return true;
- }
-
- @Override
- public void shutdown() {}
-
- @Override
- public StatsConfigManager getConfigManager() {
- return null;
- }
-
- @Override
- public EventManager getEventManager() {
- return null;
- }
-
- @Override
- public StatsSessionManager getSessionManager() {
- return null;
- }
-
- @Override
- public TrackerLocator getTrackerLocator() {
- return null;
- }
-
- @Override
- public StatsKeyFactory getKeyFactory() {
- return null;
- }
-
- @Override
- public StatsConfigBuilderFactory getConfigBuilderFactory() {
- return null;
- }
-
- @Override
- public TaskService getTaskService() {
- return null;
- }
-
- @Override
- public boolean isEnabled() {
- return false;
- }
-
- @Override
- public void setEnabled(boolean enabled) {}
-
- @Override
- public UncaughtExceptionHandler getUncaughtExceptionHandler() {
- return NullUncaughtExceptionHandler.getInstance();
- }
-
- @Override
- public void setUncaughtExceptionHandler(UncaughtExceptionHandler
uncaughtExceptionHandler) {}
-
- }
-
- public static final class ClassLoadableMockStatsManagerFactory
implements StatsManagerFactory {
- @Override
- public StatsManager createManager() {
- return null;
- }
- }
-}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/AbstractStatsKey.java Mon
Jun 20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/AbstractStatsKey.java Tue
Jul 5 10:11:22 2011
@@ -36,6 +36,7 @@
private static final String NULL = "<null>";
private final StatsKeyFactory keyFactory;
+ private final String namespace;
private final String name;
private int hashCode;
@@ -48,8 +49,15 @@
*
* @throws NullPointerException If <tt>name</tt> is <tt>null</tt>.
*/
- public AbstractStatsKey(final String name,
+ public AbstractStatsKey(final String namespace,
+ final String name,
final StatsKeyFactory keyFactory) {
+ if (namespace == null) {
+ this.namespace = StatsConstants.DEFAULT_NAMESPACE;
+ } else {
+ this.namespace = namespace;
+ }
+
if (name == null) {
this.name = NULL;
} else {
@@ -80,6 +88,11 @@
return keyFactory.createKeyBuilder(this);
}
+
+ @Override
+ public String getNamespace() {
+ return namespace;
+ }
@Override
public final String getName() {
@@ -162,11 +175,10 @@
return false;
}
- // If we have the same hashCode, attribute count, and key name,
- // assume that we have the same attribute names and values, and
are thus equal.
-
- return true;
- }
+ return areAttributesEqual(otherKey);
+ }
+
+ protected abstract boolean areAttributesEqual(final StatsKey other);
@SuppressWarnings("unchecked")
@Override
=======================================
--- /stajistics-core/src/main/java/org/stajistics/DefaultStatsKey.java Thu
Feb 25 15:34:31 2010
+++ /stajistics-core/src/main/java/org/stajistics/DefaultStatsKey.java Tue
Jul 5 10:11:22 2011
@@ -20,8 +20,8 @@
/**
* A {@link StatsKey} implementation that stores attributes in a {@link
Map}. Do not
* instantiate this class directly. Instead use the {@link
StatsKeyFactory} provided by
- * {@link StatsManager#getKeyFactory()}, or {@link Stats#newKey(String)},
or
- * {@link Stats#buildKey(String)}.
+ * {@link StatsManager#getKeyFactory()}, or {@link
StatsFactory#newKey(String)}, or
+ * {@link StatsFactory#buildKey(String)}.
*
* @author The Stajistics Project
*/
@@ -30,7 +30,7 @@
protected final Map<String,Object> attributes;
/**
- * Create a new instance.
+ * Do not create instances directly; use a
*
* @param name The key name. Must not be <tt>null</tt>.
* @param keyFactory The factory that supports the creation of copies
of this StatsKey instance.
@@ -38,10 +38,11 @@
* Must not be <tt>null</tt>. This Map is not
copied; it is referenced directly.
* @throws NullPointerException If <tt>attributes</tt> is
<tt>null</tt>.
*/
- public DefaultStatsKey(final String name,
+ public DefaultStatsKey(final String namespace,
+ final String name,
final StatsKeyFactory keyFactory,
final Map<String,Object> attributes) {
- super(name, keyFactory);
+ super(namespace, name, keyFactory);
if (attributes == null) {
throw new NullPointerException("attributes");
@@ -71,4 +72,17 @@
protected void appendAttributes(final StringBuilder buf) {
buf.append(attributes);
}
-}
+
+ @Override
+ protected boolean areAttributesEqual(final StatsKey other) {
+ // SimpleStatsKey and SingleAttributeStatsKey are optimized for
speed,
+ // so use their implementation if possible
+ Class<?> keyClass = other.getClass();
+ if (keyClass == SimpleStatsKey.class || keyClass ==
SingleAttributeStatsKey.class) {
+ return ((AbstractStatsKey)other).areAttributesEqual(this);
+ }
+
+ return attributes.equals(other.getAttributes());
+ }
+
+}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKeyBuilder.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKeyBuilder.java
Tue Jul 5 10:11:22 2011
@@ -30,6 +30,7 @@
private static final String NULL = "<null>";
protected StatsKeyFactory keyFactory;
+ protected String namespace;
protected String name;
protected String firstAttrName;
@@ -44,8 +45,10 @@
* @param keyFactory The factory that supports the creation of
StatsKey instances.
* Must not be <tt>null</tt>.
*/
- public DefaultStatsKeyBuilder(final String name,
+ public DefaultStatsKeyBuilder(final String namespace,
+ final String name,
final StatsKeyFactory keyFactory) {
+ this.namespace = namespace == null ?
StatsConstants.DEFAULT_NAMESPACE : namespace;
this.name = name == null ? NULL : name;
this.keyFactory = keyFactory;
}
@@ -156,18 +159,19 @@
if (attributes == null) {
// If no attributes
if (firstAttrName == null) {
- return new SimpleStatsKey(name, keyFactory);
+ return new SimpleStatsKey(namespace, name, keyFactory);
}
// One attribute
- return new SingleAttributeStatsKey(name,
+ return new SingleAttributeStatsKey(namespace,
+ name,
keyFactory,
firstAttrName,
firstAttrValue);
}
// Many attributes
- return new DefaultStatsKey(name, keyFactory, attributes);
+ return new DefaultStatsKey(namespace, name, keyFactory,
attributes);
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKeyFactory.java
Thu Feb 25 15:34:31 2010
+++
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKeyFactory.java
Tue Jul 5 10:11:22 2011
@@ -23,14 +23,29 @@
*/
public class DefaultStatsKeyFactory implements StatsKeyFactory {
+ private String namespace;
+
+ @Override
+ public String getNamespace() {
+ return namespace;
+ }
+
+ @Override
+ public void setNamespace(final String namespace) {
+ if (namespace == null) {
+ throw new NullPointerException("namespace");
+ }
+ this.namespace = namespace;
+ }
+
@Override
public StatsKey createKey(final String name) {
- return new SimpleStatsKey(name, this);
+ return new SimpleStatsKey(namespace, name, this);
}
@Override
public StatsKeyBuilder createKeyBuilder(final String name) {
- return new DefaultStatsKeyBuilder(name, this);
+ return new DefaultStatsKeyBuilder(namespace, name, this);
}
@Override
=======================================
--- /stajistics-core/src/main/java/org/stajistics/DefaultStatsManager.java
Mon Jun 20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/DefaultStatsManager.java
Tue Jul 5 10:11:22 2011
@@ -117,14 +117,16 @@
@Override
public Void call() throws Exception {
if (namespace == null) {
- if (StatsManagerRegistry.getStatsManagerCount() == 0) {
+ if
(StatsManagerRegistry.getInstance().getStatsManagerCount() == 0) {
namespace = StatsConstants.DEFAULT_NAMESPACE;
} else {
namespace =
Integer.toHexString(System.identityHashCode(this));
}
}
-
StatsManagerRegistry.registerStatsManager(DefaultStatsManager.this);
+ keyFactory.setNamespace(namespace);
+
+
StatsManagerRegistry.getInstance().registerStatsManager(DefaultStatsManager.this);
eventManager.initialize();
taskService.initialize();
@@ -157,7 +159,7 @@
taskService.shutdown();
eventManager.shutdown();
-
StatsManagerRegistry.removeStatsManager(DefaultStatsManager.this);
+
StatsManagerRegistry.getInstance().removeStatsManager(DefaultStatsManager.this);
return null;
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/NullStatsKey.java Fri May
28 05:37:37 2010
+++ /stajistics-core/src/main/java/org/stajistics/NullStatsKey.java Tue
Jul 5 10:11:22 2011
@@ -36,6 +36,11 @@
public static NullStatsKey getInstance() {
return instance;
}
+
+ @Override
+ public String getNamespace() {
+ return "";
+ }
/**
* @return An empty String.
=======================================
--- /stajistics-core/src/main/java/org/stajistics/SimpleStatsKey.java Thu
Feb 25 15:34:31 2010
+++ /stajistics-core/src/main/java/org/stajistics/SimpleStatsKey.java Tue
Jul 5 10:11:22 2011
@@ -34,9 +34,10 @@
* @param keyFactory The factory that supports the creation of copies
of this StatsKey instance.
* @throws NullPointerException If <tt>name</tt> is <tt>null</tt>.
*/
- public SimpleStatsKey(final String name,
+ public SimpleStatsKey(final String namespace,
+ final String name,
final StatsKeyFactory keyFactory) {
- super(name, keyFactory);
+ super(namespace, name, keyFactory);
setHashCode();
}
@@ -64,4 +65,9 @@
public int getAttributeCount() {
return 0;
}
-}
+
+ @Override
+ protected boolean areAttributesEqual(final StatsKey other) {
+ return other.getAttributeCount() == 0;
+ }
+}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/SingleAttributeStatsKey.java
Thu Feb 25 15:34:31 2010
+++
/stajistics-core/src/main/java/org/stajistics/SingleAttributeStatsKey.java
Tue Jul 5 10:11:22 2011
@@ -40,11 +40,12 @@
* @throws NullPointerException If <tt>name</tt> is <tt>null</tt>.
* If <tt>attrName</tt> is <tt>null</tt>
and <tt>attrValue</tt> is not.
*/
- public SingleAttributeStatsKey(final String name,
+ public SingleAttributeStatsKey(final String namespace,
+ final String name,
final StatsKeyFactory keyFactory,
final String attrName,
final Object attrValue) {
- super(name, keyFactory);
+ super(namespace, name, keyFactory);
if (attrName == null && attrValue != null) {
throw new NullPointerException("attrValue");
@@ -78,6 +79,19 @@
public int getAttributeCount() {
return attrName == null ? 0 : 1;
}
+
+ @Override
+ protected boolean areAttributesEqual(final StatsKey other) {
+ if (getAttributeCount() != other.getAttributeCount()) {
+ return false;
+ }
+
+ if (attrName == null) {
+ return true;
+ }
+
+ return attrValue.equals(other.getAttribute(attrName));
+ }
@Override
protected void appendAttributes(final StringBuilder buf) {
=======================================
--- /stajistics-core/src/main/java/org/stajistics/StatsFactory.java Fri Jun
24 05:48:14 2011
+++ /stajistics-core/src/main/java/org/stajistics/StatsFactory.java Tue
Jul 5 10:11:22 2011
@@ -2,6 +2,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.stajistics.bootstrap.DefaultStatsManagerFactory;
+import org.stajistics.bootstrap.StatsManagerFactory;
import org.stajistics.configuration.StatsConfigBuilder;
import org.stajistics.tracker.NullTracker;
import org.stajistics.tracker.Tracker;
@@ -11,7 +13,16 @@
import org.stajistics.tracker.span.SpanTracker;
/**
- *
+ * <p>A facade to the Stajistics core API. Maintains an instance of a
+ * {@link StatsManager}. Provides convenience methods for manipulating the
+ * underlying API.</p>
+ *
+ * <p>The methods in this class that return {@link Tracker} instances do
not throw
+ * Exceptions, checked nor unchecked. Rather, these methods catch and log
Exceptions and return
+ * a no-operation {@link Tracker} instance. The necessity in this design
is to shield a
+ * client application from any problems related to invoking statistics
collection, possibly caused
+ * by misconfiguration. To bypass this Exception-swallowing behaviour, the
use of this facade
+ * can be discarded and the underlying API can be accessed directly.</p>
*
* @author The Stajistics Project
*/
@@ -19,7 +30,10 @@
private static final Logger logger =
LoggerFactory.getLogger(StatsFactory.class);
- private final StatsManager statsManager;
+ protected static final String PROP_MANAGER_FACTORY =
StatsManagerFactory.class.getName();
+ protected static final String PROP_AUTO_INIT_DEFAULT_MANAGER =
StatsFactory.class.getName() + ".autoInitDefaultManager";
+
+ protected final StatsManager statsManager;
public StatsFactory(final StatsManager statsManager) {
if (statsManager == null) {
@@ -33,20 +47,30 @@
throw new NullPointerException("aClass");
}
- Class<?> cls = aClass;
- while (cls != Object.class) {
- String namespace = cls.getPackage().getName();
- if (StatsManagerRegistry.isStatsManagerDefined(namespace)) {
- StatsManager statsManager =
StatsManagerRegistry.getStatsManager(namespace);
+ final StatsManagerRegistry reg =
StatsManagerRegistry.getInstance();
+ String pkg = aClass.getPackage().getName();
+
+ do {
+ String namespace = pkg;
+ if (reg.isStatsManagerDefined(namespace)) {
+ StatsManager statsManager = reg.getStatsManager(namespace);
if (statsManager != null) {
+ logger.debug("Found StatsManager at namespace '{}' for
class '{}'.", namespace, aClass);
return new StatsFactory(statsManager);
}
}
- cls = cls.getSuperclass();
- }
-
- throw new StatsNamespaceNotFoundException("No namespaces found for
class: " + aClass.getName());
+ int i = pkg.lastIndexOf('.');
+ if (i > -1) {
+ pkg = pkg.substring(0, i);
+ } else {
+ pkg = null;
+ }
+ } while (pkg != null);
+
+ logger.debug("No matching namespaces defined for class '{}'.
Attemping to use default namespace.", aClass);
+
+ return forNamespace(StatsConstants.DEFAULT_NAMESPACE);
}
public static StatsFactory forNamespace(final String namespace) {
@@ -54,15 +78,67 @@
throw new NullPointerException("namespace");
}
- if (StatsManagerRegistry.isStatsManagerDefined(namespace)) {
- StatsManager statsManager =
StatsManagerRegistry.getStatsManager(namespace);
- if (statsManager != null) {
+ final StatsManagerRegistry reg =
StatsManagerRegistry.getInstance();
+
+ if (reg.isStatsManagerDefined(namespace)) {
+ StatsManager statsManager = reg.getStatsManager(namespace);
+ return new StatsFactory(statsManager);
+ }
+
+ // Namespace not found
+
+ if (namespace.equals(StatsConstants.DEFAULT_NAMESPACE)) {
+ boolean autoInitDefaultManager =
Boolean.parseBoolean(System.getProperty(PROP_AUTO_INIT_DEFAULT_MANAGER,
+
Boolean.TRUE.toString()));
+ if (autoInitDefaultManager) {
+ loadDefaultStatsManager();
+ StatsManager statsManager = reg.getStatsManager(namespace);
return new StatsFactory(statsManager);
}
}
throw new StatsNamespaceNotFoundException(namespace);
}
+
+ protected static StatsManager loadDefaultStatsManager() {
+
+ StatsManager manager = null;
+
+ try {
+ StatsManagerFactory managerFactory =
loadStatsManagerFactoryFromProperties();
+ if (managerFactory != null) {
+ manager =
managerFactory.createManager(StatsConstants.DEFAULT_NAMESPACE);
+ if (manager == null) {
+ logger.error(StatsManagerFactory.class.getSimpleName()
+ " created null " +
+ StatsManager.class.getSimpleName() + ": "
+ managerFactory.getClass());
+ }
+ }
+
+ } catch (Exception e) {
+ logger.error("Failed to load " +
StatsManager.class.getSimpleName() + ": " + e.toString(), e);
+ }
+
+ if (manager == null) {
+ manager = new
DefaultStatsManagerFactory().createManager(StatsConstants.DEFAULT_NAMESPACE);
+ }
+
+ return manager;
+ }
+
+ protected static StatsManagerFactory
loadStatsManagerFactoryFromProperties() throws Exception {
+ StatsManagerFactory managerFactory = null;
+
+ String managerFactoryClassName =
System.getProperty(PROP_MANAGER_FACTORY);
+ if (managerFactoryClassName != null) {
+ @SuppressWarnings("unchecked")
+ Class<StatsManagerFactory> managerFactoryClass =
+
(Class<StatsManagerFactory>)Class.forName(managerFactoryClassName);
+
+ managerFactory = managerFactoryClass.newInstance();
+ }
+
+ return managerFactory;
+ }
public StatsManager getManager() {
return statsManager;
@@ -78,7 +154,7 @@
public boolean isEnabled() {
return statsManager.isEnabled();
}
-
+
/**
* Obtain a {@link SpanTracker} for the given <tt>keyName</tt> that
can be used
* to collect statistics related to some span. Equivalent to calling
=======================================
--- /stajistics-core/src/main/java/org/stajistics/StatsKey.java Mon Jun 20
15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/StatsKey.java Tue Jul 5
10:11:22 2011
@@ -43,7 +43,7 @@
* characters can appear in a key name. Dot (.) characters, however, are
interpreted as
* hierarchy delimiters.</p>
*
- * <p>StatsKeys are organized into a hierarchy through the following
naming convention. A key is
+ * <p>StatsKeys are organised into a hierarchy through the following
naming convention. A key is
* the ancestor of another key if its name followed by a dot is a prefix
of the descendant key name.
* A key is a parent of a child key if there are no ancestors between it
and the descendant key.</p>
*
@@ -93,7 +93,7 @@
*
* </dd>
*
- * @see Stats
+ * @see StatsFactory
* @see StatsKeyBuilder
* @see StatsKeyFactory
*
@@ -101,6 +101,8 @@
*/
public interface StatsKey extends Comparable<StatsKey>,Serializable {
+ String getNamespace();
+
/**
* Get the key name.
*
=======================================
--- /stajistics-core/src/main/java/org/stajistics/StatsKeyFactory.java Thu
Feb 25 15:34:31 2010
+++ /stajistics-core/src/main/java/org/stajistics/StatsKeyFactory.java Tue
Jul 5 10:11:22 2011
@@ -24,31 +24,35 @@
*/
public interface StatsKeyFactory extends Serializable {
- /**
- * Create a new {@link StatsKey} from the given <tt>name</tt>.
- *
- * @param name The name of the key to create.
- * @return A new {@link StatsKey}, never <tt>null</tt>.
- */
- StatsKey createKey(String name);
-
- /**
- * Create a new {@link StatsKeyBuilder} which can create a new {@link
StatsKey}
- * for the given <tt>name</tt>.
- *
- * @param name The name of the key that the builder will create.
- * @return A {@link StatsKeyBuilder} which can be used to define key
attributes, never <tt>null</tt>.
- */
- StatsKeyBuilder createKeyBuilder(String name);
-
- /**
- * Create a new {@link StatsKeyBuilder} which can create a new {@link
StatsKey}.
- * The builder is initialized with the name and attributes of the given
{@link StatsKey}
- * <tt>template</tt>.
- *
- * @param template The key with which to initialize the {@link
StatsKeyBuilder}.
- * @return A {@link StatsKeyBuilder} which can be used to define key
attributes, never <tt>null</tt>.
- */
- StatsKeyBuilder createKeyBuilder(StatsKey template);
+ String getNamespace();
+
+ void setNamespace(String namespace);
+
+ /**
+ * Create a new {@link StatsKey} from the given <tt>name</tt>.
+ *
+ * @param name The name of the key to create.
+ * @return A new {@link StatsKey}, never <tt>null</tt>.
+ */
+ StatsKey createKey(String name);
+
+ /**
+ * Create a new {@link StatsKeyBuilder} which can create a new {@link
StatsKey}
+ * for the given <tt>name</tt>.
+ *
+ * @param name The name of the key that the builder will create.
+ * @return A {@link StatsKeyBuilder} which can be used to define key
attributes, never <tt>null</tt>.
+ */
+ StatsKeyBuilder createKeyBuilder(String name);
+
+ /**
+ * Create a new {@link StatsKeyBuilder} which can create a new {@link
StatsKey}.
+ * The builder is initialized with the name and attributes of the
given {@link StatsKey}
+ * <tt>template</tt>.
+ *
+ * @param template The key with which to initialize the {@link
StatsKeyBuilder}.
+ * @return A {@link StatsKeyBuilder} which can be used to define key
attributes, never <tt>null</tt>.
+ */
+ StatsKeyBuilder createKeyBuilder(StatsKey template);
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/StatsManagerRegistry.java
Fri Jun 24 05:48:14 2011
+++ /stajistics-core/src/main/java/org/stajistics/StatsManagerRegistry.java
Tue Jul 5 10:11:22 2011
@@ -14,38 +14,50 @@
private static Map<String,StatsManager> registry = new
ConcurrentHashMap<String,StatsManager>();
- public static int getStatsManagerCount() {
+ private static final StatsManagerRegistry INSTANCE = new
StatsManagerRegistry();
+
+ private StatsManagerRegistry() {}
+
+ public static StatsManagerRegistry getInstance() {
+ return INSTANCE;
+ }
+
+ public int getStatsManagerCount() {
return registry.size();
}
- public static Collection<StatsManager> getStatsManagers() {
+ public Collection<StatsManager> getStatsManagers() {
return Collections.unmodifiableCollection(registry.values());
}
- public static void registerStatsManager(final StatsManager manager) {
+ public void registerStatsManager(final StatsManager manager) {
registry.put(manager.getNamespace(), manager);
}
- public static void removeStatsManager(final StatsManager manager) {
+ public void removeStatsManager(final StatsManager manager) {
removeStatsManager(manager.getNamespace());
}
- public static void removeStatsManager(final String namespace) {
+ public void removeStatsManager(final String namespace) {
if (namespace == null) {
throw new NullPointerException("namespace");
}
registry.remove(namespace);
}
- public static boolean isStatsManagerDefined(final String namespace) {
+ public boolean isStatsManagerDefined(final String namespace) {
return registry.containsKey(namespace);
}
- public static StatsManager getStatsManager(final String namespace) {
+ public StatsManager getStatsManager(final String namespace) {
StatsManager statsManager = registry.get(namespace);
if (statsManager == null) {
throw new StatsNamespaceNotFoundException(namespace);
}
return statsManager;
}
-}
+
+ public void clear() {
+ registry.clear();
+ }
+}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/aop/LifeCycleMonitor.java
Mon Jun 20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/aop/LifeCycleMonitor.java
Tue Jul 5 10:11:22 2011
@@ -21,7 +21,8 @@
import java.util.IdentityHashMap;
import java.util.Map;
-import org.stajistics.Stats;
+import org.stajistics.StatsConstants;
+import org.stajistics.StatsFactory;
import org.stajistics.StatsKey;
import org.stajistics.tracker.span.SpanTracker;
@@ -40,29 +41,25 @@
private final LifeCyclePoller lifeCyclePoller = new LifeCyclePoller();
- private static LifeCycleMonitor<Object> defaultInstance;
+ private final StatsFactory factory;
public LifeCycleMonitor() {
-
+ this(null);
}
- public static LifeCycleMonitor<Object> getDefaultInstance() {
-
- if (defaultInstance == null) {
- synchronized (LifeCycleMonitor.class) {
- if (defaultInstance == null) {
- defaultInstance = new LifeCycleMonitor<Object>();
- }
- }
- }
-
- return defaultInstance;
- }
+ public LifeCycleMonitor(final StatsFactory factory) {
+ if (factory == null) {
+ this.factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
+ } else {
+ this.factory = factory;
+ }
+ }
+
public void monitor(final T object,
final StatsKey key) {
- SpanTracker tracker = Stats.track(key);
+ SpanTracker tracker = factory.track(key);
Reference<T> ref = new PhantomReference<T>(object, refQueue);
trackerMap.put(ref, tracker);
@@ -142,9 +139,10 @@
public static void main(String[] args) throws Exception {
- LifeCycleMonitor<Object> lcm =
LifeCycleMonitor.getDefaultInstance();
-
- StatsKey key = Stats.newKey("test");
+ StatsFactory factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
+ LifeCycleMonitor<Object> lcm = new
LifeCycleMonitor<Object>(factory);
+
+ StatsKey key = factory.newKey("test");
while (true) {
for (int i = 0; i < 10000; i++) {
=======================================
--- /stajistics-core/src/main/java/org/stajistics/aop/StatsDecorators.java
Mon Jun 20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/aop/StatsDecorators.java
Tue Jul 5 10:11:22 2011
@@ -20,7 +20,8 @@
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadFactory;
-import org.stajistics.Stats;
+import org.stajistics.StatsConstants;
+import org.stajistics.StatsFactory;
import org.stajistics.StatsKey;
import org.stajistics.tracker.span.SpanTracker;
@@ -32,9 +33,21 @@
*/
public class StatsDecorators {
- private StatsDecorators() {}
-
- private static void rethrow(final Throwable t) {
+ private final StatsFactory factory;
+
+ public StatsDecorators() {
+ this(null);
+ }
+
+ public StatsDecorators(final StatsFactory factory) {
+ if (factory == null) {
+ this.factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
+ } else {
+ this.factory = factory;
+ }
+ }
+
+ private void rethrow(final Throwable t) {
if (t instanceof RuntimeException) {
throw (RuntimeException)t;
}
@@ -45,13 +58,13 @@
throw new RuntimeException(t);
}
- public static Runnable wrap(final Runnable r,
- final StatsKey key) {
+ public Runnable wrap(final Runnable r,
+ final StatsKey key) {
return new Runnable() {
@Override
public void run() {
try {
- SpanTracker tracker = Stats.track(key);
+ SpanTracker tracker = factory.track(key);
try {
r.run();
} finally {
@@ -59,20 +72,20 @@
}
} catch (Throwable t) {
- Stats.failure(t, key);
+ factory.failure(t, key);
rethrow(t);
}
}
};
}
- public static <T> Callable<T> wrap(final Callable<T> c,
- final StatsKey key) {
+ public <T> Callable<T> wrap(final Callable<T> c,
+ final StatsKey key) {
return new Callable<T>() {
@Override
public T call() throws Exception {
try {
- SpanTracker tracker = Stats.track(key);
+ SpanTracker tracker = factory.track(key);
try {
return c.call();
} finally {
@@ -80,7 +93,7 @@
}
} catch (Throwable t) {
- Stats.failure(t, key);
+ factory.failure(t, key);
if (t instanceof Exception) {
throw (Exception)t;
@@ -94,14 +107,14 @@
};
}
- public static Observer wrap(final Observer observer,
- final StatsKey key) {
+ public Observer wrap(final Observer observer,
+ final StatsKey key) {
return new Observer() {
@Override
public void update(final Observable o,
final Object arg) {
try {
- SpanTracker tracker = Stats.track(key);
+ SpanTracker tracker = factory.track(key);
try {
observer.update(o, arg);
} finally {
@@ -109,27 +122,27 @@
}
} catch (Throwable t) {
- Stats.failure(t, key);
+ factory.failure(t, key);
rethrow(t);
}
}
};
}
- public static ThreadFactory wrap(final ThreadFactory threadFactory,
- final StatsKey key) {
+ public ThreadFactory wrap(final ThreadFactory threadFactory,
+ final StatsKey key) {
return new ThreadFactoryWrapper(threadFactory, key);
}
- public static Executor wrap(final Executor executor,
- final StatsKey executorKey,
- final StatsKey commandKey) {
+ public Executor wrap(final Executor executor,
+ final StatsKey executorKey,
+ final StatsKey commandKey) {
return new ExecutorWrapper(executor, executorKey, commandKey);
}
/* NESTED CLASSES */
- protected static class ThreadFactoryWrapper implements ThreadFactory {
+ protected class ThreadFactoryWrapper implements ThreadFactory {
protected final ThreadFactory threadFactory;
protected final StatsKey key;
@@ -146,11 +159,11 @@
@Override
public Thread newThread(final Runnable r) {
- return threadFactory.newThread(StatsDecorators.wrap(r, key));
+ return threadFactory.newThread(wrap(r, key));
}
}
- protected static class ExecutorWrapper implements Executor {
+ protected class ExecutorWrapper implements Executor {
protected final Executor executor;
protected final StatsKey executorKey;
@@ -177,12 +190,12 @@
@Override
public void execute(final Runnable command) {
try {
- Stats.incident(executorKey);
-
- executor.execute(StatsDecorators.wrap(command,
commandKey));
+ factory.incident(executorKey);
+
+ executor.execute(wrap(command, commandKey));
} catch (Throwable t) {
- Stats.failure(t, executorKey);
+ factory.failure(t, executorKey);
rethrow(t);
}
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/aop/StatsProxy.java Fri
Jun 24 05:48:14 2011
+++ /stajistics-core/src/main/java/org/stajistics/aop/StatsProxy.java Tue
Jul 5 10:11:22 2011
@@ -19,9 +19,8 @@
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
-import org.stajistics.Stats;
+import org.stajistics.StatsConstants;
import org.stajistics.StatsKey;
-import org.stajistics.StatsManager;
import org.stajistics.StatsFactory;
import org.stajistics.tracker.span.SpanTracker;
@@ -45,21 +44,18 @@
protected static final String ATTR_METHOD = "method";
- protected final StatsManager statsManager;
protected final StatsFactory factory;
protected final StatsKey key;
protected final Object target;
- protected StatsProxy(final StatsManager statsManager,
+ protected StatsProxy(final StatsFactory factory,
final StatsKey key,
final Object target) {
-
- if (statsManager == null) {
- this.statsManager = Stats.getManager();
+ if (factory == null) {
+ this.factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
} else {
- this.statsManager = statsManager;
- }
- this.factory = new StatsFactory(this.statsManager);
+ this.factory = factory;
+ }
if (key == null) {
throw new NullPointerException("key");
@@ -81,23 +77,23 @@
* @return
*/
@SuppressWarnings("unchecked")
- public static <T> T wrap(final StatsManager statsManager,
+ public static <T> T wrap(final StatsFactory factory,
final StatsKey key,
final T target) {
Class<? super T>[] ifaces = (Class<? super T>[])target.getClass()
.getInterfaces();
- return wrap(statsManager, key, target, ifaces);
+ return wrap(factory, key, target, ifaces);
}
- public static <T,U extends T> T wrap(final StatsManager statsManager,
+ public static <T,U extends T> T wrap(final StatsFactory factory,
final StatsKey key,
final U target,
final Class<T> iface) {
- return wrap(statsManager, key, target, new Class[] { iface });
+ return wrap(factory, key, target, new Class[] { iface });
}
@SuppressWarnings("unchecked")
- public static <T,U extends T> T wrap(final StatsManager statsManager,
+ public static <T,U extends T> T wrap(final StatsFactory factory,
final StatsKey key,
final U target,
final Class<?>[] ifaces) {
@@ -106,7 +102,7 @@
T proxy = (T) Proxy.newProxyInstance(classLoader,
ifaces,
- new StatsProxy(statsManager,
key, target));
+ new StatsProxy(factory, key,
target));
return proxy;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/aop/StatsSelectiveProxy.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/aop/StatsSelectiveProxy.java
Tue Jul 5 10:11:22 2011
@@ -21,8 +21,8 @@
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.stajistics.StatsFactory;
import org.stajistics.StatsKey;
-import org.stajistics.StatsManager;
/**
*
@@ -33,11 +33,11 @@
protected final SelectionCriteria criteria;
- protected StatsSelectiveProxy(final StatsManager statsManager,
+ protected StatsSelectiveProxy(final StatsFactory factory,
final StatsKey key,
final Object target,
final SelectionCriteria criteria) {
- super(statsManager, key, target);
+ super(factory, key, target);
if (criteria == null) {
throw new NullPointerException("criteria");
@@ -56,25 +56,25 @@
* @return
*/
@SuppressWarnings("unchecked")
- public static <T> T wrap(final StatsManager statsManager,
+ public static <T> T wrap(final StatsFactory factory,
final StatsKey key,
final T target,
final SelectionCriteria criteria) {
Class<? super T>[] ifaces = (Class<? super T>[]) target.getClass()
.getInterfaces();
- return wrap(statsManager, key, target, criteria, ifaces);
+ return wrap(factory, key, target, criteria, ifaces);
}
- public static <T,U extends T> T wrap(final StatsManager statsManager,
+ public static <T,U extends T> T wrap(final StatsFactory factory,
final StatsKey key,
final U target,
final SelectionCriteria criteria,
final Class<T> iface) {
- return wrap(statsManager, key, target, criteria, new Class[] {
iface });
+ return wrap(factory, key, target, criteria, new Class[] { iface });
}
@SuppressWarnings("unchecked")
- public static <T,U extends T> T wrap(final StatsManager statsManager,
+ public static <T,U extends T> T wrap(final StatsFactory factory,
final StatsKey key,
final U target,
final SelectionCriteria criteria,
@@ -83,7 +83,7 @@
.getContextClassLoader();
T proxy = (T) Proxy.newProxyInstance(classLoader, ifaces,
- new
StatsSelectiveProxy(statsManager, key, target, criteria));
+ new
StatsSelectiveProxy(factory, key, target, criteria));
return proxy;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/bootstrap/DefaultStatsManagerFactory.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/bootstrap/DefaultStatsManagerFactory.java
Tue Jul 5 10:11:22 2011
@@ -29,9 +29,14 @@
private static final String PROP_MANAGEMENT_ENABLED =
StatsMXBeanRegistrar.class.getName() + ".enabled";
@Override
- public DefaultStatsManager createManager() {
+ public DefaultStatsManager createManager(final String namespace) {
+ if (namespace == null) {
+ throw new NullPointerException("namespace");
+ }
+
boolean stajisticsEnabled =
StatsProperties.getBooleanProperty(PROP_STAJISTICS_ENABLED, true);
DefaultStatsManager manager = new DefaultStatsManager.Builder()
+ .withNamespace(namespace)
.withEnabled(stajisticsEnabled)
.newManager();
=======================================
---
/stajistics-core/src/main/java/org/stajistics/bootstrap/StatsManagerFactory.java
Mon May 31 20:44:40 2010
+++
/stajistics-core/src/main/java/org/stajistics/bootstrap/StatsManagerFactory.java
Tue Jul 5 10:11:22 2011
@@ -21,6 +21,6 @@
*/
public interface StatsManagerFactory {
- StatsManager createManager();
+ StatsManager createManager(String namespace);
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterInputStream.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterInputStream.java
Tue Jul 5 10:11:22 2011
@@ -4,9 +4,9 @@
import java.io.IOException;
import java.io.InputStream;
-import org.stajistics.Stats;
+import org.stajistics.StatsConstants;
+import org.stajistics.StatsFactory;
import org.stajistics.StatsKey;
-import org.stajistics.StatsManager;
import org.stajistics.tracker.manual.ManualTracker;
/**
@@ -21,20 +21,20 @@
this(null, key, in);
}
- public StatsFilterInputStream(StatsManager statsManager,
+ public StatsFilterInputStream(StatsFactory factory,
final StatsKey key,
final InputStream in) {
super(in);
- if (statsManager == null) {
- statsManager = Stats.getManager();
+ if (factory == null) {
+ factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
}
if (key == null) {
throw new NullPointerException("key");
}
- tracker = statsManager.getTrackerLocator().getManualTracker(key);
+ tracker = factory.getManualTracker(key);
}
@Override
=======================================
---
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterOutputStream.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterOutputStream.java
Tue Jul 5 10:11:22 2011
@@ -4,9 +4,9 @@
import java.io.IOException;
import java.io.OutputStream;
-import org.stajistics.Stats;
+import org.stajistics.StatsConstants;
+import org.stajistics.StatsFactory;
import org.stajistics.StatsKey;
-import org.stajistics.StatsManager;
import org.stajistics.tracker.manual.ManualTracker;
/**
@@ -21,20 +21,20 @@
this(null, key, out);
}
- public StatsFilterOutputStream(StatsManager statsManager,
+ public StatsFilterOutputStream(StatsFactory factory,
final StatsKey key,
final OutputStream out) {
super(out);
- if (statsManager == null) {
- statsManager = Stats.getManager();
+ if (factory == null) {
+ factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
}
if (key == null) {
throw new NullPointerException("key");
}
- tracker = statsManager.getTrackerLocator().getManualTracker(key);
+ tracker = factory.getManualTracker(key);
}
@Override
=======================================
--- /stajistics-core/src/main/java/org/stajistics/io/StatsFilterReader.java
Mon Jun 20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/io/StatsFilterReader.java
Tue Jul 5 10:11:22 2011
@@ -5,9 +5,9 @@
import java.io.Reader;
import java.nio.CharBuffer;
-import org.stajistics.Stats;
+import org.stajistics.StatsConstants;
+import org.stajistics.StatsFactory;
import org.stajistics.StatsKey;
-import org.stajistics.StatsManager;
import org.stajistics.tracker.manual.ManualTracker;
/**
@@ -22,20 +22,20 @@
this(null, key, in);
}
- public StatsFilterReader(StatsManager statsManager,
+ public StatsFilterReader(StatsFactory factory,
final StatsKey key,
final Reader in) {
super(in);
- if (statsManager == null) {
- statsManager = Stats.getManager();
+ if (factory == null) {
+ factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
}
if (key == null) {
throw new NullPointerException("key");
}
- tracker = statsManager.getTrackerLocator().getManualTracker(key);
+ tracker = factory.getManualTracker(key);
}
@Override
=======================================
--- /stajistics-core/src/main/java/org/stajistics/io/StatsFilterWriter.java
Mon Jun 20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/io/StatsFilterWriter.java
Tue Jul 5 10:11:22 2011
@@ -4,9 +4,9 @@
import java.io.IOException;
import java.io.Writer;
-import org.stajistics.Stats;
+import org.stajistics.StatsConstants;
+import org.stajistics.StatsFactory;
import org.stajistics.StatsKey;
-import org.stajistics.StatsManager;
import org.stajistics.tracker.manual.ManualTracker;
/**
@@ -21,20 +21,20 @@
this(null, key, out);
}
- public StatsFilterWriter(StatsManager statsManager,
+ public StatsFilterWriter(StatsFactory factory,
final StatsKey key,
final Writer out) {
super(out);
- if (statsManager == null) {
- statsManager = Stats.getManager();
+ if (factory == null) {
+ factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
}
if (key == null) {
throw new NullPointerException("key");
}
- tracker = statsManager.getTrackerLocator().getManualTracker(key);
+ tracker = factory.getManualTracker(key);
}
@Override
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanUtil.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanUtil.java
Tue Jul 5 10:11:22 2011
@@ -14,7 +14,7 @@
*/
public class StatsMXBeanUtil {
- public static final String STAJISTICS_DOMAIN =
org.stajistics.Stats.class.getPackage().getName();
+ public static final String STAJISTICS_DOMAIN =
org.stajistics.StatsFactory.class.getPackage().getName();
public static final String OBJECT_NAME_ATTR_NAMESPACE = "namespace";
public static final String OBJECT_NAME_ATTR_NAME = "name";
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsConfigMXBean.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsConfigMXBean.java
Tue Jul 5 10:11:22 2011
@@ -59,7 +59,7 @@
}
protected StatsManager getStatsManager() {
- return StatsManagerRegistry.getStatsManager(namespace);
+ return
StatsManagerRegistry.getInstance().getStatsManager(namespace);
}
@Override
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsSessionMXBean.java
Wed Jun 15 16:30:39 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsSessionMXBean.java
Tue Jul 5 10:11:22 2011
@@ -88,7 +88,7 @@
}
protected StatsSessionManager getSessionManager() {
- StatsManager manager =
StatsManagerRegistry.getStatsManager(namespace);
+ StatsManager manager =
StatsManagerRegistry.getInstance().getStatsManager(namespace);
return manager.getSessionManager();
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/AbstractStatsSession.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/AbstractStatsSession.java
Tue Jul 5 10:11:22 2011
@@ -24,7 +24,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.stajistics.Stats;
import org.stajistics.StatsKey;
import org.stajistics.data.DataSet;
import org.stajistics.data.DefaultDataSet;
@@ -156,7 +155,7 @@
"Failed to getField({}) from {}",
name,
dataRecorders[i]);
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
}
@@ -208,7 +207,7 @@
e,
"Failed to collectData() from {}",
dataRecorder);
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
}
}
@@ -262,7 +261,7 @@
e,
"Failed to restore {}",
dataRecorder);
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
}
}
@@ -289,7 +288,7 @@
e,
"Failed to clear {}",
dataRecorder);
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/AsynchronousSession.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/AsynchronousSession.java
Tue Jul 5 10:11:22 2011
@@ -21,9 +21,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.stajistics.Stats;
import org.stajistics.StatsKey;
import org.stajistics.StatsManager;
+import org.stajistics.StatsManagerRegistry;
import org.stajistics.data.DataSet;
import org.stajistics.event.EventManager;
import org.stajistics.event.EventType;
@@ -119,7 +119,7 @@
e,
"Failed to queue task {}",
entry);
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
}
@@ -229,7 +229,7 @@
e,
"Failed to update {}",
dataRecorder);
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
}
} finally {
@@ -461,11 +461,11 @@
public static final class Factory implements StatsSessionFactory {
@Override
public StatsSession createSession(final StatsKey key,
- final StatsManager manager,
final DataRecorder[]
dataRecorders) {
+ StatsManager statsManager =
StatsManagerRegistry.getInstance().getStatsManager(key.getNamespace());
return new AsynchronousSession(key,
- manager.getEventManager(),
- manager.getTaskService(),
+ statsManager.getEventManager(),
+ statsManager.getTaskService(),
dataRecorders);
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/ConcurrentSession.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/ConcurrentSession.java
Tue Jul 5 10:11:22 2011
@@ -19,9 +19,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.stajistics.Stats;
import org.stajistics.StatsKey;
import org.stajistics.StatsManager;
+import org.stajistics.StatsManagerRegistry;
import org.stajistics.data.DataSet;
import org.stajistics.event.EventManager;
import org.stajistics.event.EventType;
@@ -189,7 +189,7 @@
e,
"Failed to update {}",
dataRecorder);
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
}
@@ -298,10 +298,10 @@
public static final class Factory implements StatsSessionFactory {
@Override
public StatsSession createSession(final StatsKey key,
- final StatsManager manager,
final DataRecorder[]
dataRecorders) {
+ StatsManager statsManager =
StatsManagerRegistry.getInstance().getStatsManager(key.getNamespace());
return new ConcurrentSession(key,
- manager.getEventManager(),
+ statsManager.getEventManager(),
dataRecorders);
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/DefaultSessionFactory.java
Wed Jun 15 09:13:27 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/DefaultSessionFactory.java
Tue Jul 5 10:11:22 2011
@@ -15,7 +15,6 @@
package org.stajistics.session;
import org.stajistics.StatsKey;
-import org.stajistics.StatsManager;
import org.stajistics.StatsProperties;
import org.stajistics.session.recorder.DataRecorder;
@@ -39,7 +38,6 @@
@Override
public StatsSession createSession(final StatsKey key,
- final StatsManager manager,
final DataRecorder[] dataRecorders) {
StatsSessionFactory sessionFactory = ConcurrentSession.FACTORY;
@@ -57,6 +55,6 @@
}
}
- return sessionFactory.createSession(key, manager, dataRecorders);
+ return sessionFactory.createSession(key, dataRecorders);
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/DefaultSessionManager.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/DefaultSessionManager.java
Tue Jul 5 10:11:22 2011
@@ -23,9 +23,10 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.stajistics.Stats;
import org.stajistics.StatsKey;
import org.stajistics.StatsKeyMatcher;
+import org.stajistics.StatsManager;
+import org.stajistics.StatsManagerRegistry;
import org.stajistics.StatsProperties;
import org.stajistics.configuration.StatsConfig;
import org.stajistics.configuration.StatsConfigManager;
@@ -193,10 +194,8 @@
DataRecorder[] dataRecorders = config.getDataRecorderFactory()
.createDataRecorders();
- //TODO: How to get StatsManager properly
StatsSession session = config.getSessionFactory()
.createSession(key,
- Stats.getManager(),
dataRecorders);
logger.debug("Created StatsSession for key: {}", key);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/ImmutableSession.java
Wed Jun 15 09:13:27 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/ImmutableSession.java
Tue Jul 5 10:11:22 2011
@@ -161,7 +161,6 @@
public static final class Factory implements StatsSessionFactory {
@Override
public StatsSession createSession(final StatsKey key,
- final StatsManager manager,
final DataRecorder[]
dataRecorders) {
return new ImmutableSession(key);
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/StatsSessionFactory.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/StatsSessionFactory.java
Tue Jul 5 10:11:22 2011
@@ -31,13 +31,10 @@
* Create a {@link StatsSession} instance for the given <tt>key</tt>.
*
* @param key The key for which to create a {@link StatsSession}.
- * @param manager The {@link StatsManager} instance which can be used
to find dependencies
- * to pass into a new {@link StatsSession}.
* @param dataRecorders The array of DataRecorders to be passed into
the new {@link StatsSession}.
* @return A {@link StatsSession} instance, never <tt>null</tt>.
*/
StatsSession createSession(StatsKey key,
- StatsManager manager,
DataRecorder[] dataRecorders);
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractTracker.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractTracker.java
Tue Jul 5 10:11:22 2011
@@ -16,7 +16,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.stajistics.Stats;
import org.stajistics.StatsKey;
import org.stajistics.session.StatsSession;
import org.stajistics.util.Misc;
@@ -79,7 +78,7 @@
Misc.logHandledException(logger,
e,
"Caught Exception in toString()");
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
buf.append(']');
=======================================
--- /stajistics-core/src/main/java/org/stajistics/tracker/Tracker.java Mon
Jun 20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/tracker/Tracker.java Tue
Jul 5 10:11:22 2011
@@ -16,7 +16,6 @@
import java.io.Serializable;
-import org.stajistics.Stats;
import org.stajistics.StatsKey;
import org.stajistics.StatsManager;
import org.stajistics.session.StatsSession;
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/incident/DefaultIncidentTracker.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/incident/DefaultIncidentTracker.java
Tue Jul 5 10:11:22 2011
@@ -16,7 +16,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.stajistics.Stats;
import org.stajistics.StatsKey;
import org.stajistics.session.StatsSession;
import org.stajistics.session.StatsSessionManager;
@@ -53,7 +52,7 @@
Misc.logHandledException(logger,
e,
"Caught Exception in incident()");
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
return this;
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/manual/DefaultManualTracker.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/manual/DefaultManualTracker.java
Tue Jul 5 10:11:22 2011
@@ -16,7 +16,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.stajistics.Stats;
import org.stajistics.StatsKey;
import org.stajistics.session.StatsSession;
import org.stajistics.session.StatsSessionManager;
@@ -62,7 +61,7 @@
Misc.logHandledException(logger,
e,
"Caught Exception in commit()");
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/span/AbstractSpanTracker.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/span/AbstractSpanTracker.java
Tue Jul 5 10:11:22 2011
@@ -4,7 +4,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.stajistics.Stats;
import org.stajistics.session.StatsSession;
import org.stajistics.tracker.AbstractTracker;
import org.stajistics.tracker.Tracker;
@@ -48,7 +47,7 @@
Misc.logHandledException(logger,
e,
"Caught Exception in track()");
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
return this;
@@ -74,7 +73,7 @@
Misc.logHandledException(logger,
e,
"Caught Exception in commit()");
-
Stats.getManager().getUncaughtExceptionHandler().uncaughtException(getKey(),
e);
+ Misc.handleUncaughtException(getKey(), e);
}
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/util/Misc.java Mon Jun 20
15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/util/Misc.java Tue Jul 5
10:11:22 2011
@@ -6,6 +6,9 @@
import java.util.Set;
import org.slf4j.Logger;
+import org.stajistics.StatsKey;
+import org.stajistics.StatsManager;
+import org.stajistics.StatsManagerRegistry;
/**
* Defines various static utility methods.
@@ -37,6 +40,31 @@
return result;
}
+
+ public static void handleUncaughtException(final StatsKey key,
+ final Exception ex) {
+ String namespace = null;
+ if (key != null) {
+ namespace = key.getNamespace();
+ }
+ handleUncaughtException(namespace, key, ex);
+ }
+
+ public static void handleUncaughtException(final String namespace,
+ final Exception ex) {
+ handleUncaughtException(namespace, null, ex);
+ }
+
+ private static void handleUncaughtException(final String namespace,
+ final StatsKey key,
+ final Exception ex) {
+ try {
+ StatsManager statsManager =
StatsManagerRegistry.getInstance().getStatsManager(namespace);
+
statsManager.getUncaughtExceptionHandler().uncaughtException(key, ex);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
/**
* Log an error message to indicate that an Exception has been
swallowed.
=======================================
---
/stajistics-core/src/test/java/org/stajistics/AbstractStajisticsTestCase.java
Mon May 31 20:44:40 2010
+++
/stajistics-core/src/test/java/org/stajistics/AbstractStajisticsTestCase.java
Tue Jul 5 10:11:22 2011
@@ -19,7 +19,6 @@
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
-import org.stajistics.bootstrap.DefaultStatsManagerFactory;
/**
*
@@ -37,13 +36,12 @@
resetMockery();
}
- protected void resetMockery() {
- mockery = new Mockery();
+ @After
+ public void clearStatsManagerRegistry() {
+ StatsManagerRegistry.getInstance().clear();
}
- @After
- public void resetStatsManager() {
- // Ensure we're working with a clean slate for each test
- Stats.loadManager(new
DefaultStatsManagerFactory().createManager());
+ protected void resetMockery() {
+ mockery = new Mockery();
}
}
=======================================
---
/stajistics-core/src/test/java/org/stajistics/AbstractStatsKeyTestCase.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/test/java/org/stajistics/AbstractStatsKeyTestCase.java
Tue Jul 5 10:11:22 2011
@@ -43,6 +43,7 @@
@RunWith(JMock.class)
public abstract class AbstractStatsKeyTestCase extends
AbstractStajisticsTestCase {
+ protected static final String TEST_NAMESPACE = "testNamespace";
protected static final String TEST_NAME = "testName";
protected static final String TEST_UNIT = "testUnit";
protected static final Map<String,Object> TEST_ATTRIBUTES = new
HashMap<String,Object>();
@@ -54,12 +55,14 @@
mockKeyFactory = mockery.mock(StatsKeyFactory.class);
}
- protected abstract StatsKey createStatsKey(String name,
+ protected abstract StatsKey createStatsKey(String namespace,
+ String name,
StatsKeyFactory keyFactory,
Map<String,Object>
attributes);
protected StatsKey createStatsKey(final String name) {
- return createStatsKey(name,
+ return createStatsKey(TEST_NAMESPACE,
+ name,
mockKeyFactory,
TEST_ATTRIBUTES);
}
@@ -67,7 +70,8 @@
protected StatsKey createStatsKey(final String name,
final String attrName,
final String attrValue) {
- return createStatsKey(name,
+ return createStatsKey(TEST_NAMESPACE,
+ name,
mockKeyFactory,
Collections.<String,Object>singletonMap(attrName, attrValue));
}
@@ -80,14 +84,14 @@
@Test
public void testConstructWithNullKeyFactory() {
- StatsKey key = createStatsKey(TEST_NAME, null,
Collections.<String,Object>emptyMap());
+ StatsKey key = createStatsKey(TEST_NAMESPACE, TEST_NAME, null,
Collections.<String,Object>emptyMap());
assertSame(NullStatsKeyBuilder.getInstance(), key.buildCopy());
}
@Test
public void testConstructWithNullAttributes() {
try {
- createStatsKey(TEST_NAME, mockKeyFactory, null);
+ createStatsKey(TEST_NAMESPACE, TEST_NAME, mockKeyFactory,
null);
fail("Allowed construction with null attributes");
@@ -101,7 +105,7 @@
final Map<String,Object> testAttributes = new
HashMap<String,Object>();
testAttributes.put("test1", Boolean.TRUE);
- StatsKey key = createStatsKey(TEST_NAME, null, testAttributes);
+ StatsKey key = createStatsKey(TEST_NAMESPACE, TEST_NAME, null,
testAttributes);
assertEquals(Boolean.TRUE, key.getAttribute("test1"));
assertNull(key.getAttribute("test2"));
}
@@ -121,11 +125,11 @@
@Test
public void testGetHierarchyDepth() {
- assertEquals(1, createStatsKey("a").getHierarchyDepth());
- assertEquals(2, createStatsKey("a.b").getHierarchyDepth());
- assertEquals(3, createStatsKey("a.b.c").getHierarchyDepth());
- assertEquals(4, createStatsKey("a.b.c.d").getHierarchyDepth());
- assertEquals(5, createStatsKey("a.b.c.d.e").getHierarchyDepth());
+ assertEquals(1, createStatsKey("a").getHierarchyDepth());
+ assertEquals(2, createStatsKey("a.b").getHierarchyDepth());
+ assertEquals(3, createStatsKey("a.b.c").getHierarchyDepth());
+ assertEquals(4, createStatsKey("a.b.c.d").getHierarchyDepth());
+ assertEquals(5, createStatsKey("a.b.c.d.e").getHierarchyDepth());
}
@Test
@@ -162,10 +166,12 @@
@Test
public void testEqualsKeyWithDifferentAttributes() {
- StatsKey key1 = createStatsKey(TEST_NAME,
+ StatsKey key1 = createStatsKey(TEST_NAMESPACE,
+ TEST_NAME,
mockKeyFactory,
TEST_ATTRIBUTES);
- StatsKey key2 = createStatsKey(TEST_NAME,
+ StatsKey key2 = createStatsKey(TEST_NAMESPACE,
+ TEST_NAME,
mockKeyFactory,
Collections.<String,Object>singletonMap("test", "test"));
assertFalse(key1.equals(key2));
@@ -211,7 +217,8 @@
@Test
public void testToStringContainsAttributes() {
- StatsKey key = createStatsKey(TEST_NAME,
+ StatsKey key = createStatsKey(TEST_NAMESPACE,
+ TEST_NAME,
mockKeyFactory,
Collections.<String,Object>singletonMap("name", "value"));
assertTrue(key.toString().contains("name=value"));
=======================================
---
/stajistics-core/src/test/java/org/stajistics/DefaultStatsKeyBuilderTest.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/test/java/org/stajistics/DefaultStatsKeyBuilderTest.java
Tue Jul 5 10:11:22 2011
@@ -48,23 +48,22 @@
}
@Test
- public void testConstructWithNullName() {
- try {
- new DefaultStatsKeyBuilder((String)null, mockKeyFactory);
-
- } catch (NullPointerException npe) {
- assertEquals("name", npe.getMessage());
- }
+ public void testConstructWithNullNamespace() {
+ StatsKeyBuilder builder = new DefaultStatsKeyBuilder(null, "test",
mockKeyFactory);
+ assertEquals(StatsConstants.DEFAULT_NAMESPACE,
builder.newKey().getNamespace());
+ }
+
+ @Test
+ public void testConstructWithNullName() {
+ StatsKeyBuilder builder = new DefaultStatsKeyBuilder("namespace",
(String)null, mockKeyFactory);
+ assertEquals("<null>", builder.newKey().getName());
}
@Test
public void testConstructWithNameAndNullKeyFactory() {
- try {
- new DefaultStatsKeyBuilder("test", null);
-
- } catch (NullPointerException npe) {
- assertEquals("keyFactory", npe.getMessage());
- }
+ StatsKeyBuilder builder = new
DefaultStatsKeyBuilder("namespace", "test", null);
+ StatsKey key = builder.newKey(); // Assert no exceptions
+ assertSame(NullStatsKeyBuilder.getInstance(), key.buildCopy());
}
@Test
=======================================
--- /stajistics-core/src/test/java/org/stajistics/DefaultStatsKeyTest.java
Thu Feb 25 15:34:31 2010
+++ /stajistics-core/src/test/java/org/stajistics/DefaultStatsKeyTest.java
Tue Jul 5 10:11:22 2011
@@ -25,10 +25,11 @@
public class DefaultStatsKeyTest extends AbstractStatsKeyTestCase {
@Override
- protected StatsKey createStatsKey(final String name,
+ protected StatsKey createStatsKey(final String namespace,
+ final String name,
final StatsKeyFactory keyFactory,
final Map<String,Object> attributes)
{
- return new DefaultStatsKey(name, keyFactory, attributes);
+ return new DefaultStatsKey(namespace, name, keyFactory,
attributes);
}
}
=======================================
---
/stajistics-core/src/test/java/org/stajistics/DefaultStatsManagerTest.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/test/java/org/stajistics/DefaultStatsManagerTest.java
Tue Jul 5 10:11:22 2011
@@ -42,13 +42,12 @@
public class DefaultStatsManagerTest extends AbstractStajisticsTestCase {
private DefaultStatsManager newDefaultStatsManager() {
- return new DefaultStatsManagerFactory().createManager(); // TODO:
mock the managers
+ return new
DefaultStatsManagerFactory().createManager(StatsConstants.DEFAULT_NAMESPACE);
// TODO: mock the managers
}
@Test
public void testCreateWithDefaults() {
StatsManager mgr = newDefaultStatsManager();
- Stats.loadManager(mgr);
assertNotNull(mgr.getConfigManager());
assertNotNull(mgr.getSessionManager());
@@ -204,11 +203,14 @@
}
private void expectInitialize(final StatsManager statsManager,
+ final StatsKeyFactory keyFactory,
final EventManager eventManager,
final TaskService taskService,
final StatsConfigManager configManager,
final StatsSessionManager
sessionManager) {
mockery.checking(new Expectations() {{
+ one(keyFactory).setNamespace(statsManager.getNamespace());
+
one(eventManager).initialize();
one(taskService).initialize();
one(configManager).initialize();
@@ -237,10 +239,10 @@
configBuilderFactory,
taskService);
- expectInitialize(mgr, eventManager, taskService, configManager,
sessionManager);
+ expectInitialize(mgr, keyFactory, eventManager, taskService,
configManager, sessionManager);
try {
- StatsManagerRegistry.getStatsManager("ns");
+ StatsManagerRegistry.getInstance().getStatsManager("ns");
fail("Found namespace: ns");
} catch (StatsNamespaceNotFoundException e) {
// Expected
@@ -249,12 +251,12 @@
try {
mgr.initialize();
- assertEquals(mgr, StatsManagerRegistry.getStatsManager("ns"));
+ assertEquals(mgr,
StatsManagerRegistry.getInstance().getStatsManager("ns"));
// Try again to test no effect
mgr.initialize();
} finally {
- StatsManagerRegistry.removeStatsManager("ns");
+ StatsManagerRegistry.getInstance().removeStatsManager("ns");
}
}
@@ -278,7 +280,7 @@
configBuilderFactory,
taskService);
- expectInitialize(mgr, eventManager, taskService, configManager,
sessionManager);
+ expectInitialize(mgr, keyFactory, eventManager, taskService,
configManager, sessionManager);
mgr.initialize();
mockery.checking(new Expectations() {{
=======================================
--- /stajistics-core/src/test/java/org/stajistics/Issue31Test.java Mon May
31 20:44:40 2010
+++ /stajistics-core/src/test/java/org/stajistics/Issue31Test.java Tue Jul
5 10:11:22 2011
@@ -15,6 +15,7 @@
package org.stajistics;
import org.junit.Test;
+import org.stajistics.bootstrap.DefaultStatsManagerFactory;
import org.stajistics.configuration.DefaultStatsConfigManager;
import org.stajistics.configuration.StatsConfig;
import org.stajistics.configuration.StatsConfigManager;
@@ -28,18 +29,18 @@
@Test
public void testConfigChangedEventIsNotFiredWhenUpdatingRootConfig() {
+ StatsManager statsManager = new
DefaultStatsManagerFactory().createManager(StatsConstants.DEFAULT_NAMESPACE);
EventManager mockEventManager = mockery.mock(EventManager.class);
StatsConfigManager configManager = new
DefaultStatsConfigManager(mockEventManager,
-
Stats.getManager()
- .getKeyFactory());
+
statsManager.getKeyFactory());
StatsConfig defaultRootConfig = configManager.getRootConfig();
- StatsConfig newRootConfig = Stats.getManager()
- .getConfigBuilderFactory()
- .createConfigBuilder(defaultRootConfig)
- .withDescription("dummy")
- .newConfig();
+
+ StatsConfig newRootConfig = statsManager.getConfigBuilderFactory()
+ .createConfigBuilder(defaultRootConfig)
+ .withDescription("dummy")
+ .newConfig();
configManager.setRootConfig(newRootConfig);
}
}
=======================================
--- /stajistics-core/src/test/java/org/stajistics/Issue32Test.java Mon Jun
20 15:36:53 2011
+++ /stajistics-core/src/test/java/org/stajistics/Issue32Test.java Tue Jul
5 10:11:22 2011
@@ -17,6 +17,7 @@
import static org.junit.Assert.assertNull;
import org.junit.Test;
+import org.stajistics.bootstrap.DefaultStatsManagerFactory;
import org.stajistics.configuration.StatsConfig;
/**
@@ -27,7 +28,9 @@
@Test
public void
testIndividualConfigAttributesAreNotInheritedFromParentConfigs() {
- StatsManager statsManager = Stats.getManager();
+ StatsManager statsManager = new
DefaultStatsManagerFactory().createManager(StatsConstants.DEFAULT_NAMESPACE);
+ StatsFactory factory = new StatsFactory(statsManager);
+
StatsConfig defaultRootConfig = statsManager.getConfigManager()
.getRootConfig();
StatsConfig newRootConfig = statsManager.getConfigBuilderFactory()
@@ -37,15 +40,15 @@
statsManager.getConfigManager()
.setRootConfig(newRootConfig);
- StatsKey key = Stats.newKey("test");
-
- Stats.buildConfig()
- .withUnit("[unit defined in child]")
- .setConfigFor(key);
+ StatsKey key = factory.newKey("test");
+
+ factory.buildConfig()
+ .withUnit("[unit defined in child]")
+ .setConfigFor(key);
// Assert that individual attributes are not inherited from parent
configs
- assertNull(Stats.getConfigManager()
- .getConfig(key)
- .getDescription());
+ assertNull(statsManager.getConfigManager()
+ .getConfig(key)
+ .getDescription());
}
}
=======================================
--- /stajistics-core/src/test/java/org/stajistics/SimpleStatsKeyTest.java
Mon Jun 20 15:36:53 2011
+++ /stajistics-core/src/test/java/org/stajistics/SimpleStatsKeyTest.java
Tue Jul 5 10:11:22 2011
@@ -31,10 +31,11 @@
public class SimpleStatsKeyTest extends AbstractStatsKeyTestCase {
@Override
- protected StatsKey createStatsKey(final String name,
+ protected StatsKey createStatsKey(final String namespace,
+ final String name,
final StatsKeyFactory keyFactory,
final Map<String, Object>
attributes) {
- return new SimpleStatsKey(name, keyFactory);
+ return new SimpleStatsKey(namespace, name, keyFactory);
}
@Test
@@ -42,7 +43,7 @@
final Map<String,Object> testAttributes = new
HashMap<String,Object>();
testAttributes.put("test1", Boolean.TRUE);
- StatsKey key = createStatsKey(TEST_NAME, null, testAttributes);
+ StatsKey key = createStatsKey(TEST_NAMESPACE, TEST_NAME, null,
testAttributes);
assertNull(key.getAttribute("test1"));
assertNull(key.getAttribute("test2"));
}
=======================================
---
/stajistics-core/src/test/java/org/stajistics/SingleAttributeStatsKeyTest.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/test/java/org/stajistics/SingleAttributeStatsKeyTest.java
Tue Jul 5 10:11:22 2011
@@ -30,7 +30,8 @@
public class SingleAttributeStatsKeyTest extends AbstractStatsKeyTestCase {
@Override
- protected StatsKey createStatsKey(final String name,
+ protected StatsKey createStatsKey(final String namespace,
+ final String name,
final StatsKeyFactory keyFactory,
final Map<String,Object> attributes)
{
String attrName = null;
@@ -44,7 +45,8 @@
attrValue = entry.getValue();
}
- return new SingleAttributeStatsKey(name,
+ return new SingleAttributeStatsKey(namespace,
+ name,
keyFactory,
attrName,
attrValue);
@@ -53,7 +55,7 @@
@Test
@Override
public void testConstructWithNullAttributes() {
- StatsKey key = createStatsKey(TEST_NAME, mockKeyFactory, null);
+ StatsKey key = createStatsKey(TEST_NAMESPACE, TEST_NAME,
mockKeyFactory, null);
assertEquals(0, key.getAttributeCount());
assertTrue(key.getAttributes().isEmpty());
}
=======================================
--- /stajistics-core/src/test/java/org/stajistics/StajisticsAssert.java Mon
Jun 20 15:36:53 2011
+++ /stajistics-core/src/test/java/org/stajistics/StajisticsAssert.java Tue
Jul 5 10:11:22 2011
@@ -69,21 +69,21 @@
throw assertionError;
}
- public static void assertInstanceOf(final Object test, final Class<?>
iface) {
- assertInstanceOf(null, test, iface);
+ public static void assertInstanceOf(final Class<?> iface, final Object
test) {
+ assertInstanceOf(null, iface, test);
}
- public static void assertInstanceOf(final String message, final Object
test, final Class<?> clazz) {
+ public static void assertInstanceOf(final String message, final
Class<?> clazz, final Object test) {
if (!clazz.isInstance(test)) {
fail(message, "Object is not an instance of %s: %s",
clazz.getName(), test);
}
}
- public static void assertNotInstanceOf(final Object test, final
Class<?> iface) {
- assertNotInstanceOf(null, test, iface);
+ public static void assertNotInstanceOf(final Class<?> iface, final
Object test) {
+ assertNotInstanceOf(null, iface, test);
}
- public static void assertNotInstanceOf(final String message, final
Object test, final Class<?> clazz) {
+ public static void assertNotInstanceOf(final String message, final
Class<?> clazz, final Object test) {
if (clazz.isInstance(test)) {
fail(message, "Object is an instance of %s: %s",
clazz.getName(), test);
}
@@ -137,7 +137,7 @@
public static void assertSerializable(final String message, final
Object test) {
try {
- assertInstanceOf(test, Serializable.class);
+ assertInstanceOf(Serializable.class, test);
} catch (StajisticsAssertionError e) {
compoundFail(message, e);
}
=======================================
***Additional files exist in this changeset.***
==============================================================================
Revision: 2acc27702a03
Author: troy.k...@gmail.com
Date: Wed Jul 6 09:42:09 2011
Log: Refactored management event handling. Created the start of
TaskServiceMXBean. Replaced null-check patterns with utility assertNotNull
method, etc.
http://code.google.com/p/stajistics/source/detail?r=2acc27702a03
Added:
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultTaskServiceMXBean.java
/stajistics-core/src/main/java/org/stajistics/management/beans/TaskServiceMXBean.java
Modified:
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKey.java
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKeyFactory.java
/stajistics-core/src/main/java/org/stajistics/DefaultStatsManager.java
/stajistics-core/src/main/java/org/stajistics/StatsFactory.java
/stajistics-core/src/main/java/org/stajistics/StatsKeyMatcher.java
/stajistics-core/src/main/java/org/stajistics/StatsManagerRegistry.java
/stajistics-core/src/main/java/org/stajistics/StatsProperties.java
/stajistics-core/src/main/java/org/stajistics/Util.java
/stajistics-core/src/main/java/org/stajistics/aop/StatsDecorators.java
/stajistics-core/src/main/java/org/stajistics/aop/StatsProxy.java
/stajistics-core/src/main/java/org/stajistics/aop/StatsSelectiveProxy.java
/stajistics-core/src/main/java/org/stajistics/bootstrap/DefaultStatsManagerFactory.java
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfig.java
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfigBuilder.java
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfigBuilderFactory.java
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfigManager.java
/stajistics-core/src/main/java/org/stajistics/data/AbstractDataContainer.java
/stajistics-core/src/main/java/org/stajistics/data/DataSets.java
/stajistics-core/src/main/java/org/stajistics/event/AsynchronousEventManager.java
/stajistics-core/src/main/java/org/stajistics/event/SynchronousEventManager.java
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterInputStream.java
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterOutputStream.java
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterReader.java
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterWriter.java
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanFactory.java
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanRegistrar.java
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanFactory.java
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanRegistrar.java
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanUtil.java
/stajistics-core/src/main/java/org/stajistics/management/StatsManagementEventHandler.java
/stajistics-core/src/main/java/org/stajistics/management/StatsManagementFactory.java
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsConfigMXBean.java
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsConfigManagerMXBean.java
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsManagerMXBean.java
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsSessionMXBean.java
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsSessionManagerMXBean.java
/stajistics-core/src/main/java/org/stajistics/management/beans/StatsManagerMXBean.java
/stajistics-core/src/main/java/org/stajistics/session/AbstractStatsSession.java
/stajistics-core/src/main/java/org/stajistics/session/AsynchronousSession.java
/stajistics-core/src/main/java/org/stajistics/session/ConcurrentSession.java
/stajistics-core/src/main/java/org/stajistics/session/DefaultSessionManager.java
/stajistics-core/src/main/java/org/stajistics/session/ImmutableSession.java
/stajistics-core/src/main/java/org/stajistics/session/recorder/DataRecorders.java
/stajistics-core/src/main/java/org/stajistics/session/recorder/RangeDataRecorder.java
/stajistics-core/src/main/java/org/stajistics/task/DebugTaskService.java
/stajistics-core/src/main/java/org/stajistics/task/TaskServiceThreadFactory.java
/stajistics-core/src/main/java/org/stajistics/task/ThreadPoolTaskService.java
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractCompositeTracker.java
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractTracker.java
/stajistics-core/src/main/java/org/stajistics/tracker/CompositeTrackerFactory.java
/stajistics-core/src/main/java/org/stajistics/tracker/DefaultTrackerLocator.java
/stajistics-core/src/main/java/org/stajistics/tracker/SingletonTrackerFactoryDecorator.java
/stajistics-core/src/main/java/org/stajistics/tracker/ThreadLocalTrackerFactoryDecorator.java
/stajistics-core/src/main/java/org/stajistics/util/xml/AbstractXMLBindingManager.java
/stajistics-core/src/test/java/org/stajistics/DefaultStatsManagerTest.java
/stajistics-core/src/test/java/org/stajistics/management/DefaultStatsMXBeanRegistrarTest.java
/stajistics-core/src/test/java/org/stajistics/tracker/CompositeTrackerFactoryTest.java
/stajistics-core/src/test/java/org/stajistics/util/AtomicDoubleTest.java
=======================================
--- /dev/null
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultTaskServiceMXBean.java
Wed Jul 6 09:42:09 2011
@@ -0,0 +1,26 @@
+package org.stajistics.management.beans;
+
+import static org.stajistics.Util.assertNotNull;
+
+import org.stajistics.task.TaskService;
+
+/**
+ *
+ *
+ * @author The Stajistics Project
+ */
+public class DefaultTaskServiceMXBean implements TaskServiceMXBean {
+
+ private final TaskService taskService;
+
+ public DefaultTaskServiceMXBean(final TaskService taskService) {
+ assertNotNull(taskService, "taskService");
+ this.taskService = taskService;
+ }
+
+ @Override
+ public boolean getRunning() {
+ return taskService.isRunning();
+ }
+
+}
=======================================
--- /dev/null
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/TaskServiceMXBean.java
Wed Jul 6 09:42:09 2011
@@ -0,0 +1,15 @@
+package org.stajistics.management.beans;
+
+import javax.management.MXBean;
+
+/**
+ *
+ *
+ * @author The Stajistics Project
+ */
+@MXBean
+public interface TaskServiceMXBean {
+
+ boolean getRunning();
+
+}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/DefaultStatsKey.java Tue
Jul 5 10:11:22 2011
+++ /stajistics-core/src/main/java/org/stajistics/DefaultStatsKey.java Wed
Jul 6 09:42:09 2011
@@ -17,6 +17,8 @@
import java.util.Collections;
import java.util.Map;
+import static org.stajistics.Util.assertNotNull;
+
/**
* A {@link StatsKey} implementation that stores attributes in a {@link
Map}. Do not
* instantiate this class directly. Instead use the {@link
StatsKeyFactory} provided by
@@ -43,10 +45,7 @@
final StatsKeyFactory keyFactory,
final Map<String,Object> attributes) {
super(namespace, name, keyFactory);
-
- if (attributes == null) {
- throw new NullPointerException("attributes");
- }
+ assertNotNull(attributes, "attributes");
this.attributes = attributes;
=======================================
---
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKeyFactory.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/DefaultStatsKeyFactory.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics;
+import static org.stajistics.Util.assertNotNull;
+
/**
* The default implementation of {@link StatsKeyFactory}. Do not
@@ -32,9 +34,7 @@
@Override
public void setNamespace(final String namespace) {
- if (namespace == null) {
- throw new NullPointerException("namespace");
- }
+ assertNotNull(namespace, "namespace");
this.namespace = namespace;
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/DefaultStatsManager.java
Tue Jul 5 10:11:22 2011
+++ /stajistics-core/src/main/java/org/stajistics/DefaultStatsManager.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.concurrent.Callable;
import org.stajistics.configuration.DefaultStatsConfigBuilderFactory;
@@ -74,27 +76,13 @@
final StatsKeyFactory keyFactory,
final StatsConfigBuilderFactory
configBuilderFactory,
final TaskService taskService) {
- if (configManager == null) {
- throw new NullPointerException("configManager");
- }
- if (sessionManager == null) {
- throw new NullPointerException("sessionManager");
- }
- if (eventManager == null) {
- throw new NullPointerException("eventManager");
- }
- if (trackerLocator == null) {
- throw new NullPointerException("trackerLocator");
- }
- if (keyFactory == null) {
- throw new NullPointerException("keyFactory");
- }
- if (configBuilderFactory == null) {
- throw new NullPointerException("configBuilderFactory");
- }
- if (taskService == null) {
- throw new NullPointerException("taskService");
- }
+ assertNotNull(configManager, "configManager");
+ assertNotNull(sessionManager, "sessionManager");
+ assertNotNull(eventManager, "eventManager");
+ assertNotNull(trackerLocator, "trackerLocator");
+ assertNotNull(keyFactory, "keyFactory");
+ assertNotNull(configBuilderFactory, "configBuilderFactory");
+ assertNotNull(taskService, "taskService");
if (namespace != null && namespace.isEmpty()) {
this.namespace = null;
@@ -255,64 +243,43 @@
}
public Builder withConfigManager(final StatsConfigManager
configManager) {
- if (configManager == null) {
- throw new NullPointerException("configManager");
- }
-
+ assertNotNull(configManager, "configManager");
this.configManager = configManager;
return this;
}
public Builder withSessionManager(final StatsSessionManager
sessionManager) {
- if (sessionManager == null) {
- throw new NullPointerException("sessionManager");
- }
-
+ assertNotNull(sessionManager, "sessionManager");
this.sessionManager = sessionManager;
return this;
}
public Builder withEventManager(final EventManager eventManager) {
- if (eventManager == null) {
- throw new NullPointerException("eventManager");
- }
-
+ assertNotNull(eventManager, "eventManager");
this.eventManager = eventManager;
return this;
}
public Builder withTrackerLocator(final TrackerLocator
trackerLocator) {
- if (trackerLocator == null) {
- throw new NullPointerException("trackerLocator");
- }
-
+ assertNotNull(trackerLocator, "trackerLocator");
this.trackerLocator = trackerLocator;
return this;
}
public Builder withKeyFactory(final StatsKeyFactory keyFactory) {
- if (keyFactory == null) {
- throw new NullPointerException("keyFactory");
- }
-
+ assertNotNull(keyFactory, "keyFactory");
this.keyFactory = keyFactory;
return this;
}
public Builder withConfigFactory(final StatsConfigBuilderFactory
configBuilderFactory) {
- if (configBuilderFactory == null) {
- throw new NullPointerException("configBuilderFactory");
- }
-
+ assertNotNull(configBuilderFactory, "configBuilderFactory");
this.configBuilderFactory = configBuilderFactory;
return this;
}
public Builder withTaskService(final TaskService taskService) {
- if (taskService == null) {
- throw new NullPointerException("taskService");
- }
-
+ assertNotNull(taskService, "taskService");
this.taskService = taskService;
return this;
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/StatsFactory.java Tue
Jul 5 10:11:22 2011
+++ /stajistics-core/src/main/java/org/stajistics/StatsFactory.java Wed
Jul 6 09:42:09 2011
@@ -1,5 +1,8 @@
package org.stajistics;
+import static org.stajistics.Util.assertNotEmpty;
+import static org.stajistics.Util.assertNotNull;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.stajistics.bootstrap.DefaultStatsManagerFactory;
@@ -36,16 +39,12 @@
protected final StatsManager statsManager;
public StatsFactory(final StatsManager statsManager) {
- if (statsManager == null) {
- throw new NullPointerException("statsManager");
- }
+ assertNotNull(statsManager, "statsManager");
this.statsManager = statsManager;
}
public static StatsFactory forClass(final Class<?> aClass) {
- if (aClass == null) {
- throw new NullPointerException("aClass");
- }
+ assertNotNull(aClass, "aClass");
final StatsManagerRegistry reg =
StatsManagerRegistry.getInstance();
String pkg = aClass.getPackage().getName();
@@ -74,10 +73,7 @@
}
public static StatsFactory forNamespace(final String namespace) {
- if (namespace == null) {
- throw new NullPointerException("namespace");
- }
-
+ assertNotNull(namespace, "namespace");
final StatsManagerRegistry reg =
StatsManagerRegistry.getInstance();
if (reg.isStatsManagerDefined(namespace)) {
@@ -442,9 +438,7 @@
public void failure(final Throwable failure,
final StatsKey... keys) {
try {
- if (keys.length == 0) {
- throw new IllegalArgumentException("must supply at least
one key");
- }
+ assertNotEmpty(keys, "keys");
final TrackerLocator trackerLocator =
statsManager.getTrackerLocator();
=======================================
--- /stajistics-core/src/main/java/org/stajistics/StatsKeyMatcher.java Mon
Jun 20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/StatsKeyMatcher.java Wed
Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics;
+import static org.stajistics.Util.assertNotNull;
+
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
@@ -367,10 +369,7 @@
private final StatsKeyMatcher delegate;
NegationMatcher(final StatsKeyMatcher delegate) {
- if (delegate == null) {
- throw new NullPointerException("delegate");
- }
-
+ assertNotNull(delegate, "delegate");
this.delegate = delegate;
}
@@ -406,15 +405,9 @@
CompositeMatcher(final Op op,
final StatsKeyMatcher matcher1,
final StatsKeyMatcher matcher2) {
- if (op == null) {
- throw new NullPointerException("op");
- }
- if (matcher1 == null) {
- throw new NullPointerException("matcher1");
- }
- if (matcher2 == null) {
- throw new NullPointerException("matcher2");
- }
+ assertNotNull(op, "op");
+ assertNotNull(matcher1, "matcher1");
+ assertNotNull(matcher2, "matcher2");
this.op = op;
this.matcher1 = matcher1;
@@ -585,9 +578,7 @@
private final StatsKey testKey;
ExactMatcher(final StatsKey testKey) {
- if (testKey == null) {
- throw new NullPointerException("testKey");
- }
+ assertNotNull(testKey, "testKey");
this.testKey = testKey;
}
@@ -615,12 +606,8 @@
private final Object test;
EqualsMatcher(final MatchTarget target, final Object test) {
- if (target == null) {
- throw new NullPointerException("target");
- }
- if (test == null) {
- throw new NullPointerException("test");
- }
+ assertNotNull(target, "target");
+ assertNotNull(test, "test");
this.target = target;
this.test = test;
@@ -671,12 +658,8 @@
private final String prefix;
PrefixMatcher(final MatchTarget target, final String prefix) {
- if (target == null) {
- throw new NullPointerException("target");
- }
- if (prefix == null) {
- throw new NullPointerException("prefix");
- }
+ assertNotNull(target, "target");
+ assertNotNull(prefix, "prefix");
this.target = target;
this.prefix = prefix;
@@ -728,9 +711,7 @@
}
private static String formatKeyName(String keyName) {
- if (keyName == null) {
- throw new NullPointerException("keyName");
- }
+ assertNotNull(keyName, "keyName");
if (!keyName.endsWith(".")) {
keyName += ".";
@@ -745,12 +726,8 @@
private final String suffix;
SuffixMatcher(final MatchTarget target, final String suffix) {
- if (target == null) {
- throw new NullPointerException("target");
- }
- if (suffix == null) {
- throw new NullPointerException("suffix");
- }
+ assertNotNull(target, "target");
+ assertNotNull(suffix, "suffix");
this.target = target;
this.suffix = suffix;
@@ -801,12 +778,8 @@
private final String string;
ContainsMatcher(final MatchTarget target, final String string) {
- if (target == null) {
- throw new NullPointerException("target");
- }
- if (string == null) {
- throw new NullPointerException("string");
- }
+ assertNotNull(target, "target");
+ assertNotNull(string, "string");
this.target = target;
this.string = string;
@@ -933,9 +906,7 @@
LengthMatcher(final MatchTarget target,
int length) {
- if (target == null) {
- throw new NullPointerException("target");
- }
+ assertNotNull(target, "target");
if (length < 0) {
length = 0;
}
@@ -989,12 +960,8 @@
public RegExMatcher(final MatchTarget target,
final Pattern pattern) {
- if (target == null) {
- throw new NullPointerException("target");
- }
- if (pattern == null) {
- throw new NullPointerException("pattern");
- }
+ assertNotNull(target, "target");
+ assertNotNull(pattern, "pattern");
this.target = target;
this.pattern = pattern;
=======================================
--- /stajistics-core/src/main/java/org/stajistics/StatsManagerRegistry.java
Tue Jul 5 10:11:22 2011
+++ /stajistics-core/src/main/java/org/stajistics/StatsManagerRegistry.java
Wed Jul 6 09:42:09 2011
@@ -1,5 +1,7 @@
package org.stajistics;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
@@ -39,9 +41,7 @@
}
public void removeStatsManager(final String namespace) {
- if (namespace == null) {
- throw new NullPointerException("namespace");
- }
+ assertNotNull(namespace, "namespace");
registry.remove(namespace);
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/StatsProperties.java Mon
Jun 20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/StatsProperties.java Wed
Jul 6 09:42:09 2011
@@ -14,6 +14,9 @@
*/
package org.stajistics;
+import static org.stajistics.Util.assertNotEmpty;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Arrays;
import java.util.Map;
@@ -335,10 +338,7 @@
@SuppressWarnings("unchecked")
public MapStatsProperties(final Map propertyMap) {
- if (propertyMap == null) {
- throw new NullPointerException("propertyMap");
- }
-
+ assertNotNull(propertyMap, "propertyMap");
this.propertyMap = propertyMap;
}
@@ -359,10 +359,7 @@
private StatsProperties[] properties;
public MultiStatsProperties(final StatsProperties... properties) {
- if (properties.length == 0) {
- throw new IllegalArgumentException("Must supply at least
one properties element");
- }
-
+ assertNotEmpty(properties, "properties");
this.properties = Arrays.copyOf(properties, properties.length);
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/Util.java Sun Jun 19
13:23:35 2011
+++ /stajistics-core/src/main/java/org/stajistics/Util.java Wed Jul 6
09:42:09 2011
@@ -14,6 +14,9 @@
*/
package org.stajistics;
+import java.util.Collection;
+import java.util.Map;
+
/**
*
*
@@ -23,6 +26,55 @@
public final class Util {
private Util() {}
+
+ public static void assertNotNull(final Object test, final String
varName) {
+ if (test == null) {
+ throw new NullPointerException(varName);
+ }
+ }
+
+ public static void assertNotEmpty(final Object[] test, final String
varName) {
+ if (test == null) {
+ throw new NullPointerException(varName);
+ }
+ if (test.length == 0) {
+ throw new IllegalArgumentException("empty " + varName);
+ }
+ }
+
+ public static void assertNotEmpty(final CharSequence test, final
String varName) {
+ if (test == null) {
+ throw new NullPointerException(varName);
+ }
+ if (test.length() == 0) {
+ throw new IllegalArgumentException("empty " + varName);
+ }
+ }
+
+ public static void assertNotEmptyAfterTrim(CharSequence test, final
String varName) {
+ if (test != null) {
+ test = test.toString().trim();
+ }
+ assertNotEmpty(test, varName);
+ }
+
+ public static <E> void assertNotEmpty(final Collection<E> test, final
String varName) {
+ if (test == null) {
+ throw new NullPointerException(varName);
+ }
+ if (test.isEmpty()) {
+ throw new IllegalArgumentException("empty " + varName);
+ }
+ }
+
+ public static <K,V> void assertNotEmpty(final Map<K,V> test, final
String varName) {
+ if (test == null) {
+ throw new NullPointerException(varName);
+ }
+ if (test.isEmpty()) {
+ throw new IllegalArgumentException("empty " + varName);
+ }
+ }
public static boolean equalsNullAware(final Object obj1, final Object
obj2) {
if (obj1 == null) {
=======================================
--- /stajistics-core/src/main/java/org/stajistics/aop/StatsDecorators.java
Tue Jul 5 10:11:22 2011
+++ /stajistics-core/src/main/java/org/stajistics/aop/StatsDecorators.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.aop;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Observable;
import java.util.Observer;
import java.util.concurrent.Callable;
@@ -149,9 +151,7 @@
public ThreadFactoryWrapper(final ThreadFactory threadFactory,
final StatsKey key) {
- if (threadFactory == null) {
- throw new NullPointerException("threadFactory");
- }
+ assertNotNull(threadFactory, "threadFactory");
this.threadFactory = threadFactory;
this.key = key;
@@ -172,15 +172,9 @@
public ExecutorWrapper(final Executor executor,
final StatsKey executorKey,
final StatsKey commandKey) {
- if (executor == null) {
- throw new NullPointerException("executor");
- }
- if (executorKey == null) {
- throw new NullPointerException("executorKey");
- }
- if (commandKey == null) {
- throw new NullPointerException("commandKey");
- }
+ assertNotNull(executor, "executor");
+ assertNotNull(executorKey, "executorKey");
+ assertNotNull(commandKey, "commandKey");
this.executor = executor;
this.executorKey = executorKey;
=======================================
--- /stajistics-core/src/main/java/org/stajistics/aop/StatsProxy.java Tue
Jul 5 10:11:22 2011
+++ /stajistics-core/src/main/java/org/stajistics/aop/StatsProxy.java Wed
Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.aop;
+import static org.stajistics.Util.assertNotNull;
+
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -57,12 +59,8 @@
this.factory = factory;
}
- if (key == null) {
- throw new NullPointerException("key");
- }
- if (target == null) {
- throw new NullPointerException("target");
- }
+ assertNotNull(key, "key");
+ assertNotNull(target, "target");
this.key = key;
this.target = target;
=======================================
---
/stajistics-core/src/main/java/org/stajistics/aop/StatsSelectiveProxy.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/aop/StatsSelectiveProxy.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,9 @@
*/
package org.stajistics.aop;
+import static org.stajistics.Util.assertNotEmpty;
+import static org.stajistics.Util.assertNotNull;
+
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
@@ -39,10 +42,7 @@
final SelectionCriteria criteria) {
super(factory, key, target);
- if (criteria == null) {
- throw new NullPointerException("criteria");
- }
-
+ assertNotNull(criteria, "criteria");
this.criteria = criteria;
}
@@ -142,13 +142,7 @@
public CompositeSelectionCriteria(final List<SelectionCriteria>
criteriaList,
final Op operation) {
- if (criteriaList == null) {
- throw new NullPointerException("null criteriaList");
- }
- if (criteriaList.isEmpty()) {
- throw new IllegalArgumentException("empty criteriaList");
- }
-
+ assertNotEmpty(criteriaList, "criteriaList");
this.criteriaList = criteriaList.toArray(new
SelectionCriteria[criteriaList.size()]);
this.operation = operation;
}
@@ -194,9 +188,7 @@
}
public EnabledCriteria(final AtomicBoolean enabled) {
- if (enabled == null) {
- throw new NullPointerException("enabled");
- }
+ assertNotNull(enabled, "enabled");
this.enabled = enabled;
}
@@ -225,10 +217,7 @@
public MethodCriteria(final Method method,
final boolean include) {
- if (method == null) {
- throw new NullPointerException("method");
- }
-
+ assertNotNull(method, "method");
this.method = method;
this.include = include;
}
@@ -250,10 +239,7 @@
public MethodSetCriteria(final Set<Method> methodSet,
final boolean include) {
- if (methodSet == null) {
- throw new NullPointerException("methodSet");
- }
-
+ assertNotNull(methodSet, "methodSet");
this.methodSet = methodSet;
this.include = include;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/bootstrap/DefaultStatsManagerFactory.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/bootstrap/DefaultStatsManagerFactory.java
Wed Jul 6 09:42:09 2011
@@ -14,9 +14,12 @@
*/
package org.stajistics.bootstrap;
+import static org.stajistics.Util.assertNotNull;
+
import org.stajistics.DefaultStatsManager;
import org.stajistics.StatsManager;
import org.stajistics.StatsProperties;
+import org.stajistics.management.DefaultStatsMXBeanRegistrar;
import org.stajistics.management.StatsMXBeanRegistrar;
import org.stajistics.management.StatsManagementEventHandler;
@@ -29,10 +32,8 @@
private static final String PROP_MANAGEMENT_ENABLED =
StatsMXBeanRegistrar.class.getName() + ".enabled";
@Override
- public DefaultStatsManager createManager(final String namespace) {
- if (namespace == null) {
- throw new NullPointerException("namespace");
- }
+ public StatsManager createManager(final String namespace) {
+ assertNotNull(namespace, "namespace");
boolean stajisticsEnabled =
StatsProperties.getBooleanProperty(PROP_STAJISTICS_ENABLED, true);
DefaultStatsManager manager = new DefaultStatsManager.Builder()
@@ -41,8 +42,10 @@
.newManager();
if (StatsProperties.getBooleanProperty(PROP_MANAGEMENT_ENABLED,
true)) {
+ StatsMXBeanRegistrar mxBeanRegistrar = new
DefaultStatsMXBeanRegistrar(namespace);
+ StatsManagementEventHandler managementEventHandler = new
StatsManagementEventHandler(mxBeanRegistrar);
manager.getEventManager()
- .addGlobalEventHandler(new
StatsManagementEventHandler());
+ .addGlobalEventHandler(managementEventHandler);
}
manager.initialize();
=======================================
---
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfig.java
Mon May 31 20:44:40 2010
+++
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfig.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,9 @@
*/
package org.stajistics.configuration;
+import static org.stajistics.Util.assertNotEmpty;
+import static org.stajistics.Util.assertNotNull;
+
import org.stajistics.Util;
import org.stajistics.session.StatsSessionFactory;
import org.stajistics.session.recorder.DataRecorderFactory;
@@ -69,22 +72,10 @@
final DataRecorderFactory
dataRecorderFactory,
final String unit,
final String description) {
-
- if (trackerFactory == null) {
- throw new NullPointerException("trackerFactory");
- }
- if (sessionFactory == null) {
- throw new NullPointerException("sessionFactory");
- }
- if (dataRecorderFactory == null) {
- throw new NullPointerException("dataRecorderFactory");
- }
- if (unit == null) {
- throw new NullPointerException("unit");
- }
- if (unit.length() == 0) {
- throw new IllegalArgumentException("empty unit");
- }
+ assertNotNull(trackerFactory, "trackerFactory");
+ assertNotNull(sessionFactory, "sessionFactory");
+ assertNotNull(dataRecorderFactory, "dataRecorderFactory");
+ assertNotEmpty(unit, "unit");
this.enabled = enabled;
this.trackerFactory = trackerFactory;
=======================================
---
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfigBuilder.java
Mon May 31 20:44:40 2010
+++
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfigBuilder.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,9 @@
*/
package org.stajistics.configuration;
+import static org.stajistics.Util.assertNotEmpty;
+import static org.stajistics.Util.assertNotNull;
+
import org.stajistics.StatsConstants;
import org.stajistics.StatsKey;
import org.stajistics.session.DefaultSessionFactory;
@@ -63,9 +66,7 @@
*/
public DefaultStatsConfigBuilder(final StatsConfigManager
configManager,
final StatsConfig config) {
- if (configManager == null) {
- throw new NullPointerException("configManager");
- }
+ assertNotNull(configManager, "configManager");
this.configManager = configManager;
@@ -87,40 +88,28 @@
@Override
public StatsConfigBuilder withSessionFactory(final StatsSessionFactory
sessionFactory) {
- if (sessionFactory == null) {
- throw new NullPointerException("sessionFactory");
- }
-
+ assertNotNull(sessionFactory, "sessionFactory");
this.sessionFactory = sessionFactory;
return this;
}
@Override
public StatsConfigBuilder withTrackerFactory(final TrackerFactory<?>
trackerFactory) {
- if (trackerFactory == null) {
- throw new NullPointerException("trackerFactory");
- }
-
+ assertNotNull(trackerFactory, "trackerFactory");
this.trackerFactory = trackerFactory;
return this;
}
@Override
public StatsConfigBuilder withDataRecorderFactory(final
DataRecorderFactory dataRecorderFactory) {
- if (dataRecorderFactory == null) {
- throw new NullPointerException("dataRecorderFactory");
- }
-
+ assertNotNull(dataRecorderFactory, "dataRecorderFactory");
this.dataRecorderFactory = dataRecorderFactory;
return this;
}
@Override
public StatsConfigBuilder withUnit(final String unit) {
- if (unit == null) {
- throw new NullPointerException("unit");
- }
-
+ assertNotEmpty(unit, "unit");
this.unit = unit;
return this;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfigBuilderFactory.java
Mon May 31 20:44:40 2010
+++
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfigBuilderFactory.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.configuration;
+import static org.stajistics.Util.assertNotNull;
+
/**
* A factory for creating {@link StatsConfigBuilder}s.
*
@@ -31,10 +33,7 @@
* @throws NullPointerException If <tt>configManager</tt> is
<tt>null</tt>.
*/
public DefaultStatsConfigBuilderFactory(final StatsConfigManager
configManager) {
- if (configManager == null) {
- throw new NullPointerException("configManager");
- }
-
+ assertNotNull(configManager, "configManager");
this.configManager = configManager;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfigManager.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/configuration/DefaultStatsConfigManager.java
Wed Jul 6 09:42:09 2011
@@ -1,5 +1,7 @@
package org.stajistics.configuration;
+import static org.stajistics.Util.assertNotNull;
+
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
@@ -88,15 +90,9 @@
final StatsKeyFactory keyFactory,
final StatsConfig rootConfig,
Map<String,StatsConfig> configMap) {
- if (eventManager == null) {
- throw new NullPointerException("eventManager");
- }
- if (keyFactory == null) {
- throw new NullPointerException("keyFactory");
- }
- if (rootConfig == null) {
- throw new NullPointerException("rootConfig");
- }
+ assertNotNull(eventManager, "eventManager");
+ assertNotNull(keyFactory, "keyFactory");
+ assertNotNull(rootConfig, "rootConfig");
this.eventManager = eventManager;
this.keyFactory = keyFactory;
@@ -163,7 +159,7 @@
lifeCycleSupport.shutdown(new Callable<Void>() {
@Override
public Void call() throws Exception {
-
eventManager.fireEvent(EventType.CONFIG_MANAGER_SHUTTING_DOWN, null, this);
+
eventManager.fireEvent(EventType.CONFIG_MANAGER_SHUTTING_DOWN, null,
DefaultStatsConfigManager.this);
clearConfigs();
return null;
}
@@ -201,10 +197,7 @@
@Override
public void setConfig(final StatsKey key, final StatsConfig config) {
- if (key == null) {
- throw new NullPointerException("key");
- }
-
+ assertNotNull(key, "key");
updateLock.lock();
KeyEntry entry = entryFor(key);
@@ -424,9 +417,7 @@
final KeyEntry parentEntry,
final StatsConfig config) {
- if (key == null) {
- throw new NullPointerException("key");
- }
+ assertNotNull(key, "key");
this.key = key;
this.parentEntry = parentEntry;
@@ -528,10 +519,7 @@
private final List<KeyEntry> entryList = new
LinkedList<KeyEntry>();
KeyEntryDestroyer(final Map<String, KeyEntry> keyMap) {
- if (keyMap == null) {
- throw new NullPointerException("keyMap");
- }
-
+ assertNotNull(keyMap, "keyMap");
this.keyMap = keyMap;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/data/AbstractDataContainer.java
Sun Jun 19 13:23:35 2011
+++
/stajistics-core/src/main/java/org/stajistics/data/AbstractDataContainer.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,9 @@
*/
package org.stajistics.data;
+import static org.stajistics.Util.assertNotEmpty;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Map;
import java.util.Set;
@@ -28,9 +31,7 @@
private final Map<String,Object> dataMap;
protected AbstractDataContainer(final Map<String,Object> dataMap) {
- if (dataMap == null) {
- throw new NullPointerException("dataMap");
- }
+ assertNotNull(dataMap, "dataMap");
this.dataMap = dataMap;
}
@@ -89,15 +90,8 @@
@Override
public void setField(final String name, final Object value) {
- if (name == null) {
- throw new NullPointerException("name");
- }
- if (value == null) {
- throw new NullPointerException("value");
- }
- if (name.length() == 0) {
- throw new IllegalArgumentException("empty name");
- }
+ assertNotEmpty(name, "name");
+ assertNotNull(value, "value");
dataMap.put(name, value);
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/data/DataSets.java Wed
Jun 15 10:23:52 2011
+++ /stajistics-core/src/main/java/org/stajistics/data/DataSets.java Wed
Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.data;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Set;
/**
@@ -42,10 +44,7 @@
private final MetaData delegateMetaData;
ImmutableDataSetDecorator(final DataSet delegate) {
- if (delegate == null) {
- throw new NullPointerException("delegate");
- }
-
+ assertNotNull(delegate, "delegate");
this.delegate = delegate;
if (delegate.hasMetaData()) {
@@ -128,9 +127,7 @@
private final MetaData delegate;
ImmutableMetaDataDecorator(final MetaData delegate) {
- if (delegate == null) {
- throw new NullPointerException("delegate");
- }
+ assertNotNull(delegate, "delegate");
this.delegate = delegate;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/event/AsynchronousEventManager.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/event/AsynchronousEventManager.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.event;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.concurrent.Callable;
import org.stajistics.StatsKey;
@@ -28,10 +30,7 @@
private final TaskService taskService;
public AsynchronousEventManager(final TaskService taskService) {
- if (taskService == null) {
- throw new NullPointerException("taskService");
- }
-
+ assertNotNull(taskService, "taskService");
this.taskService = taskService;
}
@@ -53,15 +52,9 @@
EventCallable(final EventType eventType,
final StatsKey key,
final Object target) {
- if (eventType == null) {
- throw new NullPointerException("eventType");
- }
- if (key == null) {
- throw new NullPointerException("key");
- }
- if (target == null) {
- throw new NullPointerException("target");
- }
+ assertNotNull(eventType, "eventType");
+ assertNotNull(key, "key");
+ assertNotNull(target, "target");
this.eventType = eventType;
this.key = key;
=======================================
---
/stajistics-core/src/main/java/org/stajistics/event/SynchronousEventManager.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/event/SynchronousEventManager.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.event;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -96,23 +98,15 @@
@Override
public void addGlobalEventHandler(final EventHandler eventHandler) {
- if (eventHandler == null) {
- throw new NullPointerException("eventHandler");
- }
-
+ assertNotNull(eventHandler, "eventHandler");
globalEventHandlers.add(eventHandler);
}
@Override
public void addEventHandler(final StatsKey key,
final EventHandler eventHandler) {
- if (key == null) {
- throw new NullPointerException("key");
- }
-
- if (eventHandler == null) {
- throw new NullPointerException("eventHandler");
- }
+ assertNotNull(key, "key");
+ assertNotNull(eventHandler, "eventHandler");
List<EventHandler> eventHandlers = getEventHandlers(key, true);
eventHandlers.add(eventHandler);
@@ -172,12 +166,8 @@
public void fireEvent(final EventType eventType,
final StatsKey key,
final Object target) {
- if (eventType == null) {
- throw new NullPointerException("eventType");
- }
- if (target == null) {
- throw new NullPointerException("target");
- }
+ assertNotNull(eventType, "eventType");
+ assertNotNull(target, "target");
logger.trace("Firing event: {}, key: {}", eventType, key);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterInputStream.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterInputStream.java
Wed Jul 6 09:42:09 2011
@@ -1,5 +1,7 @@
package org.stajistics.io;
+import static org.stajistics.Util.assertNotNull;
+
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -30,10 +32,7 @@
factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
}
- if (key == null) {
- throw new NullPointerException("key");
- }
-
+ assertNotNull(key, "key");
tracker = factory.getManualTracker(key);
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterOutputStream.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/io/StatsFilterOutputStream.java
Wed Jul 6 09:42:09 2011
@@ -1,5 +1,7 @@
package org.stajistics.io;
+import static org.stajistics.Util.assertNotNull;
+
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -30,10 +32,7 @@
factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
}
- if (key == null) {
- throw new NullPointerException("key");
- }
-
+ assertNotNull(key, "key");
tracker = factory.getManualTracker(key);
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/io/StatsFilterReader.java
Tue Jul 5 10:11:22 2011
+++ /stajistics-core/src/main/java/org/stajistics/io/StatsFilterReader.java
Wed Jul 6 09:42:09 2011
@@ -1,5 +1,7 @@
package org.stajistics.io;
+import static org.stajistics.Util.assertNotNull;
+
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
@@ -31,10 +33,7 @@
factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
}
- if (key == null) {
- throw new NullPointerException("key");
- }
-
+ assertNotNull(key, "key");
tracker = factory.getManualTracker(key);
}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/io/StatsFilterWriter.java
Tue Jul 5 10:11:22 2011
+++ /stajistics-core/src/main/java/org/stajistics/io/StatsFilterWriter.java
Wed Jul 6 09:42:09 2011
@@ -1,5 +1,7 @@
package org.stajistics.io;
+import static org.stajistics.Util.assertNotNull;
+
import java.io.FilterWriter;
import java.io.IOException;
import java.io.Writer;
@@ -30,10 +32,7 @@
factory =
StatsFactory.forNamespace(StatsConstants.DEFAULT_NAMESPACE);
}
- if (key == null) {
- throw new NullPointerException("key");
- }
-
+ assertNotNull(key, "key");
tracker = factory.getManualTracker(key);
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanFactory.java
Wed Jun 15 16:30:39 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanFactory.java
Wed Jul 6 09:42:09 2011
@@ -23,13 +23,16 @@
import org.stajistics.management.beans.DefaultStatsManagerMXBean;
import org.stajistics.management.beans.DefaultStatsSessionMXBean;
import org.stajistics.management.beans.DefaultStatsSessionManagerMXBean;
+import org.stajistics.management.beans.DefaultTaskServiceMXBean;
import org.stajistics.management.beans.StatsConfigMXBean;
import org.stajistics.management.beans.StatsConfigManagerMXBean;
import org.stajistics.management.beans.StatsManagerMXBean;
import org.stajistics.management.beans.StatsSessionMXBean;
import org.stajistics.management.beans.StatsSessionManagerMXBean;
+import org.stajistics.management.beans.TaskServiceMXBean;
import org.stajistics.session.StatsSession;
import org.stajistics.session.StatsSessionManager;
+import org.stajistics.task.TaskService;
/**
*
@@ -40,30 +43,37 @@
public class DefaultStatsMXBeanFactory implements StatsMXBeanFactory {
@Override
- public StatsManagerMXBean createManagerMBean(StatsManager
statsManager) {
+ public StatsManagerMXBean createManagerMXBean(StatsManager
statsManager) {
return new DefaultStatsManagerMXBean(statsManager);
}
@Override
- public StatsConfigManagerMXBean createConfigManagerMBean(final
StatsConfigManager configManager) {
+ public StatsConfigManagerMXBean createConfigManagerMXBean(final
StatsConfigManager configManager) {
return new DefaultStatsConfigManagerMXBean(configManager);
}
@Override
- public StatsConfigMXBean createConfigMBean(final String namespace,
+ public StatsSessionManagerMXBean createSessionManagerMXBean(final
StatsSessionManager sessionManager) {
+ return new DefaultStatsSessionManagerMXBean(sessionManager);
+ }
+
+ @Override
+ public TaskServiceMXBean createTaskServiceMXBean(final TaskService
taskService) {
+ return new DefaultTaskServiceMXBean(taskService);
+ }
+
+ @Override
+ public StatsConfigMXBean createConfigMXBean(final String namespace,
final StatsKey key,
final StatsConfig config) {
return new DefaultStatsConfigMXBean(namespace, key, config);
}
@Override
- public StatsSessionMXBean createSessionMBean(final String namespace,
+ public StatsSessionMXBean createSessionMXBean(final String namespace,
final StatsSession
session) {
return new DefaultStatsSessionMXBean(namespace, session);
}
- @Override
- public StatsSessionManagerMXBean createSessionManagerMBean(final
StatsSessionManager sessionManager) {
- return new DefaultStatsSessionManagerMXBean(sessionManager);
- }
-}
+
+}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanRegistrar.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanRegistrar.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.management;
+import static org.stajistics.Util.assertNotEmpty;
+import static org.stajistics.Util.assertNotNull;
import static
org.stajistics.management.StatsMXBeanUtil.getConfigManagerObjectName;
import static
org.stajistics.management.StatsMXBeanUtil.getConfigManagerObjectNameString;
import static
org.stajistics.management.StatsMXBeanUtil.getConfigObjectName;
@@ -24,6 +26,8 @@
import static
org.stajistics.management.StatsMXBeanUtil.getSessionObjectNameString;
import static
org.stajistics.management.StatsMXBeanUtil.getStatsManagerObjectName;
import static
org.stajistics.management.StatsMXBeanUtil.getStatsManagerObjectNameString;
+import static
org.stajistics.management.StatsMXBeanUtil.getTaskServiceObjectName;
+import static
org.stajistics.management.StatsMXBeanUtil.getTaskServiceObjectNameString;
import java.io.IOException;
import java.io.ObjectInputStream;
@@ -44,8 +48,10 @@
import org.stajistics.management.beans.StatsManagerMXBean;
import org.stajistics.management.beans.StatsSessionMXBean;
import org.stajistics.management.beans.StatsSessionManagerMXBean;
+import org.stajistics.management.beans.TaskServiceMXBean;
import org.stajistics.session.StatsSession;
import org.stajistics.session.StatsSessionManager;
+import org.stajistics.task.TaskService;
/**
*
@@ -57,7 +63,7 @@
private static Logger logger =
LoggerFactory.getLogger(DefaultStatsMXBeanRegistrar.class);
- private final StatsMXBeanFactory mBeanFactory;
+ private final StatsMXBeanFactory mxBeanFactory;
private final String namespace;
private boolean isPlatformMBeanServer;
@@ -73,23 +79,14 @@
}
public DefaultStatsMXBeanRegistrar(final String namespace,
- final StatsMXBeanFactory
mBeanFactory,
+ final StatsMXBeanFactory
mxBeanFactory,
final MBeanServer mBeanServer) {
- if (namespace == null) {
- throw new NullPointerException("namespace");
- }
- if (namespace.isEmpty()) {
- throw new IllegalArgumentException("empty namespace");
- }
- if (mBeanFactory == null) {
- throw new NullPointerException("mBeanFactory");
- }
- if (mBeanServer == null) {
- throw new NullPointerException("mBeanServer");
- }
+ assertNotEmpty(namespace, "namespace");
+ assertNotNull(mxBeanFactory, "mxBeanFactory");
+ assertNotNull(mBeanServer, "mBeanServer");
this.namespace = namespace;
- this.mBeanFactory = mBeanFactory;
+ this.mxBeanFactory = mxBeanFactory;
this.mBeanServer = mBeanServer;
this.isPlatformMBeanServer =
mBeanServer.equals(ManagementFactory.getPlatformMBeanServer());
@@ -111,7 +108,7 @@
try {
StatsManagerMXBean statsManagerMBean =
- mBeanFactory.createManagerMBean(statsManager);
+ mxBeanFactory.createManagerMXBean(statsManager);
ObjectName objectName = getStatsManagerObjectName(namespace);
registerMBean(statsManagerMBean, objectName);
@@ -126,9 +123,7 @@
}
@Override
- public void unregisterStatsManagerMXBean(final StatsManager
statsManager) {
- assert statsManager.getNamespace().equals(namespace);
-
+ public void unregisterStatsManagerMXBean() {
try {
ObjectName objectName = getStatsManagerObjectName(namespace);
mBeanServer.unregisterMBean(objectName);
@@ -146,7 +141,7 @@
public void registerSessionManagerMXBean(final StatsSessionManager
sessionManager) {
try {
StatsSessionManagerMXBean statsSessionManagerMBean =
- mBeanFactory.createSessionManagerMBean(sessionManager);
+ mxBeanFactory.createSessionManagerMXBean(sessionManager);
ObjectName objectName = getSessionManagerObjectName(namespace);
registerMBean(statsSessionManagerMBean, objectName);
@@ -179,7 +174,7 @@
public void registerConfigManagerMXBean(final StatsConfigManager
configManager) {
try {
StatsConfigManagerMXBean statsConfigManagerMBean =
- mBeanFactory.createConfigManagerMBean(configManager);
+ mxBeanFactory.createConfigManagerMXBean(configManager);
ObjectName objectName = getConfigManagerObjectName(namespace);
registerMBean(statsConfigManagerMBean, objectName);
@@ -207,12 +202,44 @@
throw new StatsManagementException(e);
}
}
+
+ @Override
+ public void registerTaskServiceMXBean(final TaskService taskService) {
+ try {
+ TaskServiceMXBean taskServiceMBean =
mxBeanFactory.createTaskServiceMXBean(taskService);
+
+ ObjectName objectName = getTaskServiceObjectName(namespace);
+ registerMBean(taskServiceMBean, objectName);
+
+ logRegistrationSuccess(true, TaskServiceMXBean.class, null,
objectName);
+
+ } catch (Exception e) {
+ logRegistrationFailure(true, TaskServiceMXBean.class, null,
getTaskServiceObjectNameString(namespace, true), e);
+
+ throw new StatsManagementException(e);
+ }
+ }
+
+ @Override
+ public void unregisterTaskServiceMXBean() {
+ try {
+ ObjectName objectName = getTaskServiceObjectName(namespace);
+ mBeanServer.unregisterMBean(objectName);
+
+ logRegistrationSuccess(false, TaskServiceMXBean.class, null,
objectName);
+
+ } catch (Exception e) {
+ logRegistrationFailure(false, TaskServiceMXBean.class, null,
getTaskServiceObjectNameString(namespace, true), e);
+
+ throw new StatsManagementException(e);
+ }
+ }
@Override
public void registerConfigMXBean(final StatsKey key,
final StatsConfig config) {
try {
- StatsConfigMXBean configMBean =
mBeanFactory.createConfigMBean(namespace, key, config);
+ StatsConfigMXBean configMBean =
mxBeanFactory.createConfigMXBean(namespace, key, config);
ObjectName objectName = getConfigObjectName(namespace, key);
registerMBean(configMBean, objectName);
@@ -246,8 +273,7 @@
@Override
public void registerSessionMXBean(final StatsSession session) {
try {
- StatsSessionMXBean sessionMBean =
mBeanFactory.createSessionMBean(namespace,
-
session);
+ StatsSessionMXBean sessionMBean =
mxBeanFactory.createSessionMXBean(namespace, session);
ObjectName objectName = getSessionObjectName(namespace,
session.getKey());
registerMBean(sessionMBean, objectName);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanFactory.java
Wed Jun 15 16:30:39 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanFactory.java
Wed Jul 6 09:42:09 2011
@@ -25,8 +25,10 @@
import org.stajistics.management.beans.StatsManagerMXBean;
import org.stajistics.management.beans.StatsSessionMXBean;
import org.stajistics.management.beans.StatsSessionManagerMXBean;
+import org.stajistics.management.beans.TaskServiceMXBean;
import org.stajistics.session.StatsSession;
import org.stajistics.session.StatsSessionManager;
+import org.stajistics.task.TaskService;
/**
*
@@ -36,13 +38,15 @@
*/
public interface StatsMXBeanFactory extends Serializable {
- StatsManagerMXBean createManagerMBean(StatsManager statsManager);
-
- StatsConfigManagerMXBean createConfigManagerMBean(StatsConfigManager
configManager);
-
- StatsConfigMXBean createConfigMBean(String namespace, StatsKey key,
StatsConfig config);
-
- StatsSessionManagerMXBean
createSessionManagerMBean(StatsSessionManager sessionManager);
-
- StatsSessionMXBean createSessionMBean(String namespace, StatsSession
session);
-}
+ StatsManagerMXBean createManagerMXBean(StatsManager statsManager);
+
+ StatsConfigManagerMXBean createConfigManagerMXBean(StatsConfigManager
configManager);
+
+ StatsSessionManagerMXBean
createSessionManagerMXBean(StatsSessionManager sessionManager);
+
+ TaskServiceMXBean createTaskServiceMXBean(TaskService taskService);
+
+ StatsConfigMXBean createConfigMXBean(String namespace, StatsKey key,
StatsConfig config);
+
+ StatsSessionMXBean createSessionMXBean(String namespace, StatsSession
session);
+}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanRegistrar.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanRegistrar.java
Wed Jul 6 09:42:09 2011
@@ -22,6 +22,7 @@
import org.stajistics.configuration.StatsConfigManager;
import org.stajistics.session.StatsSession;
import org.stajistics.session.StatsSessionManager;
+import org.stajistics.task.TaskService;
/**
*
@@ -37,21 +38,26 @@
void registerStatsManagerMXBean(StatsManager statsManager);
- void unregisterStatsManagerMXBean(StatsManager statsManager);
+ void unregisterStatsManagerMXBean();
void registerConfigManagerMXBean(StatsConfigManager configManager);
void unregisterConfigManagerMXBean();
-
- void registerConfigMXBean(StatsKey key, StatsConfig config);
-
- void unregisterConfigMXBeanIfNecessary(StatsKey key);
-
- void registerSessionManagerMXBean(StatsSessionManager sessionManager);
-
- void unregisterSessionManagerMXBean();
+
+ void registerSessionManagerMXBean(StatsSessionManager sessionManager);
+
+ void unregisterSessionManagerMXBean();
+
+ void registerTaskServiceMXBean(TaskService taskService);
+
+ void unregisterTaskServiceMXBean();
+
+ void registerConfigMXBean(StatsKey key, StatsConfig config);
+
+ void unregisterConfigMXBeanIfNecessary(StatsKey key);
void registerSessionMXBean(StatsSession session);
void unregisterSessionMXBeanIfNecessary(StatsKey key);
-}
+
+}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanUtil.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanUtil.java
Wed Jul 6 09:42:09 2011
@@ -30,6 +30,7 @@
public static final String MANAGER_NAME_STATS = "StatsManager";
public static final String MANAGER_NAME_CONFIG = "ConfigManager";
public static final String MANAGER_NAME_SESSION = "SessionManager";
+ public static final String MANAGER_NAME_TASK_SERVICE = "TaskService";
public static final String MANAGER_NAME_SNAPSHOT = "SnapshotManager";
private StatsMXBeanUtil() {}
@@ -93,6 +94,27 @@
ObjectName objectName = new
ObjectName(getConfigManagerObjectNameString(namespace, true));
return objectName;
}
+
+ /**
+ *
+ * @param namespace
+ * @param quote
+ * @return
+ */
+ public static String getTaskServiceObjectNameString(final String
namespace, final boolean quote) {
+ return buildManagerName(namespace, MANAGER_NAME_TASK_SERVICE,
quote);
+ }
+
+ /**
+ *
+ * @param namespace
+ * @return
+ * @throws MalformedObjectNameException
+ */
+ public static ObjectName getTaskServiceObjectName(final String
namespace) throws MalformedObjectNameException {
+ ObjectName objectName = new
ObjectName(getTaskServiceObjectNameString(namespace, true));
+ return objectName;
+ }
/**
*
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsManagementEventHandler.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsManagementEventHandler.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.management;
+import static org.stajistics.Util.assertNotNull;
+
import org.stajistics.StatsKey;
import org.stajistics.StatsManager;
import org.stajistics.configuration.StatsConfig;
@@ -22,6 +24,7 @@
import org.stajistics.event.EventType;
import org.stajistics.session.StatsSession;
import org.stajistics.session.StatsSessionManager;
+import org.stajistics.task.TaskService;
/**
*
@@ -31,94 +34,74 @@
*/
public class StatsManagementEventHandler implements EventHandler {
- private StatsMXBeanRegistrar mxBeanRegistrar;
-
- private volatile StatsConfigManager configManager;
- private volatile StatsSessionManager sessionManager;
-
- protected StatsMXBeanRegistrar createStatsMXBeanRegistrar(final
StatsManager statsManager) {
- return new
DefaultStatsMXBeanRegistrar(statsManager.getNamespace());
+ private final StatsMXBeanRegistrar mxBeanRegistrar;
+
+ public StatsManagementEventHandler(final StatsMXBeanRegistrar
mxBeanRegistrar) {
+ assertNotNull(mxBeanRegistrar, "mxBeanRegistrar");
+ this.mxBeanRegistrar = mxBeanRegistrar;
}
@Override
public void handleStatsEvent(final EventType eventType,
final StatsKey key,
final Object target) {
+ // Check for speed-sensitive events first
switch (eventType) {
- case STATS_MANAGER_INITIALIZED:
- StatsManager statsManager = (StatsManager)target;
- mxBeanRegistrar = createStatsMXBeanRegistrar(statsManager);
-
- // Initialize deferred components
-
- if (configManager != null) {
-
mxBeanRegistrar.registerConfigManagerMXBean(configManager);
- configManager = null;
- }
- if (sessionManager != null) {
-
mxBeanRegistrar.registerSessionManagerMXBean(sessionManager);
- sessionManager = null;
- }
-
- mxBeanRegistrar.registerStatsManagerMXBean(statsManager);
-
- break;
-
- case STATS_MANAGER_SHUTTING_DOWN:
-
mxBeanRegistrar.unregisterStatsManagerMXBean((StatsManager)target);
- mxBeanRegistrar = null;
- break;
+ case SESSION_CREATED:
+
mxBeanRegistrar.registerSessionMXBean((StatsSession)target);
+ return;
+
+ case SESSION_DESTROYED:
+ mxBeanRegistrar.unregisterSessionMXBeanIfNecessary(key);
+ return;
+
+ case CONFIG_CREATED:
+ mxBeanRegistrar.registerConfigMXBean(key,
(StatsConfig)target);
+ return;
+
+ case CONFIG_CHANGED:
+ mxBeanRegistrar.unregisterConfigMXBeanIfNecessary(key);
+ mxBeanRegistrar.registerConfigMXBean(key,
(StatsConfig)target);
+ return;
+
+ case CONFIG_DESTROYED:
+ mxBeanRegistrar.unregisterConfigMXBeanIfNecessary(key);
+ return;
}
- if (mxBeanRegistrar == null) {
- return;
- }
-
+ // Check for rarely occurring events second
switch (eventType) {
+ case STATS_MANAGER_INITIALIZED:
+
mxBeanRegistrar.registerStatsManagerMXBean((StatsManager)target);
+ return;
+
+ case STATS_MANAGER_SHUTTING_DOWN:
+ mxBeanRegistrar.unregisterStatsManagerMXBean();
+ return;
+
case CONFIG_MANAGER_INITIALIZED:
- this.configManager = (StatsConfigManager)target; // Defer
initialization
- break;
+
mxBeanRegistrar.registerConfigManagerMXBean((StatsConfigManager)target);
+ return;
case CONFIG_MANAGER_SHUTTING_DOWN:
mxBeanRegistrar.unregisterConfigManagerMXBean();
- break;
+ return;
case SESSION_MANAGER_INITIALIZED:
- this.sessionManager = (StatsSessionManager)target; //
Defer initialization
- break;
+
mxBeanRegistrar.registerSessionManagerMXBean((StatsSessionManager)target);
+ return;
case SESSION_MANAGER_SHUTTING_DOWN:
mxBeanRegistrar.unregisterSessionManagerMXBean();
- break;
+ return;
case TASK_SERVICE_INITIALIZED:
- // TODO
- break;
+
mxBeanRegistrar.registerTaskServiceMXBean((TaskService)target);
+ return;
case TASK_SERVICE_SHUTTING_DOWN:
- // TODO
- break;
-
- case SESSION_CREATED:
-
mxBeanRegistrar.registerSessionMXBean((StatsSession)target);
- break;
-
- case SESSION_DESTROYED:
- mxBeanRegistrar.unregisterSessionMXBeanIfNecessary(key);
- break;
-
- case CONFIG_CREATED:
- mxBeanRegistrar.registerConfigMXBean(key,
(StatsConfig)target);
- break;
-
- case CONFIG_CHANGED:
- mxBeanRegistrar.unregisterConfigMXBeanIfNecessary(key);
- mxBeanRegistrar.registerConfigMXBean(key,
(StatsConfig)target);
- break;
-
- case CONFIG_DESTROYED:
- mxBeanRegistrar.unregisterConfigMXBeanIfNecessary(key);
- break;
+ mxBeanRegistrar.unregisterTaskServiceMXBean();
+ return;
}
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsManagementFactory.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsManagementFactory.java
Wed Jul 6 09:42:09 2011
@@ -1,5 +1,6 @@
package org.stajistics.management;
+import static org.stajistics.Util.assertNotNull;
import static
org.stajistics.management.StatsMXBeanUtil.OBJECT_NAME_ATTR_NAMESPACE;
import static
org.stajistics.management.StatsMXBeanUtil.getConfigManagerObjectName;
import static
org.stajistics.management.StatsMXBeanUtil.getConfigManagerObjectNameString;
@@ -40,9 +41,7 @@
* @param mBeanServerConnection
*/
public StatsManagementFactory(final MBeanServerConnection
mBeanServerConnection) {
- if (mBeanServerConnection == null) {
- throw new NullPointerException("null mBeanServerConnection");
- }
+ assertNotNull(mBeanServerConnection, "mBeanServerConnection");
this.mBeanServerConnection = mBeanServerConnection;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsConfigMXBean.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsConfigMXBean.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,9 @@
*/
package org.stajistics.management.beans;
+import static org.stajistics.Util.assertNotEmpty;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Map;
import org.stajistics.StatsKey;
@@ -38,15 +41,9 @@
public DefaultStatsConfigMXBean(final String namespace,
final StatsKey key,
final StatsConfig config) {
- if (namespace == null) {
- throw new NullPointerException("namespace");
- }
- if (key == null) {
- throw new NullPointerException("key");
- }
- if (config == null) {
- throw new NullPointerException("config");
- }
+ assertNotEmpty(namespace, "namespace");
+ assertNotNull(key, "key");
+ assertNotNull(config, "config");
this.namespace = namespace;
this.key = key;
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsConfigManagerMXBean.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsConfigManagerMXBean.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.management.beans;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Set;
import org.stajistics.configuration.StatsConfigManager;
@@ -29,10 +31,7 @@
private final StatsConfigManager configManager;
public DefaultStatsConfigManagerMXBean(final StatsConfigManager
configManager) {
- if (configManager == null) {
- throw new NullPointerException("configManager");
- }
-
+ assertNotNull(configManager, "configManager");
this.configManager = configManager;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsManagerMXBean.java
Sun Jun 19 21:26:01 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsManagerMXBean.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.management.beans;
+import static org.stajistics.Util.assertNotNull;
+
import org.stajistics.StatsManager;
/**
@@ -24,9 +26,7 @@
private final StatsManager statsManager;
public DefaultStatsManagerMXBean(final StatsManager statsManager) {
- if (statsManager == null) {
- throw new NullPointerException("statsManager");
- }
+ assertNotNull(statsManager, "statsManager");
this.statsManager = statsManager;
}
@@ -64,6 +64,11 @@
public void setEnabled(boolean enabled) {
statsManager.setEnabled(enabled);
}
+
+ @Override
+ public boolean getRunning() {
+ return statsManager.isRunning();
+ }
@Override
public void shutdown() {
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsSessionMXBean.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsSessionMXBean.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,9 @@
*/
package org.stajistics.management.beans;
+import static org.stajistics.Util.assertNotEmpty;
+import static org.stajistics.Util.assertNotNull;
+
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
@@ -76,12 +79,8 @@
public DefaultStatsSessionMXBean(final String namespace,
final StatsSession session) {
- if (namespace == null) {
- throw new NullPointerException("namespace");
- }
- if (session == null) {
- throw new NullPointerException("session");
- }
+ assertNotEmpty(namespace, "namespace");
+ assertNotNull(session, "session");
this.namespace = namespace;
this.session = session;
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsSessionManagerMXBean.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsSessionManagerMXBean.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.management.beans;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Set;
import org.slf4j.Logger;
@@ -38,10 +40,7 @@
protected final StatsSessionManager sessionManager;
public DefaultStatsSessionManagerMXBean(final StatsSessionManager
sessionManager) {
- if (sessionManager == null) {
- throw new NullPointerException("sessionManager");
- }
-
+ assertNotNull(sessionManager, "sessionManager");
this.sessionManager = sessionManager;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/StatsManagerMXBean.java
Sun Jun 19 21:26:01 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/StatsManagerMXBean.java
Wed Jul 6 09:42:09 2011
@@ -22,5 +22,7 @@
void setEnabled(boolean enabled);
+ boolean getRunning();
+
void shutdown();
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/AbstractStatsSession.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/AbstractStatsSession.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.session;
+import static org.stajistics.Util.assertNotNull;
+
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Arrays;
@@ -58,12 +60,8 @@
public AbstractStatsSession(final StatsKey key,
final EventManager eventManager,
final DataRecorder... dataRecorders) {
- if (key == null) {
- throw new NullPointerException("key");
- }
- if (eventManager == null) {
- throw new NullPointerException("eventManager");
- }
+ assertNotNull(key, "key");
+ assertNotNull(eventManager, "eventManager");
this.key = key;
this.eventManager = eventManager;
@@ -213,9 +211,7 @@
}
protected void restoreState(final DataSet dataSet) {
- if (dataSet == null) {
- throw new NullPointerException("dataSet");
- }
+ assertNotNull(dataSet, "dataSet");
if (!dataSet.isEmpty()) {
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/AsynchronousSession.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/AsynchronousSession.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.session;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.locks.Lock;
@@ -96,12 +98,8 @@
final DataRecorder... dataRecorders) {
super(key, eventManager, dataRecorders);
- if (taskService == null) {
- throw new NullPointerException("taskService");
- }
- if (updateQueue == null) {
- throw new NullPointerException("updateQueue");
- }
+ assertNotNull(taskService, "taskService");
+ assertNotNull(updateQueue, "updateQueue");
this.taskService = taskService;
this.updateQueue = updateQueue;
@@ -307,9 +305,7 @@
@Override
public void restore(final DataSet dataSet) {
- if (dataSet == null) {
- throw new NullPointerException("dataSet");
- }
+ assertNotNull(dataSet, "dataSet");
stateLock.lock();
try {
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/ConcurrentSession.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/ConcurrentSession.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.session;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
@@ -264,9 +266,7 @@
@Override
public void restore(final DataSet dataSet) {
- if (dataSet == null) {
- throw new NullPointerException("dataSet");
- }
+ assertNotNull(dataSet, "dataSet");
clearState();
restoreState(dataSet);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/DefaultSessionManager.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/DefaultSessionManager.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.session;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
@@ -60,12 +62,8 @@
public DefaultSessionManager(final StatsConfigManager configManager,
final EventManager eventManager) {
- if (configManager == null) {
- throw new NullPointerException("configManager");
- }
- if (eventManager == null) {
- throw new NullPointerException("eventManager");
- }
+ assertNotNull(configManager, "configManager");
+ assertNotNull(eventManager, "eventManager");
this.configManager = configManager;
this.eventManager = eventManager;
@@ -145,9 +143,7 @@
@Override
public StatsSession getOrCreateSession(final StatsKey key) {
- if (key == null) {
- throw new NullPointerException("key");
- }
+ assertNotNull(key, "key");
StatsSession session = sessionMap.get(key);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/ImmutableSession.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/ImmutableSession.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.session;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Collections;
import java.util.List;
@@ -48,12 +50,8 @@
public ImmutableSession(final StatsKey key,
final DataSet dataSet) {
- if (key == null) {
- throw new NullPointerException("key");
- }
- if (dataSet == null) {
- throw new NullPointerException("dataSet");
- }
+ assertNotNull(key, "key");
+ assertNotNull(dataSet, "dataSet");
this.key = key;
this.dataSet = DataSets.unmodifiable(dataSet);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/recorder/DataRecorders.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/recorder/DataRecorders.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.session.recorder;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Set;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -210,10 +212,7 @@
private LockingDataRecorderDecorator(final DataRecorder delegate,
final Lock lock) {
- if (delegate == null) {
- throw new NullPointerException("delegate");
- }
-
+ assertNotNull(delegate, "delegate");
this.delegate = delegate;
if (lock == null) {
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/recorder/RangeDataRecorder.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/recorder/RangeDataRecorder.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.session.recorder;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
@@ -45,9 +47,7 @@
private final AtomicLong[] hits;
public RangeDataRecorder(final RangeList rangeList) {
- if (rangeList == null) {
- throw new NullPointerException("rangeList");
- }
+ assertNotNull(rangeList, "rangeList");
int size = rangeList.size();
if (size == 0) {
=======================================
---
/stajistics-core/src/main/java/org/stajistics/task/DebugTaskService.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/task/DebugTaskService.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.task;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@@ -30,10 +32,7 @@
private final EventManager eventManager;
public DebugTaskService(final EventManager eventManager) {
- if (eventManager == null) {
- throw new NullPointerException("null eventManager");
- }
-
+ assertNotNull(eventManager, "eventManager");
this.eventManager = eventManager;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/task/TaskServiceThreadFactory.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/task/TaskServiceThreadFactory.java
Wed Jul 6 09:42:09 2011
@@ -38,7 +38,7 @@
private final ThreadGroup threadGroup;
public TaskServiceThreadFactory() {
- namePrefix = TaskService.class.getSimpleName() + "-" + nextPoolId;
+ namePrefix = TaskService.class.getSimpleName() + "-" +
nextPoolId.incrementAndGet();
threadGroup = new ThreadGroup(namePrefix);
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/task/ThreadPoolTaskService.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/task/ThreadPoolTaskService.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.task;
+import static org.stajistics.Util.assertNotNull;
+
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Callable;
@@ -51,10 +53,7 @@
private final Support lifeCycleSupport = new Support();
public ThreadPoolTaskService(final EventManager eventManager) {
- if (eventManager == null) {
- throw new NullPointerException("null eventManager");
- }
-
+ assertNotNull(eventManager, "eventManager");
this.eventManager = eventManager;
int noCPUs = Runtime.getRuntime().availableProcessors();
@@ -81,12 +80,8 @@
}
public ThreadPoolTaskService(final EventManager eventManager, final
ThreadPoolExecutor executor) {
- if (eventManager == null) {
- throw new NullPointerException("null eventManager");
- }
- if (executor == null) {
- throw new NullPointerException("executor");
- }
+ assertNotNull(eventManager, "eventManager");
+ assertNotNull(executor, "executor");
this.eventManager = eventManager;
this.executor = executor;
@@ -115,7 +110,7 @@
@Override
public Void call() throws Exception {
executor.prestartCoreThread();
- eventManager.fireEvent(EventType.TASK_SERVICE_INITIALIZED,
null, this);
+ eventManager.fireEvent(EventType.TASK_SERVICE_INITIALIZED,
null, ThreadPoolTaskService.this);
return null;
}
});
@@ -131,7 +126,7 @@
lifeCycleSupport.shutdown(new Callable<Void>() {
@Override
public Void call() throws Exception {
-
eventManager.fireEvent(EventType.TASK_SERVICE_SHUTTING_DOWN, null, this);
+
eventManager.fireEvent(EventType.TASK_SERVICE_SHUTTING_DOWN, null,
ThreadPoolTaskService.this);
executor.shutdown();
return null;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractCompositeTracker.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractCompositeTracker.java
Wed Jul 6 09:42:09 2011
@@ -14,6 +14,8 @@
*/
package org.stajistics.tracker;
+import static org.stajistics.Util.assertNotEmpty;
+
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -33,10 +35,7 @@
protected final T[] trackers;
public AbstractCompositeTracker(final T... trackers) {
- if (trackers.length == 0) {
- throw new IllegalArgumentException("Must provide at least one
tracker");
- }
-
+ assertNotEmpty(trackers, "trackers");
this.trackers = trackers;
}
=======================================
***Additional files exist in this changeset.***
==============================================================================
Revision: 67ff94fb2134
Author: troy.k...@gmail.com
Date: Wed Jul 6 11:14:38 2011
Log: Changed TaskService to be a singleton instance rather than one
per StatsManager.
http://code.google.com/p/stajistics/source/detail?r=67ff94fb2134
Added:
/stajistics-core/src/main/java/org/stajistics/task/TaskServiceFactory.java
Modified:
/stajistics-core/src/main/java/org/stajistics/DefaultStatsManager.java
/stajistics-core/src/main/java/org/stajistics/StatsManager.java
/stajistics-core/src/main/java/org/stajistics/Util.java
/stajistics-core/src/main/java/org/stajistics/bootstrap/DefaultStatsManagerFactory.java
/stajistics-core/src/main/java/org/stajistics/event/EventType.java
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanFactory.java
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanRegistrar.java
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanFactory.java
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanRegistrar.java
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanUtil.java
/stajistics-core/src/main/java/org/stajistics/management/StatsManagementEventHandler.java
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsManagerMXBean.java
/stajistics-core/src/main/java/org/stajistics/management/beans/StatsManagerMXBean.java
/stajistics-core/src/main/java/org/stajistics/session/AbstractStatsSession.java
/stajistics-core/src/main/java/org/stajistics/session/AsynchronousSession.java
/stajistics-core/src/main/java/org/stajistics/session/ConcurrentSession.java
/stajistics-core/src/main/java/org/stajistics/task/DebugTaskService.java
/stajistics-core/src/main/java/org/stajistics/task/ThreadPoolTaskService.java
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractTracker.java
/stajistics-core/src/main/java/org/stajistics/tracker/CompositeTrackerFactory.java
/stajistics-core/src/main/java/org/stajistics/tracker/incident/DefaultIncidentTracker.java
/stajistics-core/src/main/java/org/stajistics/tracker/manual/DefaultManualTracker.java
/stajistics-core/src/main/java/org/stajistics/tracker/span/AbstractSpanTracker.java
/stajistics-core/src/test/java/org/stajistics/DefaultStatsManagerTest.java
/stajistics-core/src/test/java/org/stajistics/TestApp.java
/stajistics-core/src/test/java/org/stajistics/bootstrap/AbstractStatsManagerFactoryTestCase.java
/stajistics-core/src/test/java/org/stajistics/management/DefaultStatsMXBeanRegistrarTest.java
/stajistics-core/src/test/java/org/stajistics/session/AbstractStatsSessionTestCase.java
/stajistics-core/src/test/java/org/stajistics/session/AsynchronousSessionTest.java
/stajistics-core/src/test/java/org/stajistics/session/ConcurrentSessionTest.java
/stajistics-core/src/test/java/org/stajistics/session/DefaultSessionFactoryTest.java
=======================================
--- /dev/null
+++
/stajistics-core/src/main/java/org/stajistics/task/TaskServiceFactory.java
Wed Jul 6 11:14:38 2011
@@ -0,0 +1,36 @@
+package org.stajistics.task;
+
+
+/**
+ *
+ *
+ * @author The Stajistics Project
+ */
+public class TaskServiceFactory {
+
+ private static final TaskServiceFactory INSTANCE = new
TaskServiceFactory();
+
+ private volatile TaskService taskService;
+
+ private TaskServiceFactory() {}
+
+ public static TaskServiceFactory getInstance() {
+ return INSTANCE;
+ }
+
+ public void loadTaskService(final TaskService taskService) {
+ this.taskService = taskService;
+ }
+
+ public boolean isTaskServiceLoaded() {
+ return taskService != null;
+ }
+
+ public TaskService getTaskService() {
+ if (taskService == null) {
+ throw new IllegalStateException("A TaskService has not yet
been loaded");
+ }
+ return taskService;
+ }
+
+}
=======================================
--- /stajistics-core/src/main/java/org/stajistics/DefaultStatsManager.java
Wed Jul 6 09:42:09 2011
+++ /stajistics-core/src/main/java/org/stajistics/DefaultStatsManager.java
Wed Jul 6 11:14:38 2011
@@ -52,7 +52,6 @@
protected final TrackerLocator trackerLocator;
protected final StatsKeyFactory keyFactory;
protected final StatsConfigBuilderFactory configBuilderFactory;
- protected final TaskService taskService;
private final ServiceLifeCycle.Support lifeCycleSupport = new
Support();
@@ -74,15 +73,13 @@
final EventManager eventManager,
final TrackerLocator trackerLocator,
final StatsKeyFactory keyFactory,
- final StatsConfigBuilderFactory
configBuilderFactory,
- final TaskService taskService) {
+ final StatsConfigBuilderFactory
configBuilderFactory) {
assertNotNull(configManager, "configManager");
assertNotNull(sessionManager, "sessionManager");
assertNotNull(eventManager, "eventManager");
assertNotNull(trackerLocator, "trackerLocator");
assertNotNull(keyFactory, "keyFactory");
assertNotNull(configBuilderFactory, "configBuilderFactory");
- assertNotNull(taskService, "taskService");
if (namespace != null && namespace.isEmpty()) {
this.namespace = null;
@@ -96,7 +93,6 @@
this.trackerLocator = trackerLocator;
this.eventManager = eventManager;
this.configBuilderFactory = configBuilderFactory;
- this.taskService = taskService;
}
@Override
@@ -117,7 +113,6 @@
StatsManagerRegistry.getInstance().registerStatsManager(DefaultStatsManager.this);
eventManager.initialize();
- taskService.initialize();
configManager.initialize();
sessionManager.initialize();
@@ -144,7 +139,6 @@
sessionManager.shutdown();
configManager.shutdown();
- taskService.shutdown();
eventManager.shutdown();
StatsManagerRegistry.getInstance().removeStatsManager(DefaultStatsManager.this);
@@ -192,11 +186,6 @@
public StatsConfigBuilderFactory getConfigBuilderFactory() {
return configBuilderFactory;
}
-
- @Override
- public TaskService getTaskService() {
- return taskService;
- }
@Override
public boolean isEnabled() {
@@ -233,7 +222,6 @@
protected TrackerLocator trackerLocator = null;
protected StatsKeyFactory keyFactory = null;
protected StatsConfigBuilderFactory configBuilderFactory = null;
- protected TaskService taskService = null;
protected boolean enabled = true;
protected UncaughtExceptionHandler uncaughtExceptionHandler = null;
@@ -277,12 +265,6 @@
this.configBuilderFactory = configBuilderFactory;
return this;
}
-
- public Builder withTaskService(final TaskService taskService) {
- assertNotNull(taskService, "taskService");
- this.taskService = taskService;
- return this;
- }
public Builder withEnabled(final boolean enabled) {
this.enabled = enabled;
@@ -303,7 +285,6 @@
StatsSessionManager sessionManager = this.sessionManager;
TrackerLocator trackerLocator = this.trackerLocator;
StatsConfigBuilderFactory configBuilderFactory =
this.configBuilderFactory;
- TaskService taskService = this.taskService;
if (keyFactory == null) {
keyFactory = new DefaultStatsKeyFactory();
@@ -327,10 +308,6 @@
if (configBuilderFactory == null) {
configBuilderFactory = new
DefaultStatsConfigBuilderFactory(configManager);
}
-
- if (taskService == null) {
- taskService = new ThreadPoolTaskService(eventManager);
- }
DefaultStatsManager manager = new
DefaultStatsManager(namespace,
configManager,
@@ -338,8 +315,7 @@
eventManager,
trackerLocator,
keyFactory,
-
configBuilderFactory,
-
taskService);
+
configBuilderFactory);
manager.setEnabled(enabled);
if (uncaughtExceptionHandler != null) {
=======================================
--- /stajistics-core/src/main/java/org/stajistics/StatsManager.java Mon Jun
20 15:36:53 2011
+++ /stajistics-core/src/main/java/org/stajistics/StatsManager.java Wed
Jul 6 11:14:38 2011
@@ -81,13 +81,6 @@
*/
StatsConfigBuilderFactory getConfigBuilderFactory();
- /**
- * Get the {@link TaskService}.
- *
- * @return The {@link TaskService}, never <tt>null</tt>.
- */
- TaskService getTaskService();
-
/**
* Determine if statistics collection is enabled.
*
=======================================
--- /stajistics-core/src/main/java/org/stajistics/Util.java Wed Jul 6
09:42:09 2011
+++ /stajistics-core/src/main/java/org/stajistics/Util.java Wed Jul 6
11:14:38 2011
@@ -51,7 +51,7 @@
}
}
- public static void assertNotEmptyAfterTrim(CharSequence test, final
String varName) {
+ public static void assertNotBlank(CharSequence test, final String
varName) {
if (test != null) {
test = test.toString().trim();
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/bootstrap/DefaultStatsManagerFactory.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/bootstrap/DefaultStatsManagerFactory.java
Wed Jul 6 11:14:38 2011
@@ -22,6 +22,9 @@
import org.stajistics.management.DefaultStatsMXBeanRegistrar;
import org.stajistics.management.StatsMXBeanRegistrar;
import org.stajistics.management.StatsManagementEventHandler;
+import org.stajistics.task.TaskService;
+import org.stajistics.task.TaskServiceFactory;
+import org.stajistics.task.ThreadPoolTaskService;
/**
* @author The Stajistics Project
@@ -41,12 +44,28 @@
.withEnabled(stajisticsEnabled)
.newManager();
- if (StatsProperties.getBooleanProperty(PROP_MANAGEMENT_ENABLED,
true)) {
+ final boolean managementEnabled =
StatsProperties.getBooleanProperty(PROP_MANAGEMENT_ENABLED, true);
+
+ // Configure MBean management
+ if (managementEnabled) {
StatsMXBeanRegistrar mxBeanRegistrar = new
DefaultStatsMXBeanRegistrar(namespace);
StatsManagementEventHandler managementEventHandler = new
StatsManagementEventHandler(mxBeanRegistrar);
manager.getEventManager()
.addGlobalEventHandler(managementEventHandler);
}
+
+ // Initialize TaskService if not already initialized
+ TaskServiceFactory taskServiceFactory =
TaskServiceFactory.getInstance();
+ if (!taskServiceFactory.isTaskServiceLoaded()) {
+ TaskService taskService = new ThreadPoolTaskService(); //
TODO: make configurable
+ taskService.initialize();
+
+ if (managementEnabled) {
+
DefaultStatsMXBeanRegistrar.registerTaskServiceMXBean(taskService);
+ }
+
+ taskServiceFactory.loadTaskService(taskService);
+ }
manager.initialize();
=======================================
--- /stajistics-core/src/main/java/org/stajistics/event/EventType.java Wed
Jun 15 16:30:39 2011
+++ /stajistics-core/src/main/java/org/stajistics/event/EventType.java Wed
Jul 6 11:14:38 2011
@@ -31,9 +31,6 @@
SESSION_MANAGER_INITIALIZED,
SESSION_MANAGER_SHUTTING_DOWN,
- TASK_SERVICE_INITIALIZED,
- TASK_SERVICE_SHUTTING_DOWN,
-
CONFIG_CREATED,
CONFIG_CHANGED,
CONFIG_DESTROYED,
@@ -79,16 +76,6 @@
return false;
}
}
-
- public boolean isTaskServiceEvent() {
- switch (this) {
- case TASK_SERVICE_INITIALIZED:
- case TASK_SERVICE_SHUTTING_DOWN:
- return true;
- default:
- return false;
- }
- }
public boolean isConfigEvent() {
switch (this) {
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanFactory.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanFactory.java
Wed Jul 6 11:14:38 2011
@@ -56,11 +56,6 @@
public StatsSessionManagerMXBean createSessionManagerMXBean(final
StatsSessionManager sessionManager) {
return new DefaultStatsSessionManagerMXBean(sessionManager);
}
-
- @Override
- public TaskServiceMXBean createTaskServiceMXBean(final TaskService
taskService) {
- return new DefaultTaskServiceMXBean(taskService);
- }
@Override
public StatsConfigMXBean createConfigMXBean(final String namespace,
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanRegistrar.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/DefaultStatsMXBeanRegistrar.java
Wed Jul 6 11:14:38 2011
@@ -29,8 +29,6 @@
import static
org.stajistics.management.StatsMXBeanUtil.getTaskServiceObjectName;
import static
org.stajistics.management.StatsMXBeanUtil.getTaskServiceObjectNameString;
-import java.io.IOException;
-import java.io.ObjectInputStream;
import java.io.Serializable;
import java.lang.management.ManagementFactory;
@@ -43,6 +41,7 @@
import org.stajistics.StatsManager;
import org.stajistics.configuration.StatsConfig;
import org.stajistics.configuration.StatsConfigManager;
+import org.stajistics.management.beans.DefaultTaskServiceMXBean;
import org.stajistics.management.beans.StatsConfigMXBean;
import org.stajistics.management.beans.StatsConfigManagerMXBean;
import org.stajistics.management.beans.StatsManagerMXBean;
@@ -65,31 +64,22 @@
private final StatsMXBeanFactory mxBeanFactory;
+ private static MBeanServer mBeanServer =
ManagementFactory.getPlatformMBeanServer();
+
private final String namespace;
- private boolean isPlatformMBeanServer;
- private transient MBeanServer mBeanServer;
public DefaultStatsMXBeanRegistrar(final String namespace) {
this(namespace, new DefaultStatsMXBeanFactory());
}
public DefaultStatsMXBeanRegistrar(final String namespace,
- final StatsMXBeanFactory
mBeanFactory) {
- this(namespace, mBeanFactory,
ManagementFactory.getPlatformMBeanServer());
- }
-
- public DefaultStatsMXBeanRegistrar(final String namespace,
- final StatsMXBeanFactory
mxBeanFactory,
- final MBeanServer mBeanServer) {
+ final StatsMXBeanFactory
mxBeanFactory) {
assertNotEmpty(namespace, "namespace");
assertNotNull(mxBeanFactory, "mxBeanFactory");
assertNotNull(mBeanServer, "mBeanServer");
this.namespace = namespace;
this.mxBeanFactory = mxBeanFactory;
- this.mBeanServer = mBeanServer;
-
- this.isPlatformMBeanServer =
mBeanServer.equals(ManagementFactory.getPlatformMBeanServer());
}
@Override
@@ -97,10 +87,14 @@
return namespace;
}
- @Override
- public MBeanServer getMBeanServer() {
+ public static MBeanServer getMBeanServer() {
return mBeanServer;
}
+
+ public static void setMBeanServer(final MBeanServer mBeanServer) {
+ assertNotNull(mBeanServer, "mBeanServer");
+ DefaultStatsMXBeanRegistrar.mBeanServer = mBeanServer;
+ }
@Override
public void registerStatsManagerMXBean(final StatsManager
statsManager) {
@@ -203,33 +197,31 @@
}
}
- @Override
- public void registerTaskServiceMXBean(final TaskService taskService) {
+ public static void registerTaskServiceMXBean(final TaskService
taskService) {
try {
- TaskServiceMXBean taskServiceMBean =
mxBeanFactory.createTaskServiceMXBean(taskService);
-
- ObjectName objectName = getTaskServiceObjectName(namespace);
+ TaskServiceMXBean taskServiceMBean = new
DefaultTaskServiceMXBean(taskService); //TODO: make configurable
+
+ ObjectName objectName = getTaskServiceObjectName();
registerMBean(taskServiceMBean, objectName);
logRegistrationSuccess(true, TaskServiceMXBean.class, null,
objectName);
} catch (Exception e) {
- logRegistrationFailure(true, TaskServiceMXBean.class, null,
getTaskServiceObjectNameString(namespace, true), e);
+ logRegistrationFailure(true, TaskServiceMXBean.class, null,
getTaskServiceObjectNameString(true), e);
throw new StatsManagementException(e);
}
}
- @Override
- public void unregisterTaskServiceMXBean() {
+ public static void unregisterTaskServiceMXBean() {
try {
- ObjectName objectName = getTaskServiceObjectName(namespace);
+ ObjectName objectName = getTaskServiceObjectName();
mBeanServer.unregisterMBean(objectName);
logRegistrationSuccess(false, TaskServiceMXBean.class, null,
objectName);
} catch (Exception e) {
- logRegistrationFailure(false, TaskServiceMXBean.class, null,
getTaskServiceObjectNameString(namespace, true), e);
+ logRegistrationFailure(false, TaskServiceMXBean.class, null,
getTaskServiceObjectNameString(true), e);
throw new StatsManagementException(e);
}
@@ -304,8 +296,8 @@
}
}
- private void registerMBean(final Object mBean,
- final ObjectName name) throws Exception {
+ private static void registerMBean(final Object mBean,
+ final ObjectName name) throws
Exception {
if (mBeanServer.isRegistered(name)) {
logger.warn("Replacing existing MBean: {}", name);
@@ -315,10 +307,10 @@
mBeanServer.registerMBean(mBean, name);
}
- private void logRegistrationSuccess(final boolean register,
- final Class<?> mBeanType,
- final StatsKey key,
- final ObjectName objectName) {
+ private static void logRegistrationSuccess(final boolean register,
+ final Class<?> mBeanType,
+ final StatsKey key,
+ final ObjectName
objectName) {
if (logger.isDebugEnabled()) {
StringBuilder buf = new StringBuilder(256);
if (register) {
@@ -341,11 +333,11 @@
}
}
- private void logRegistrationFailure(final boolean register,
- final Class<?> mBeanType,
- final StatsKey key,
- final String objectName,
- final Exception e) {
+ private static void logRegistrationFailure(final boolean register,
+ final Class<?> mBeanType,
+ final StatsKey key,
+ final String objectName,
+ final Exception e) {
if (logger.isErrorEnabled()) {
StringBuilder buf = new StringBuilder(256);
buf.append("Failed to ");
@@ -369,18 +361,4 @@
}
}
- /* Restore transient fields */
- private void readObject(final ObjectInputStream in)
- throws IOException,ClassNotFoundException {
- in.defaultReadObject();
-
- if (!isPlatformMBeanServer) {
- isPlatformMBeanServer = true;
-
- logger.warn("Restoring transient MBeanServer after
deserialization to the "
- + "platform MBeanServer when the orginal was
non-platform");
- }
-
- mBeanServer = ManagementFactory.getPlatformMBeanServer();
- }
-}
+}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanFactory.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanFactory.java
Wed Jul 6 11:14:38 2011
@@ -43,8 +43,6 @@
StatsConfigManagerMXBean createConfigManagerMXBean(StatsConfigManager
configManager);
StatsSessionManagerMXBean
createSessionManagerMXBean(StatsSessionManager sessionManager);
-
- TaskServiceMXBean createTaskServiceMXBean(TaskService taskService);
StatsConfigMXBean createConfigMXBean(String namespace, StatsKey key,
StatsConfig config);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanRegistrar.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanRegistrar.java
Wed Jul 6 11:14:38 2011
@@ -14,15 +14,12 @@
*/
package org.stajistics.management;
-import javax.management.MBeanServer;
-
import org.stajistics.StatsKey;
import org.stajistics.StatsManager;
import org.stajistics.configuration.StatsConfig;
import org.stajistics.configuration.StatsConfigManager;
import org.stajistics.session.StatsSession;
import org.stajistics.session.StatsSessionManager;
-import org.stajistics.task.TaskService;
/**
*
@@ -33,8 +30,6 @@
public interface StatsMXBeanRegistrar {
String getNamespace();
-
- MBeanServer getMBeanServer();
void registerStatsManagerMXBean(StatsManager statsManager);
@@ -48,10 +43,6 @@
void unregisterSessionManagerMXBean();
- void registerTaskServiceMXBean(TaskService taskService);
-
- void unregisterTaskServiceMXBean();
-
void registerConfigMXBean(StatsKey key, StatsConfig config);
void unregisterConfigMXBeanIfNecessary(StatsKey key);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanUtil.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsMXBeanUtil.java
Wed Jul 6 11:14:38 2011
@@ -30,9 +30,10 @@
public static final String MANAGER_NAME_STATS = "StatsManager";
public static final String MANAGER_NAME_CONFIG = "ConfigManager";
public static final String MANAGER_NAME_SESSION = "SessionManager";
- public static final String MANAGER_NAME_TASK_SERVICE = "TaskService";
public static final String MANAGER_NAME_SNAPSHOT = "SnapshotManager";
+ public static final String NAME_TASK_SERVICE = "TaskService";
+
private StatsMXBeanUtil() {}
/**
@@ -97,22 +98,28 @@
/**
*
- * @param namespace
* @param quote
* @return
*/
- public static String getTaskServiceObjectNameString(final String
namespace, final boolean quote) {
- return buildManagerName(namespace, MANAGER_NAME_TASK_SERVICE,
quote);
+ public static String getTaskServiceObjectNameString(final boolean
quote) {
+ StringBuilder buf = new StringBuilder(64);
+ buf.append(STAJISTICS_DOMAIN);
+ appendAttr(buf, OBJECT_NAME_ATTR_NAME, NAME_TASK_SERVICE, quote,
true);
+ return buf.toString();
}
/**
*
- * @param namespace
* @return
* @throws MalformedObjectNameException
*/
- public static ObjectName getTaskServiceObjectName(final String
namespace) throws MalformedObjectNameException {
- ObjectName objectName = new
ObjectName(getTaskServiceObjectNameString(namespace, true));
+ public static ObjectName getTaskServiceObjectName() {
+ ObjectName objectName;
+ try {
+ objectName = new
ObjectName(getTaskServiceObjectNameString(true));
+ } catch (MalformedObjectNameException e) {
+ throw new RuntimeException("Internal error", e);
+ }
return objectName;
}
@@ -163,8 +170,8 @@
private static void appendAttr(final StringBuilder buf,
final String key,
final String value,
- final boolean quote) {
- boolean first = key.equals(OBJECT_NAME_ATTR_NAMESPACE);
+ final boolean quote,
+ final boolean first) {
if (first) {
buf.append(':');
} else {
@@ -211,9 +218,9 @@
StringBuilder buf = new StringBuilder(128);
buf.append(STAJISTICS_DOMAIN);
- appendAttr(buf, OBJECT_NAME_ATTR_NAMESPACE, namespace, quote);
- appendAttr(buf, OBJECT_NAME_ATTR_TYPE, TYPE_MANAGER, quote);
- appendAttr(buf, OBJECT_NAME_ATTR_NAME, managerName, quote);
+ appendAttr(buf, OBJECT_NAME_ATTR_NAMESPACE, namespace, quote,
true);
+ appendAttr(buf, OBJECT_NAME_ATTR_TYPE, TYPE_MANAGER, quote, false);
+ appendAttr(buf, OBJECT_NAME_ATTR_NAME, managerName, quote, false);
return buf.toString();
}
@@ -227,18 +234,18 @@
StringBuilder buf = new StringBuilder(128);
buf.append(STAJISTICS_DOMAIN);
- appendAttr(buf, OBJECT_NAME_ATTR_NAMESPACE, namespace, quote);
- appendAttr(buf, OBJECT_NAME_ATTR_TYPE, type, quote);
- appendAttr(buf, OBJECT_NAME_ATTR_NAME, key.getName(), quote);
+ appendAttr(buf, OBJECT_NAME_ATTR_NAMESPACE, namespace, quote,
true);
+ appendAttr(buf, OBJECT_NAME_ATTR_TYPE, type, quote, false);
+ appendAttr(buf, OBJECT_NAME_ATTR_NAME, key.getName(), quote,
false);
boolean includeAttributes = subtype.equals(SUBTYPE_SESSION); //
Session beans are StatsKey-unique
if (includeAttributes) {
for (Map.Entry<String,Object> entry :
key.getAttributes().entrySet()) {
- appendAttr(buf, entry.getKey(),
entry.getValue().toString(), quote);
+ appendAttr(buf, entry.getKey(),
entry.getValue().toString(), quote, false);
}
}
- appendAttr(buf, OBJECT_NAME_ATTR_SUB_TYPE, subtype, quote);
+ appendAttr(buf, OBJECT_NAME_ATTR_SUB_TYPE, subtype, quote, false);
return buf.toString();
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/StatsManagementEventHandler.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/StatsManagementEventHandler.java
Wed Jul 6 11:14:38 2011
@@ -94,14 +94,6 @@
case SESSION_MANAGER_SHUTTING_DOWN:
mxBeanRegistrar.unregisterSessionManagerMXBean();
return;
-
- case TASK_SERVICE_INITIALIZED:
-
mxBeanRegistrar.registerTaskServiceMXBean((TaskService)target);
- return;
-
- case TASK_SERVICE_SHUTTING_DOWN:
- mxBeanRegistrar.unregisterTaskServiceMXBean();
- return;
}
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsManagerMXBean.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/DefaultStatsManagerMXBean.java
Wed Jul 6 11:14:38 2011
@@ -49,11 +49,6 @@
public String getEventManagerImpl() {
return statsManager.getEventManager().getClass().getName();
}
-
- @Override
- public String getTaskServiceImpl() {
- return statsManager.getTaskService().getClass().getName();
- }
@Override
public boolean getEnabled() {
=======================================
---
/stajistics-core/src/main/java/org/stajistics/management/beans/StatsManagerMXBean.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/management/beans/StatsManagerMXBean.java
Wed Jul 6 11:14:38 2011
@@ -16,8 +16,6 @@
String getEventManagerImpl();
- String getTaskServiceImpl();
-
boolean getEnabled();
void setEnabled(boolean enabled);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/AbstractStatsSession.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/AbstractStatsSession.java
Wed Jul 6 11:14:38 2011
@@ -148,11 +148,7 @@
}
}
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Failed to getField({}) from {}",
- name,
- dataRecorders[i]);
+ Misc.logHandledException(logger, e, "Failed to
getField({}) from {}", name, dataRecorders[i]);
Misc.handleUncaughtException(getKey(), e);
}
}
@@ -201,10 +197,7 @@
try {
dataRecorder.collectData(this, dataSet);
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Failed to collectData() from {}",
- dataRecorder);
+ Misc.logHandledException(logger, e, "Failed to
collectData() from {}", dataRecorder);
Misc.handleUncaughtException(getKey(), e);
}
}
@@ -253,10 +246,7 @@
try {
dataRecorder.restore(dataSet);
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Failed to restore {}",
- dataRecorder);
+ Misc.logHandledException(logger, e, "Failed to
restore {}", dataRecorder);
Misc.handleUncaughtException(getKey(), e);
}
}
@@ -280,10 +270,7 @@
try {
dataRecorder.clear();
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Failed to clear {}",
- dataRecorder);
+ Misc.logHandledException(logger, e, "Failed to clear {}",
dataRecorder);
Misc.handleUncaughtException(getKey(), e);
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/AsynchronousSession.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/AsynchronousSession.java
Wed Jul 6 11:14:38 2011
@@ -31,6 +31,7 @@
import org.stajistics.event.EventType;
import org.stajistics.session.recorder.DataRecorder;
import org.stajistics.task.TaskService;
+import org.stajistics.task.TaskServiceFactory;
import org.stajistics.tracker.Tracker;
import org.stajistics.util.Misc;
@@ -77,8 +78,6 @@
private volatile double max = Double.NEGATIVE_INFINITY;
private volatile double sum = DataSet.Field.Default.SUM;
- private final TaskService taskService;
-
private final Queue<TrackerEntry> updateQueue;
private final Lock updateQueueProcessingLock = new ReentrantLock();
@@ -86,22 +85,17 @@
public AsynchronousSession(final StatsKey key,
final EventManager eventManager,
- final TaskService taskService,
final DataRecorder... dataRecorders) {
- this(key, eventManager, taskService, new
ConcurrentLinkedQueue<TrackerEntry>(), dataRecorders);
+ this(key, eventManager, new ConcurrentLinkedQueue<TrackerEntry>(),
dataRecorders);
}
public AsynchronousSession(final StatsKey key,
final EventManager eventManager,
- final TaskService taskService,
final Queue<TrackerEntry> updateQueue,
final DataRecorder... dataRecorders) {
super(key, eventManager, dataRecorders);
- assertNotNull(taskService, "taskService");
assertNotNull(updateQueue, "updateQueue");
-
- this.taskService = taskService;
this.updateQueue = updateQueue;
}
@@ -111,12 +105,11 @@
updateQueue.add(entry);
ProcessUpdateQueueTask processQueueTask = new
ProcessUpdateQueueTask();
+
+ TaskService taskService =
TaskServiceFactory.getInstance().getTaskService();
taskService.execute(getClass(), processQueueTask);
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Failed to queue task {}",
- entry);
+ Misc.logHandledException(logger, e, "Failed to queue task {}",
entry);
Misc.handleUncaughtException(getKey(), e);
}
}
@@ -223,10 +216,7 @@
try {
dataRecorder.update(this, tracker, now);
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Failed to update {}",
- dataRecorder);
+ Misc.logHandledException(logger, e, "Failed to update
{}", dataRecorder);
Misc.handleUncaughtException(getKey(), e);
}
}
@@ -333,6 +323,7 @@
fireCleared();
}
+ @Override
protected void clearState() {
stateLock.lock();
try {
@@ -382,7 +373,7 @@
/*
* NOTE: Must be called while holding updateQueueProcessingLock
*/
- private void processUpdateQueue() {
+ protected void processUpdateQueue() {
// Re-query queue size to avoid allocating a buffer if some
// other thread has already processed the events
int count = updateQueue.size();
@@ -417,7 +408,7 @@
/* INNER CLASSES */
- private final class ProcessUpdateQueueTask implements Runnable {
+ protected final class ProcessUpdateQueueTask implements Runnable {
@Override
public void run() {
@@ -434,7 +425,7 @@
}
}
- private static final class TrackerEntry {
+ protected static final class TrackerEntry {
private final Tracker tracker;
private final long now;
@@ -461,7 +452,6 @@
StatsManager statsManager =
StatsManagerRegistry.getInstance().getStatsManager(key.getNamespace());
return new AsynchronousSession(key,
statsManager.getEventManager(),
- statsManager.getTaskService(),
dataRecorders);
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/session/ConcurrentSession.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/session/ConcurrentSession.java
Wed Jul 6 11:14:38 2011
@@ -187,10 +187,7 @@
try {
dataRecorder.update(this, tracker, now);
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Failed to update {}",
- dataRecorder);
+ Misc.logHandledException(logger, e, "Failed to update {}",
dataRecorder);
Misc.handleUncaughtException(getKey(), e);
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/task/DebugTaskService.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/task/DebugTaskService.java
Wed Jul 6 11:14:38 2011
@@ -14,27 +14,16 @@
*/
package org.stajistics.task;
-import static org.stajistics.Util.assertNotNull;
-
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import org.stajistics.event.EventManager;
-
/**
* @author The Stajistics Project
*/
public class DebugTaskService implements TaskService {
-
- private final EventManager eventManager;
-
- public DebugTaskService(final EventManager eventManager) {
- assertNotNull(eventManager, "eventManager");
- this.eventManager = eventManager;
- }
@Override
public void initialize() {}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/task/ThreadPoolTaskService.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/task/ThreadPoolTaskService.java
Wed Jul 6 11:14:38 2011
@@ -26,8 +26,6 @@
import java.util.concurrent.TimeUnit;
import org.stajistics.StatsProperties;
-import org.stajistics.event.EventManager;
-import org.stajistics.event.EventType;
/**
* @author The Stajistics Project
@@ -45,17 +43,12 @@
private static final String PROP_QUEUE_SIZE =
ThreadPoolTaskService.class.getName() + ".queueSize";
private static final int DEFAULT_QUEUE_SIZE = 10;
- private final EventManager eventManager;
-
// TODO: persist and restore upon de/serialization
private transient final ThreadPoolExecutor executor;
private final Support lifeCycleSupport = new Support();
- public ThreadPoolTaskService(final EventManager eventManager) {
- assertNotNull(eventManager, "eventManager");
- this.eventManager = eventManager;
-
+ public ThreadPoolTaskService() {
int noCPUs = Runtime.getRuntime().availableProcessors();
int corePoolSize =
StatsProperties.getIntegerProperty(PROP_CORE_POOL_SIZE,
noCPUs + 1);
@@ -79,11 +72,8 @@
createThreadFactory());
}
- public ThreadPoolTaskService(final EventManager eventManager, final
ThreadPoolExecutor executor) {
- assertNotNull(eventManager, "eventManager");
+ public ThreadPoolTaskService(final ThreadPoolExecutor executor) {
assertNotNull(executor, "executor");
-
- this.eventManager = eventManager;
this.executor = executor;
}
@@ -110,7 +100,6 @@
@Override
public Void call() throws Exception {
executor.prestartCoreThread();
- eventManager.fireEvent(EventType.TASK_SERVICE_INITIALIZED,
null, ThreadPoolTaskService.this);
return null;
}
});
@@ -126,7 +115,6 @@
lifeCycleSupport.shutdown(new Callable<Void>() {
@Override
public Void call() throws Exception {
-
eventManager.fireEvent(EventType.TASK_SERVICE_SHUTTING_DOWN, null,
ThreadPoolTaskService.this);
executor.shutdown();
return null;
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractTracker.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/AbstractTracker.java
Wed Jul 6 11:14:38 2011
@@ -74,9 +74,7 @@
} catch (Exception e) {
buf.append(e.toString());
- Misc.logHandledException(logger,
- e,
- "Caught Exception in toString()");
+ Misc.logHandledException(logger, e, "Caught Exception in
toString()");
Misc.handleUncaughtException(getKey(), e);
}
buf.append(']');
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/CompositeTrackerFactory.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/CompositeTrackerFactory.java
Wed Jul 6 11:14:38 2011
@@ -15,7 +15,7 @@
package org.stajistics.tracker;
import static org.stajistics.Util.assertNotEmpty;
-import static org.stajistics.Util.assertNotEmptyAfterTrim;
+import static org.stajistics.Util.assertNotBlank;
import static org.stajistics.Util.assertNotNull;
import java.util.Collection;
@@ -119,7 +119,7 @@
public Builder<T> withFactory(final String nameSuffix,
final TrackerFactory<T> factory) {
- assertNotEmptyAfterTrim(nameSuffix, "nameSuffix");
+ assertNotBlank(nameSuffix, "nameSuffix");
assertNotNull(factory, "factory");
factoryMap.put(nameSuffix, factory);
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/incident/DefaultIncidentTracker.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/incident/DefaultIncidentTracker.java
Wed Jul 6 11:14:38 2011
@@ -49,9 +49,7 @@
session.track(this, now);
session.update(this, now);
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Caught Exception in incident()");
+ Misc.logHandledException(logger, e, "Caught Exception in
incident()");
Misc.handleUncaughtException(getKey(), e);
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/manual/DefaultManualTracker.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/manual/DefaultManualTracker.java
Wed Jul 6 11:14:38 2011
@@ -58,9 +58,7 @@
session.track(this, now);
session.update(this, now);
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Caught Exception in commit()");
+ Misc.logHandledException(logger, e, "Caught Exception in
commit()");
Misc.handleUncaughtException(getKey(), e);
}
}
=======================================
---
/stajistics-core/src/main/java/org/stajistics/tracker/span/AbstractSpanTracker.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/main/java/org/stajistics/tracker/span/AbstractSpanTracker.java
Wed Jul 6 11:14:38 2011
@@ -44,9 +44,7 @@
startImpl(startTime);
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Caught Exception in track()");
+ Misc.logHandledException(logger, e, "Caught Exception in
track()");
Misc.handleUncaughtException(getKey(), e);
}
@@ -70,9 +68,7 @@
stopImpl(-1);
} catch (Exception e) {
- Misc.logHandledException(logger,
- e,
- "Caught Exception in commit()");
+ Misc.logHandledException(logger, e, "Caught Exception in
commit()");
Misc.handleUncaughtException(getKey(), e);
}
}
=======================================
---
/stajistics-core/src/test/java/org/stajistics/DefaultStatsManagerTest.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/test/java/org/stajistics/DefaultStatsManagerTest.java
Wed Jul 6 11:14:38 2011
@@ -30,7 +30,6 @@
import org.stajistics.event.EventManager;
import org.stajistics.event.EventType;
import org.stajistics.session.StatsSessionManager;
-import org.stajistics.task.TaskService;
import org.stajistics.tracker.TrackerLocator;
/**
@@ -54,7 +53,6 @@
assertNotNull(mgr.getEventManager());
assertNotNull(mgr.getTrackerLocator());
assertNotNull(mgr.getConfigBuilderFactory());
- assertNotNull(mgr.getTaskService());
}
@Test
@@ -65,8 +63,7 @@
mockery.mock(EventManager.class),
mockery.mock(TrackerLocator.class),
mockery.mock(StatsKeyFactory.class),
-
mockery.mock(StatsConfigBuilderFactory.class),
-
mockery.mock(TaskService.class));
+
mockery.mock(StatsConfigBuilderFactory.class));
assertNull(manager.getNamespace());
}
@@ -78,8 +75,7 @@
mockery.mock(EventManager.class),
mockery.mock(TrackerLocator.class),
mockery.mock(StatsKeyFactory.class),
-
mockery.mock(StatsConfigBuilderFactory.class),
-
mockery.mock(TaskService.class));
+
mockery.mock(StatsConfigBuilderFactory.class));
assertNull(manager.getNamespace());
}
@@ -92,8 +88,7 @@
mockery.mock(EventManager.class),
mockery.mock(TrackerLocator.class),
mockery.mock(StatsKeyFactory.class),
-
mockery.mock(StatsConfigBuilderFactory.class),
- mockery.mock(TaskService.class));
+
mockery.mock(StatsConfigBuilderFactory.class));
fail("Allowed null StatsConfigManager");
} catch (NullPointerException npe) {
assertEquals("configManager", npe.getMessage());
@@ -109,8 +104,7 @@
mockery.mock(EventManager.class),
mockery.mock(TrackerLocator.class),
mockery.mock(StatsKeyFactory.class),
-
mockery.mock(StatsConfigBuilderFactory.class),
- mockery.mock(TaskService.class));
+
mockery.mock(StatsConfigBuilderFactory.class));
fail("Allowed null StatsSessionManager");
} catch (NullPointerException npe) {
assertEquals("sessionManager", npe.getMessage());
@@ -126,8 +120,7 @@
null,
mockery.mock(TrackerLocator.class),
mockery.mock(StatsKeyFactory.class),
-
mockery.mock(StatsConfigBuilderFactory.class),
- mockery.mock(TaskService.class));
+
mockery.mock(StatsConfigBuilderFactory.class));
fail("Allowed null EventManager");
} catch (NullPointerException npe) {
assertEquals("eventManager", npe.getMessage());
@@ -143,8 +136,7 @@
mockery.mock(EventManager.class),
null,
mockery.mock(StatsKeyFactory.class),
-
mockery.mock(StatsConfigBuilderFactory.class),
- mockery.mock(TaskService.class));
+
mockery.mock(StatsConfigBuilderFactory.class));
fail("Allowed null TrackerLocator");
} catch (NullPointerException npe) {
assertEquals("trackerLocator", npe.getMessage());
@@ -160,8 +152,7 @@
mockery.mock(EventManager.class),
mockery.mock(TrackerLocator.class),
null,
-
mockery.mock(StatsConfigBuilderFactory.class),
- mockery.mock(TaskService.class));
+
mockery.mock(StatsConfigBuilderFactory.class));
fail("Allowed null StatsKeyFactory");
} catch (NullPointerException npe) {
assertEquals("keyFactory", npe.getMessage());
@@ -177,42 +168,22 @@
mockery.mock(EventManager.class),
mockery.mock(TrackerLocator.class),
mockery.mock(StatsKeyFactory.class),
- null,
- mockery.mock(TaskService.class));
+ null);
fail("Allowed null StatsConfigBuilderFactory");
} catch (NullPointerException npe) {
assertEquals("configBuilderFactory", npe.getMessage());
}
}
-
- @Test
- public void testConstructWithNullTaskService() {
- try {
- new DefaultStatsManager("ns",
- mockery.mock(StatsConfigManager.class),
-
mockery.mock(StatsSessionManager.class),
- mockery.mock(EventManager.class),
- mockery.mock(TrackerLocator.class),
- mockery.mock(StatsKeyFactory.class),
-
mockery.mock(StatsConfigBuilderFactory.class),
- null);
- fail("Allowed null TaskService");
- } catch (NullPointerException npe) {
- assertEquals("taskService", npe.getMessage());
- }
- }
private void expectInitialize(final StatsManager statsManager,
final StatsKeyFactory keyFactory,
final EventManager eventManager,
- final TaskService taskService,
final StatsConfigManager configManager,
final StatsSessionManager
sessionManager) {
mockery.checking(new Expectations() {{
one(keyFactory).setNamespace(statsManager.getNamespace());
one(eventManager).initialize();
- one(taskService).initialize();
one(configManager).initialize();
one(sessionManager).initialize();
@@ -228,7 +199,6 @@
final TrackerLocator trackerLocator =
mockery.mock(TrackerLocator.class);
final StatsKeyFactory keyFactory =
mockery.mock(StatsKeyFactory.class);
final StatsConfigBuilderFactory configBuilderFactory =
mockery.mock(StatsConfigBuilderFactory.class);
- final TaskService taskService = mockery.mock(TaskService.class);
final StatsManager mgr = new DefaultStatsManager("ns",
configManager,
@@ -236,10 +206,9 @@
eventManager,
trackerLocator,
keyFactory,
-
configBuilderFactory,
- taskService);
-
- expectInitialize(mgr, keyFactory, eventManager, taskService,
configManager, sessionManager);
+
configBuilderFactory);
+
+ expectInitialize(mgr, keyFactory, eventManager, configManager,
sessionManager);
try {
StatsManagerRegistry.getInstance().getStatsManager("ns");
@@ -269,7 +238,6 @@
final TrackerLocator trackerLocator =
mockery.mock(TrackerLocator.class);
final StatsKeyFactory keyFactory =
mockery.mock(StatsKeyFactory.class);
final StatsConfigBuilderFactory configBuilderFactory =
mockery.mock(StatsConfigBuilderFactory.class);
- final TaskService taskService = mockery.mock(TaskService.class);
final StatsManager mgr = new DefaultStatsManager("ns",
configManager,
@@ -277,10 +245,9 @@
eventManager,
trackerLocator,
keyFactory,
-
configBuilderFactory,
- taskService);
-
- expectInitialize(mgr, keyFactory, eventManager, taskService,
configManager, sessionManager);
+
configBuilderFactory);
+
+ expectInitialize(mgr, keyFactory, eventManager, configManager,
sessionManager);
mgr.initialize();
mockery.checking(new Expectations() {{
@@ -288,7 +255,6 @@
one(sessionManager).shutdown();
one(configManager).shutdown();
- one(taskService).shutdown();
one(eventManager).shutdown();
}});
@@ -305,7 +271,6 @@
TrackerLocator trackerLocator = mockery.mock(TrackerLocator.class);
StatsKeyFactory keyFactory = mockery.mock(StatsKeyFactory.class);
StatsConfigBuilderFactory configBuilderFactory =
mockery.mock(StatsConfigBuilderFactory.class);
- TaskService taskService = mockery.mock(TaskService.class);
StatsManager mgr = new DefaultStatsManager("ns",
configManager,
@@ -313,8 +278,7 @@
eventManager,
trackerLocator,
keyFactory,
- configBuilderFactory,
- taskService);
+ configBuilderFactory);
assertSame(configManager, mgr.getConfigManager());
}
@@ -327,7 +291,6 @@
TrackerLocator trackerLocator = mockery.mock(TrackerLocator.class);
StatsKeyFactory keyFactory = mockery.mock(StatsKeyFactory.class);
StatsConfigBuilderFactory configBuilderFactory =
mockery.mock(StatsConfigBuilderFactory.class);
- TaskService taskService = mockery.mock(TaskService.class);
StatsManager mgr = new DefaultStatsManager("ns",
configManager,
@@ -335,8 +298,7 @@
eventManager,
trackerLocator,
keyFactory,
- configBuilderFactory,
- taskService);
+ configBuilderFactory);
assertSame(sessionManager, mgr.getSessionManager());
}
@@ -349,7 +311,6 @@
TrackerLocator trackerLocator = mockery.mock(TrackerLocator.class);
StatsKeyFactory keyFactory = mockery.mock(StatsKeyFactory.class);
StatsConfigBuilderFactory configBuilderFactory =
mockery.mock(StatsConfigBuilderFactory.class);
- TaskService taskService = mockery.mock(TaskService.class);
StatsManager mgr = new DefaultStatsManager("ns",
configManager,
@@ -357,8 +318,7 @@
eventManager,
trackerLocator,
keyFactory,
- configBuilderFactory,
- taskService);
+ configBuilderFactory);
assertSame(eventManager, mgr.getEventManager());
}
@@ -372,7 +332,6 @@
TrackerLocator trackerLocator = mockery.mock(TrackerLocator.class);
StatsKeyFactory keyFactory = mockery.mock(StatsKeyFactory.class);
StatsConfigBuilderFactory configBuilderFactory =
mockery.mock(StatsConfigBuilderFactory.class);
- TaskService taskService = mockery.mock(TaskService.class);
StatsManager mgr = new DefaultStatsManager("ns",
configManager,
@@ -380,8 +339,7 @@
eventManager,
trackerLocator,
keyFactory,
- configBuilderFactory,
- taskService);
+ configBuilderFactory);
assertSame(trackerLocator, mgr.getTrackerLocator());
}
@@ -394,7 +352,6 @@
TrackerLocator trackerLocator = mockery.mock(TrackerLocator.class);
StatsKeyFactory keyFactory = mockery.mock(StatsKeyFactory.class);
StatsConfigBuilderFactory configBuilderFactory =
mockery.mock(StatsConfigBuilderFactory.class);
- TaskService taskService = mockery.mock(TaskService.class);
StatsManager mgr = new DefaultStatsManager("ns",
configManager,
@@ -402,8 +359,7 @@
eventManager,
trackerLocator,
keyFactory,
- configBuilderFactory,
- taskService);
+ configBuilderFactory);
assertSame(keyFactory, mgr.getKeyFactory());
}
@@ -416,7 +372,6 @@
TrackerLocator trackerLocator = mockery.mock(TrackerLocator.class);
StatsKeyFactory keyFactory = mockery.mock(StatsKeyFactory.class);
StatsConfigBuilderFactory configBuilderFactory =
mockery.mock(StatsConfigBuilderFactory.class);
- TaskService taskService = mockery.mock(TaskService.class);
StatsManager mgr = new DefaultStatsManager("ns",
configManager,
@@ -424,8 +379,7 @@
eventManager,
trackerLocator,
keyFactory,
- configBuilderFactory,
- taskService);
+ configBuilderFactory);
assertSame(configBuilderFactory, mgr.getConfigBuilderFactory());
}
=======================================
--- /stajistics-core/src/test/java/org/stajistics/TestApp.java Tue Jul 5
10:11:22 2011
+++ /stajistics-core/src/test/java/org/stajistics/TestApp.java Wed Jul 6
11:14:38 2011
@@ -10,7 +10,7 @@
public class TestApp {
public static void main(String[] args) throws Exception {
-
+
StatsFactory statsFactory = StatsFactory.forClass(TestApp.class);
StatsKey key = statsFactory.newKey("Test1");
=======================================
---
/stajistics-core/src/test/java/org/stajistics/bootstrap/AbstractStatsManagerFactoryTestCase.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/test/java/org/stajistics/bootstrap/AbstractStatsManagerFactoryTestCase.java
Wed Jul 6 11:14:38 2011
@@ -56,12 +56,6 @@
StatsManager mgr = createManager();
assertNotNull(mgr.getSessionManager());
}
-
- @Test
- public void testManagerHasNonNullTaskService() {
- StatsManager mgr = createManager();
- assertNotNull(mgr.getTaskService());
- }
@Test
public void testManagerHasNonNullTrackerLocator() {
=======================================
---
/stajistics-core/src/test/java/org/stajistics/management/DefaultStatsMXBeanRegistrarTest.java
Wed Jul 6 09:42:09 2011
+++
/stajistics-core/src/test/java/org/stajistics/management/DefaultStatsMXBeanRegistrarTest.java
Wed Jul 6 11:14:38 2011
@@ -27,6 +27,8 @@
import static org.stajistics.management.StatsMXBeanUtil.buildKeyName;
import static org.stajistics.management.StatsMXBeanUtil.buildManagerName;
+import java.lang.management.ManagementFactory;
+
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
@@ -80,8 +82,9 @@
mockMBeanFactory = mockery.mock(StatsMXBeanFactory.class);
mBeanServer = MBeanServerFactory.newMBeanServer();
-
- mxBeanRegistrar = new DefaultStatsMXBeanRegistrar(NAMESPACE,
mockMBeanFactory, mBeanServer);
+ DefaultStatsMXBeanRegistrar.setMBeanServer(mBeanServer);
+
+ mxBeanRegistrar = new DefaultStatsMXBeanRegistrar(NAMESPACE,
mockMBeanFactory);
mockery.checking(new Expectations() {{
allowing(mockStatsManager).getNamespace();
@@ -92,12 +95,13 @@
@After
public void tearDown() {
mxBeanRegistrar = null;
+
DefaultStatsMXBeanRegistrar.setMBeanServer(ManagementFactory.getPlatformMBeanServer());
}
@Test
public void testConstructWithNullNamespace() {
try {
- new DefaultStatsMXBeanRegistrar(null, mockMBeanFactory,
MBeanServerFactory.newMBeanServer());
+ new DefaultStatsMXBeanRegistrar(null, mockMBeanFactory);
} catch (NullPointerException npe) {
assertEquals("namespace", npe.getMessage());
}
@@ -106,33 +110,24 @@
@Test
public void testConstructWithEmptyNamespace() {
try {
- new DefaultStatsMXBeanRegistrar("", mockMBeanFactory,
MBeanServerFactory.newMBeanServer());
+ new DefaultStatsMXBeanRegistrar("", mockMBeanFactory);
} catch (IllegalArgumentException e) {
assertEquals("empty namespace", e.getMessage());
}
}
@Test
- public void testConstructWithNullMBeanFactory() {
+ public void testConstructWithNullMXBeanFactory() {
try {
- new DefaultStatsMXBeanRegistrar(NAMESPACE, null,
MBeanServerFactory.newMBeanServer());
+ new DefaultStatsMXBeanRegistrar(NAMESPACE, null);
} catch (NullPointerException npe) {
assertEquals("mxBeanFactory", npe.getMessage());
}
}
-
- @Test
- public void testConstructWithNullMBeanServer() {
- try {
- new DefaultStatsMXBeanRegistrar(NAMESPACE, mockMBeanFactory,
null);
- } catch (NullPointerException npe) {
- assertEquals("mBeanServer", npe.getMessage());
- }
- }
@Test
public void testGetMBeanServer() {
- assertSame(mBeanServer, mxBeanRegistrar.getMBeanServer());
+ assertSame(mBeanServer,
DefaultStatsMXBeanRegistrar.getMBeanServer());
}
@Test
=======================================
---
/stajistics-core/src/test/java/org/stajistics/session/AbstractStatsSessionTestCase.java
Wed Jun 15 10:23:52 2011
+++
/stajistics-core/src/test/java/org/stajistics/session/AbstractStatsSessionTestCase.java
Wed Jul 6 11:14:38 2011
@@ -52,19 +52,15 @@
protected StatsSession session;
@Before
- public void setUp() {
+ public void baseSetUp() {
mockKey = mockery.mock(StatsKey.class);
TestUtil.buildStatsKeyExpectations(mockery, mockKey, "test");
mockTracker = mockery.mock(Tracker.class);
mockEventManager = mockery.mock(EventManager.class);
- initMocks();
-
session = createStatsSession();
}
-
- protected void initMocks() {}
protected abstract StatsSession createStatsSession(DataRecorder...
dataRecorders);
@@ -218,7 +214,9 @@
public void testClear() {
mockery.checking(new Expectations() {{
ignoring(mockEventManager);
- allowing(mockTracker).getValue(); will(returnValue(1.0));
+
+ allowing(mockTracker).getValue();
+ will(returnValue(1.0));
}});
for (int i = 0; i < 10; i++) {
=======================================
---
/stajistics-core/src/test/java/org/stajistics/session/AsynchronousSessionTest.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/test/java/org/stajistics/session/AsynchronousSessionTest.java
Wed Jul 6 11:14:38 2011
@@ -20,33 +20,39 @@
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
import org.stajistics.session.recorder.DataRecorder;
import org.stajistics.task.DebugTaskService;
import org.stajistics.task.TaskService;
+import org.stajistics.task.TaskServiceFactory;
/**
* @author The Stajistics Project
*/
public class AsynchronousSessionTest extends AbstractStatsSessionTestCase {
- private TaskService mockTaskService;
-
- @Override
- protected void initMocks() {
- mockTaskService = new DebugTaskService(mockEventManager);
+ @Before
+ public void setUp() {
+ TaskServiceFactory.getInstance().loadTaskService(new
DebugTaskService());
+ }
+
+ @After
+ public void tearDown() {
+ TaskServiceFactory.getInstance().loadTaskService(null);
}
@Override
protected StatsSession createStatsSession(final DataRecorder...
dataRecorders) {
- return new AsynchronousSession(mockKey, mockEventManager,
mockTaskService, dataRecorders);
+ return new AsynchronousSession(mockKey, mockEventManager,
dataRecorders);
}
@Override
@Test
public void testConstructWithNullKey() {
try {
- new AsynchronousSession(null, mockEventManager,
mockTaskService, (DataRecorder[])null);
+ new AsynchronousSession(null, mockEventManager,
(DataRecorder[])null);
fail();
} catch (NullPointerException npe) {
assertEquals("key", npe.getMessage());
@@ -57,29 +63,18 @@
@Test
public void testConstructWithNullEventManager() {
try {
- new AsynchronousSession(mockKey, null, mockTaskService,
(DataRecorder[])null);
+ new AsynchronousSession(mockKey, null, (DataRecorder[])null);
fail();
} catch (NullPointerException npe) {
assertEquals("eventManager", npe.getMessage());
}
}
-
- @Test
- public void testConstructWithNullTaskService() {
- try {
- new AsynchronousSession(mockKey, mockEventManager, null,
(DataRecorder[])null);
- fail();
- } catch (NullPointerException npe) {
- assertEquals("taskService", npe.getMessage());
- }
- }
@Test
public void testConstructWithNullUpdateQueue() {
try {
new AsynchronousSession(mockKey,
mockEventManager,
- mockTaskService,
null,
(DataRecorder[])null);
fail();
@@ -90,18 +85,18 @@
@Test
public void testTrackWithNastyTaskService() {
+ TaskServiceFactory.getInstance().loadTaskService(new
NastyTaskService());
StatsSession service = new AsynchronousSession(mockKey,
- mockEventManager,
- new
NastyTaskService());
+ mockEventManager);
service.track(mockTracker, 1L);
}
@Test
public void testUpdateWithNastyTaskService() {
+ TaskServiceFactory.getInstance().loadTaskService(new
NastyTaskService());
StatsSession service = new AsynchronousSession(mockKey,
- mockEventManager,
- new
NastyTaskService());
+ mockEventManager);
service.update(mockTracker, 1L);
}
=======================================
---
/stajistics-core/src/test/java/org/stajistics/session/ConcurrentSessionTest.java
Mon Jun 20 15:36:53 2011
+++
/stajistics-core/src/test/java/org/stajistics/session/ConcurrentSessionTest.java
Wed Jul 6 11:14:38 2011
@@ -16,6 +16,7 @@
import static org.junit.Assert.assertEquals;
+import org.jmock.Expectations;
import org.junit.Test;
import org.stajistics.session.recorder.DataRecorder;
=======================================
---
/stajistics-core/src/test/java/org/stajistics/session/DefaultSessionFactoryTest.java
Tue Jul 5 10:11:22 2011
+++
/stajistics-core/src/test/java/org/stajistics/session/DefaultSessionFactoryTest.java
Wed Jul 6 11:14:38 2011
@@ -70,9 +70,6 @@
allowing(mockManager).getEventManager();
will(returnValue(mockEventManager));
-
- allowing(mockManager).getTaskService();
- will(returnValue(mockTaskService));
}});
StatsSession session =
DefaultSessionFactory.getInstance().createSession(mockKey, dataRecorders);