hlship 2004/06/15 12:26:38
Modified: framework/src/java/org/apache/hivemind
HiveMindMessages.properties
framework/src/test/hivemind/test/services
TestEventLinker.java EventConsumer.java
EventProducer.java
framework/src/java/org/apache/hivemind/order
OrdererMessages.java Orderer.java
framework/src/java/org/apache/hivemind/service/impl
EventLinkerImpl.java ServiceMessages.java
BuilderFactory.java ServiceStrings.properties
library/src/test/org/apache/hivemind/lib/factory
TestBeanTranslator.java
library/src/java/org/apache/hivemind/lib/factory
BeanTranslator.java
framework/src/test/org/apache/hivemind/order
TestOrderer.java
Added: framework/src/java/org/apache/hivemind/order
OrdererStrings.properties
Log:
Split out many messages out of HiveMindMessages.properties and into
per-package properties files (more to come).
Begin excising location-related portions of messages (as location reporting
is a function of the ErrorHandler).
Revision Changes Path
1.18 +0 -9
jakarta-hivemind/framework/src/java/org/apache/hivemind/HiveMindMessages.properties
Index: HiveMindMessages.properties
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/HiveMindMessages.properties,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- HiveMindMessages.properties 10 Jun 2004 19:49:39 -0000 1.17
+++ HiveMindMessages.properties 15 Jun 2004 19:26:37 -0000 1.18
@@ -84,15 +84,6 @@
HiveMindFilter.init=Constructing HiveMind Registry.
HiveMindFilter.cleanup-error=Unable to cleanup current thread: {0}
-# order package
-
-Orderer.duplicate-name={0} ''{1}'' (at {2}) duplicates previous value (at
{3}) and is being ignored.
-Orderer.bad-dependency=Unknown {0} dependency ''{1}'' (for ''{2}'', at {3}).
-Orderer.dependency-cycle=Unable to order {0} ''{1}'' (at {2}) due to
dependency cycle: {3}
-Orderer.exception=Unable to order {0}s: {1}
-Orderer.dupe-leader={0} ''{1}'' (at {2}) has been ordered first, conflicting
with ''{3}'' (at {4}).
-Orderer.dupe-trailer={0} ''{1}'' (at {2}) has been ordered last, conflicting
with ''{3}'' (at {4}).
-
# sdl.parse package
SDLResourceParser.unable-to-close-stream=Unable to close input stream for
{0}: {1}
1.3 +67 -33
jakarta-hivemind/framework/src/test/hivemind/test/services/TestEventLinker.java
Index: TestEventLinker.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/services/TestEventLinker.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestEventLinker.java 18 May 2004 15:34:01 -0000 1.2
+++ TestEventLinker.java 15 Jun 2004 19:26:37 -0000 1.3
@@ -16,6 +16,7 @@
import java.beans.PropertyChangeEvent;
+import org.apache.hivemind.ErrorHandler;
import org.apache.hivemind.Location;
import org.apache.hivemind.Resource;
import org.apache.hivemind.impl.DefaultClassResolver;
@@ -25,6 +26,7 @@
import org.apache.hivemind.service.impl.EventLinkerImpl;
import org.apache.hivemind.test.HiveMindTestCase;
import org.apache.hivemind.util.ClasspathResource;
+import org.easymock.MockControl;
/**
* Tests for the [EMAIL PROTECTED]
org.apache.hivemind.service.impl.EventLinkerImpl} class,
@@ -35,14 +37,13 @@
*/
public class TestEventLinker extends HiveMindTestCase
{
- private EventLinker _l = new EventLinkerImpl();
-
public void testNoName()
{
EventProducer p = new EventProducer();
EventConsumer c = new EventConsumer();
+ EventLinker l = new EventLinkerImpl(null, null);
- _l.addEventListener(p, null, c, null);
+ l.addEventListener(p, null, c, null);
PropertyChangeEvent e = new PropertyChangeEvent(this, "whatever",
"foo", "bar");
@@ -55,7 +56,7 @@
EventConsumer c2 = new EventConsumer();
- _l.addEventListener(p, null, c2, null);
+ l.addEventListener(p, null, c2, null);
p.fire(e);
@@ -66,15 +67,15 @@
{
EventProducer p = new EventProducer();
EventConsumer c = new EventConsumer();
+ EventLinker l = new EventLinkerImpl(null, null);
- _l.addEventListener(p, "propertyChange", c, null);
+ l.addEventListener(p, "propertyChange", c, null);
PropertyChangeEvent e = new PropertyChangeEvent(this, "whatever",
"foo", "bar");
p.fire(e);
assertSame(e, c.getLastEvent());
-
}
private Location createLocation()
@@ -85,71 +86,104 @@
public void testNoMatch() throws Exception
{
- Location l = createLocation();
+ Location location = createLocation();
EventProducer p = new EventProducer();
Object c = "NeverwinterNights";
- interceptLogging(EventLinkerImpl.class.getName());
+ MockControl control =
MockControl.createStrictControl(ErrorHandler.class);
+ ErrorHandler eh = (ErrorHandler) control.getMock();
+
+ eh.error(
+ null,
+ "NeverwinterNights does not implement any listener interfaces
compatible with EventProducer.",
+ location,
+ null);
+
+ control.replay();
- _l.addEventListener(p, null, c, l);
+ EventLinker l = new EventLinkerImpl(null, eh);
- assertLoggedMessagePattern(
- "NeverwinterNights \\(at classpath:/foo/bar, line 67\\) "
- + "does not implement any listener interfaces compatible
with "
- + "hivemind.test.services.EventProducer@");
+ l.addEventListener(p, null, c, location);
assertEquals(0, p.getListenerCount());
+
+ control.verify();
}
public void testNoMatchingName() throws Exception
{
- Location l = createLocation();
+ Location location = createLocation();
EventProducer p = new EventProducer();
Object c = "SoulCailiburII";
- interceptLogging(EventLinkerImpl.class.getName());
+ MockControl control =
MockControl.createStrictControl(ErrorHandler.class);
+ ErrorHandler eh = (ErrorHandler) control.getMock();
+
+ eh.error(
+ null,
+ "EventProducer does not implement an event set named 'fred'.",
+ location,
+ null);
+
+ control.replay();
- _l.addEventListener(p, "fred", c, l);
+ EventLinker l = new EventLinkerImpl(null, eh);
- assertLoggedMessagePattern(
- "[EMAIL PROTECTED] does not implement an "
- + "event set named 'fred' \\(at classpath:/foo/bar, line
67\\)\\.");
+ l.addEventListener(p, "fred", c, location);
assertEquals(0, p.getListenerCount());
+
+ control.verify();
}
public void testIncompatible() throws Exception
{
- Location l = createLocation();
+ Location location = createLocation();
EventProducer p = new EventProducer();
Object c = "SplinterCell";
- interceptLogging(EventLinkerImpl.class.getName());
+ MockControl control =
MockControl.createStrictControl(ErrorHandler.class);
+ ErrorHandler eh = (ErrorHandler) control.getMock();
+
+ eh.error(
+ null,
+ "SplinterCell does not implement the
java.beans.PropertyChangeListener listener interface (for event set
'propertyChange' of EventProducer).",
+ location,
+ null);
+
+ control.replay();
- _l.addEventListener(p, "propertyChange", c, l);
+ EventLinker l = new EventLinkerImpl(null, eh);
- assertLoggedMessagePattern(
- "SplinterCell \\(at classpath:/foo/bar, line 67\\) does not
implement "
- + "the java.beans.PropertyChangeListener listener interface "
- + "\\(for event set 'propertyChange' of [EMAIL
PROTECTED])\\.");
+ l.addEventListener(p, "propertyChange", c, location);
assertEquals(0, p.getListenerCount());
+ control.verify();
}
public void testNoProducer() throws Exception
{
- Location l = createLocation();
+ Location location = createLocation();
Object p = "DanceDanceRevolution";
Object c = "SplinterCell";
- interceptLogging(EventLinkerImpl.class.getName());
+ MockControl control =
MockControl.createStrictControl(ErrorHandler.class);
+ ErrorHandler eh = (ErrorHandler) control.getMock();
+
+ eh.error(
+ null,
+ "SplinterCell does not implement any listener interfaces
compatible with DanceDanceRevolution.",
+ location,
+ null);
+
+ control.replay();
+
+ EventLinker l = new EventLinkerImpl(null, eh);
- _l.addEventListener(p, null, c, l);
+ l.addEventListener(p, null, c, location);
- assertLoggedMessagePattern(
- "SplinterCell \\(at classpath:/foo/bar, line 67\\) "
- + "does not implement any listener interfaces compatible
with DanceDanceRevolution\\.");
+ control.verify();
}
public void testInsideBuilderFactory() throws Exception
1.2 +6 -1
jakarta-hivemind/framework/src/test/hivemind/test/services/EventConsumer.java
Index: EventConsumer.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/services/EventConsumer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- EventConsumer.java 26 Feb 2004 23:07:36 -0000 1.1
+++ EventConsumer.java 15 Jun 2004 19:26:37 -0000 1.2
@@ -42,4 +42,9 @@
_lastEvent = event;
}
+ public String toString()
+ {
+ return "EventConsumer";
+ }
+
}
1.2 +26 -22
jakarta-hivemind/framework/src/test/hivemind/test/services/EventProducer.java
Index: EventProducer.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/services/EventProducer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- EventProducer.java 26 Feb 2004 23:07:36 -0000 1.1
+++ EventProducer.java 15 Jun 2004 19:26:37 -0000 1.2
@@ -18,7 +18,6 @@
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
-
/**
* Class used by [EMAIL PROTECTED] hivemind.test.services.TestEventLinker}.
*
@@ -27,25 +26,30 @@
*/
public class EventProducer
{
- private PropertyChangeSupport _support = new
PropertyChangeSupport(this);
-
- public void addPropertyChangeListener(PropertyChangeListener listener)
- {
- _support.addPropertyChangeListener(listener);
- }
+ private PropertyChangeSupport _support = new PropertyChangeSupport(this);
+
+ public void addPropertyChangeListener(PropertyChangeListener listener)
+ {
+ _support.addPropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener)
+ {
+ _support.removePropertyChangeListener(listener);
+ }
+
+ public void fire(PropertyChangeEvent event)
+ {
+ _support.firePropertyChange(event);
+ }
+
+ public int getListenerCount()
+ {
+ return _support.getPropertyChangeListeners().length;
+ }
- public void removePropertyChangeListener(PropertyChangeListener
listener)
- {
- _support.removePropertyChangeListener(listener);
- }
-
- public void fire(PropertyChangeEvent event)
- {
- _support.firePropertyChange(event);
- }
-
- public int getListenerCount()
- {
- return _support.getPropertyChangeListeners().length;
- }
+ public String toString()
+ {
+ return "EventProducer";
+ }
}
1.2 +21 -18
jakarta-hivemind/framework/src/java/org/apache/hivemind/order/OrdererMessages.java
Index: OrdererMessages.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/order/OrdererMessages.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- OrdererMessages.java 5 Jun 2004 19:09:13 -0000 1.1
+++ OrdererMessages.java 15 Jun 2004 19:26:37 -0000 1.2
@@ -14,11 +14,12 @@
package org.apache.hivemind.order;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.hivemind.HiveMind;
+import org.apache.hivemind.impl.MessageFormatter;
import org.apache.hivemind.util.StringUtils;
-import sun.rmi.transport.ObjectTable;
-
/**
* Messages for classes in this package.
*
@@ -26,14 +27,18 @@
*/
final class OrdererMessages
{
+ private static final Log LOG = LogFactory.getLog(OrdererMessages.class);
+ private static final MessageFormatter _formatter =
+ new MessageFormatter(LOG, OrdererMessages.class, "OrdererStrings");
+
public static String duplicateName(
String objectType,
String objectName,
Object newObject,
Object existingObject)
{
- return HiveMind.format(
- "Orderer.duplicate-name",
+ return _formatter.format(
+ "duplicate-name",
new Object[] {
StringUtils.capitalize(objectType),
objectName,
@@ -43,7 +48,7 @@
public static String exception(String objectType, Throwable cause)
{
- return HiveMind.format("Orderer.exception", objectType,
cause.getMessage());
+ return _formatter.format("Orderer.exception", objectType,
_formatter.extractMessage(cause));
}
public static String dupeLeader(
@@ -51,8 +56,8 @@
ObjectOrdering newOrdering,
ObjectOrdering existingLeader)
{
- return HiveMind.format(
- "Orderer.dupe-leader",
+ return _formatter.format(
+ "dupe-leader",
new Object[] {
StringUtils.capitalize(objectType),
newOrdering.getName(),
@@ -66,8 +71,8 @@
ObjectOrdering newOrdering,
ObjectOrdering existingTrailer)
{
- return HiveMind.format(
- "Orderer.dupe-trailer",
+ return _formatter.format(
+ "dupe-trailer",
new Object[] {
StringUtils.capitalize(objectType),
newOrdering.getName(),
@@ -81,13 +86,11 @@
ObjectOrdering trigger,
Throwable cause)
{
- return HiveMind.format(
- "Orderer.dependency-cycle",
- new Object[] {
- objectType,
- trigger.getName(),
- HiveMind.getLocationString(trigger.getObject()),
- cause.getMessage()});
+ return _formatter.format(
+ "dependency-cycle",
+ objectType,
+ trigger.getName(),
+ _formatter.extractMessage(cause));
}
public static String badDependency(
@@ -95,8 +98,8 @@
String dependencyName,
ObjectOrdering ordering)
{
- return HiveMind.format(
- "Orderer.bad-dependency",
+ return _formatter.format(
+ "bad-dependency",
new Object[] {
objectType,
dependencyName,
1.5 +26 -12
jakarta-hivemind/framework/src/java/org/apache/hivemind/order/Orderer.java
Index: Orderer.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/order/Orderer.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Orderer.java 10 Jun 2004 19:49:40 -0000 1.4
+++ Orderer.java 15 Jun 2004 19:26:37 -0000 1.5
@@ -188,8 +188,7 @@
}
catch (Exception ex)
{
-
- _log.error(OrdererMessages.exception(_objectType, ex), ex);
+ _errorHandler.error(_log, OrdererMessages.exception(_objectType,
ex), null, ex);
}
}
@@ -224,11 +223,11 @@
_leader = goal;
else
{
- _log.error(
- OrdererMessages.dupeLeader(
- _objectType,
- o,
- getOrderable(_leader.getName())));
+ _errorHandler.error(
+ _log,
+ OrdererMessages.dupeLeader(_objectType, o,
getOrderable(_leader.getName())),
+ HiveMind.getLocation(o.getObject()),
+ null);
}
}
@@ -238,11 +237,14 @@
_trailer = goal;
else
{
- _log.error(
+ _errorHandler.error(
+ _log,
OrdererMessages.dupeTrailer(
_objectType,
o,
- getOrderable(_trailer.getName())));
+ getOrderable(_trailer.getName())),
+ HiveMind.getLocation(o.getObject()),
+ null);
}
}
@@ -285,7 +287,11 @@
String name = goal.getName();
ObjectOrdering trigger = getOrderable(name);
- _log.error(OrdererMessages.dependencyCycle(_objectType, trigger,
ex), ex);
+ _errorHandler.error(
+ _log,
+ OrdererMessages.dependencyCycle(_objectType, trigger, ex),
+ HiveMind.getLocation(orderable.getObject()),
+ ex);
}
}
@@ -320,7 +326,11 @@
String name = goal.getName();
ObjectOrdering trigger = getOrderable(name);
- _log.error(OrdererMessages.dependencyCycle(_objectType,
trigger, ex), ex);
+ _errorHandler.error(
+ _log,
+ OrdererMessages.dependencyCycle(_objectType,
trigger, ex),
+ HiveMind.getLocation(trigger.getObject()),
+ ex);
}
}
@@ -359,7 +369,11 @@
String name = goal.getName();
ObjectOrdering trigger = getOrderable(name);
- _log.error(OrdererMessages.dependencyCycle(_objectType,
trigger, ex), ex);
+ _errorHandler.error(
+ _log,
+ OrdererMessages.dependencyCycle(_objectType,
trigger, ex),
+ HiveMind.getLocation(trigger.getObject()),
+ ex);
}
}
1.1
jakarta-hivemind/framework/src/java/org/apache/hivemind/order/OrdererStrings.properties
Index: OrdererStrings.properties
===================================================================
#
# Copyright 2004 The Apache Software Foundation
#
# 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.
duplicate-name={0} ''{1}'' (at {2}) duplicates previous value (at {3}) and is
being ignored.
bad-dependency=Unknown {0} dependency ''{1}'' (for ''{2}'', at {3}).
dependency-cycle=Unable to order {0} ''{1}'' due to dependency cycle: {2}
exception=Unable to order {0}s: {1}
dupe-leader={0} ''{1}'' (at {2}) has been ordered first, conflicting with
''{3}'' (at {4}).
dupe-trailer={0} ''{1}'' (at {2}) has been ordered last, conflicting with
''{3}'' (at {4}).
1.4 +33 -8
jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/EventLinkerImpl.java
Index: EventLinkerImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/EventLinkerImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- EventLinkerImpl.java 5 Jun 2004 19:09:13 -0000 1.3
+++ EventLinkerImpl.java 15 Jun 2004 19:26:37 -0000 1.4
@@ -24,6 +24,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hivemind.ErrorHandler;
import org.apache.hivemind.HiveMind;
import org.apache.hivemind.Location;
import org.apache.hivemind.impl.BaseLocatable;
@@ -39,13 +40,20 @@
*/
public class EventLinkerImpl extends BaseLocatable implements EventLinker
{
- private static final Log LOG = LogFactory.getLog(EventLinkerImpl.class);
+ private Log _log;
+ private ErrorHandler _errorHandler;
/**
* Map of [EMAIL PROTECTED] java.beans.EventSetDescriptor}[], keyed on
producer class.
*/
private Map _producerEventSets;
+ public EventLinkerImpl(Log log, ErrorHandler errorHandler)
+ {
+ _log = log;
+ _errorHandler = errorHandler;
+ }
+
public void addEventListener(
Object producer,
String eventSetName,
@@ -71,8 +79,11 @@
addEventListener(producer, set, consumer, location);
else
{
- LOG.error(
- ServiceMessages.notCompatibleWithEvent(consumer,
location, set, producer));
+ _errorHandler.error(
+ _log,
+ ServiceMessages.notCompatibleWithEvent(consumer,
set, producer),
+ location,
+ null);
}
return;
@@ -90,9 +101,17 @@
if (count == 0)
{
if (nameMatch)
- LOG.error(ServiceMessages.noSuchEventSet(producer,
eventSetName, location));
+ _errorHandler.error(
+ _log,
+ ServiceMessages.noSuchEventSet(producer, eventSetName),
+ location,
+ null);
else
- LOG.error(ServiceMessages.noEventMatches(consumer, location,
producer));
+ _errorHandler.error(
+ _log,
+ ServiceMessages.noEventMatches(consumer, producer),
+ location,
+ null);
}
}
@@ -115,8 +134,10 @@
}
catch (Exception ex)
{
- LOG.error(
+ _errorHandler.error(
+ _log,
ServiceMessages.unableToAddListener(producer, set, consumer,
location, ex),
+ location,
ex);
}
@@ -159,7 +180,11 @@
}
catch (IntrospectionException ex)
{
- LOG.error(ServiceMessages.unableToIntrospectClass(producerClass,
ex), ex);
+ _errorHandler.error(
+ _log,
+ ServiceMessages.unableToIntrospectClass(producerClass, ex),
+ null,
+ ex);
return new EventSetDescriptor[0];
}
1.6 +5 -13
jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/ServiceMessages.java
Index: ServiceMessages.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/ServiceMessages.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ServiceMessages.java 12 Jun 2004 18:43:41 -0000 1.5
+++ ServiceMessages.java 15 Jun 2004 19:26:37 -0000 1.6
@@ -21,11 +21,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.hivemind.HiveMind;
import org.apache.hivemind.InterceptorStack;
import org.apache.hivemind.Location;
import org.apache.hivemind.impl.MessageFormatter;
-import org.apache.hivemind.service.ClassFab;
import org.apache.hivemind.service.MethodSignature;
/**
@@ -129,28 +127,22 @@
public static String notCompatibleWithEvent(
Object consumer,
- Location location,
EventSetDescriptor set,
Object producer)
{
return _formatter.format(
"not-compatible-with-event",
- new Object[] {
- consumer,
- location,
- set.getListenerType().getName(),
- set.getName(),
- producer });
+ new Object[] { consumer, set.getListenerType().getName(),
set.getName(), producer });
}
- public static String noSuchEventSet(Object producer, String name,
Location location)
+ public static String noSuchEventSet(Object producer, String name)
{
- return _formatter.format("no-such-event-set", producer, name,
location);
+ return _formatter.format("no-such-event-set", producer, name);
}
- public static String noEventMatches(Object consumer, Location location,
Object producer)
+ public static String noEventMatches(Object consumer, Object producer)
{
- return _formatter.format("no-event-matches", consumer, location,
producer);
+ return _formatter.format("no-event-matches", consumer, producer);
}
public static String unableToAddListener(
1.10 +17 -9
jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/BuilderFactory.java
Index: BuilderFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/BuilderFactory.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- BuilderFactory.java 15 Jun 2004 13:42:33 -0000 1.9
+++ BuilderFactory.java 15 Jun 2004 19:26:37 -0000 1.10
@@ -15,12 +15,14 @@
package org.apache.hivemind.service.impl;
import java.lang.reflect.Method;
+import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ClassResolver;
+import org.apache.hivemind.ErrorHandler;
import org.apache.hivemind.HiveMind;
import org.apache.hivemind.Location;
import org.apache.hivemind.ServiceImplementationFactory;
@@ -49,8 +51,6 @@
{
private static final String POINT_ID = "hivemind.BuilderFactory";
- private EventLinker _eventLinker = new EventLinkerImpl();
-
public Object createCoreServiceImplementation(
String serviceId,
Class serviceInterface,
@@ -60,6 +60,7 @@
HiveMind.checkFactoryParameterCount(POINT_ID, parameters, 1);
Log log = LogFactory.getLog(serviceId);
+ ErrorHandler errorHandler = invokingModule.getErrorHandler();
BuilderParameter parameter = (BuilderParameter) parameters.get(0);
@@ -67,29 +68,36 @@
setProperties(serviceId, invokingModule, parameter, result, log);
- registerForEvents(parameter, result);
+ registerForEvents(log, errorHandler, parameter, result);
invokeInitializer(parameter, result, serviceId, log, invokingModule);
return result;
}
- private void registerForEvents(BuilderParameter parameter, Object result)
+ private void registerForEvents(
+ Log log,
+ ErrorHandler eventHandler,
+ BuilderParameter parameter,
+ Object result)
{
List eventRegistrations = parameter.getEventRegistrations();
- int count = eventRegistrations.size();
- for (int i = 0; i < count; i++)
+ if (eventRegistrations.isEmpty())
+ return;
+
+ EventLinker linker = new EventLinkerImpl(log, eventHandler);
+ Iterator i = eventRegistrations.iterator();
+ while (i.hasNext())
{
- EventRegistration er = (EventRegistration)
eventRegistrations.get(i);
+ EventRegistration er = (EventRegistration) i.next();
- _eventLinker.addEventListener(
+ linker.addEventListener(
er.getProducer(),
er.getEventSetName(),
result,
er.getLocation());
}
-
}
private void setProperties(
1.4 +3 -3
jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/ServiceStrings.properties
Index: ServiceStrings.properties
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/ServiceStrings.properties,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ServiceStrings.properties 12 Jun 2004 18:43:41 -0000 1.3
+++ ServiceStrings.properties 15 Jun 2004 19:26:37 -0000 1.4
@@ -23,9 +23,9 @@
unable-to-lookup=Unable to lookup {0}: {1}
unable-to-add-catch=Unable to add catch block for exception {0} to class
{1}: {2}
duplicate-symbol=Default for symbol ''{0}'' duplicates prior value (at {1})
and has been ignored.
-not-compatible-with-event={0} (at {1}) does not implement the {2} listener
interface (for event set ''{3}'' of {4}).
-no-such-event-set={0} does not implement an event set named ''{1}'' (at {2}).
-no-event-matches={0} (at {1}) does not implement any listener interfaces
compatible with {2}.
+not-compatible-with-event={0} does not implement the {1} listener interface
(for event set ''{2}'' of {3}).
+no-such-event-set={0} does not implement an event set named ''{1}''.
+no-event-matches={0} does not implement any listener interfaces compatible
with {1}.
unable-to-introspect-class=Unable to introspect {0}: {1}
unable-to-add-listener=Unable to add {0} as listener of {1} (event set {2},
at {3}): {4}
duplicate-method-in-class=Attempt to redefine method {0} of class {1}.
1.2 +2 -2
jakarta-hivemind/library/src/test/org/apache/hivemind/lib/factory/TestBeanTranslator.java
Index: TestBeanTranslator.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/library/src/test/org/apache/hivemind/lib/factory/TestBeanTranslator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestBeanTranslator.java 15 Jun 2004 13:42:33 -0000 1.1
+++ TestBeanTranslator.java 15 Jun 2004 19:26:37 -0000 1.2
@@ -1,10 +1,10 @@
-// Copyright 2004 The Apache Software Foundation
+// Copyright 2004 The Apache Software Foundation
//
// 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
+// 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,
1.2 +2 -2
jakarta-hivemind/library/src/java/org/apache/hivemind/lib/factory/BeanTranslator.java
Index: BeanTranslator.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/library/src/java/org/apache/hivemind/lib/factory/BeanTranslator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BeanTranslator.java 15 Jun 2004 13:42:33 -0000 1.1
+++ BeanTranslator.java 15 Jun 2004 19:26:38 -0000 1.2
@@ -1,10 +1,10 @@
-// Copyright 2004 The Apache Software Foundation
+// Copyright 2004 The Apache Software Foundation
//
// 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
+// 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,
1.3 +53 -13
jakarta-hivemind/framework/src/test/org/apache/hivemind/order/TestOrderer.java
Index: TestOrderer.java
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/test/org/apache/hivemind/order/TestOrderer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestOrderer.java 10 Jun 2004 19:49:40 -0000 1.2
+++ TestOrderer.java 15 Jun 2004 19:26:38 -0000 1.3
@@ -18,10 +18,17 @@
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.hivemind.ErrorHandler;
import org.apache.hivemind.impl.DefaultErrorHandler;
+import org.easymock.AbstractMatcher;
import org.easymock.MockControl;
+import com.werken.werkz.CyclicGoalChainException;
+import com.werken.werkz.Goal;
+import com.werken.werkz.WerkzException;
+
/**
* Tests for the [EMAIL PROTECTED] org.apache.hivemind.order.Orderer}.
*
@@ -30,6 +37,8 @@
*/
public class TestOrderer extends FrameworkTestCase
{
+ private static final Log LOG = LogFactory.getLog(TestOrderer.class);
+
private MockControl _errorHandlerControl;
private ErrorHandler getErrorHandler()
@@ -140,43 +149,74 @@
assertLoggedMessage("Unknown cartoon character dependency 'dino'
(for 'betty', at unknown location).");
}
+ private static class ExceptionAwareArgumentsMatcher extends
AbstractMatcher
+ {
+ protected boolean argumentMatches(Object arg0, Object arg1)
+ {
+ if (arg0 instanceof Throwable)
+ return arg0.getClass().equals(arg1.getClass());
+
+ return super.argumentMatches(arg0, arg1);
+ }
+
+ }
+
public void testCyclePre() throws Exception
{
- Orderer o = new Orderer(new DefaultErrorHandler(), "cartoon
character");
+ MockControl c = MockControl.createStrictControl(ErrorHandler.class);
+ ErrorHandler eh = (ErrorHandler) c.getMock();
+
+ eh.error(
+ LOG,
+ "Unable to order cartoon character 'wilma' due to dependency
cycle:"
+ + " A cycle has been detected from the initial goal [wilma]",
+ null,
+ new CyclicGoalChainException(new Goal("")));
+
+ c.setMatcher(new ExceptionAwareArgumentsMatcher());
+
+ c.replay();
+
+ Orderer o = new Orderer(LOG, eh, "cartoon character");
o.add("FRED", "fred", "wilma", null);
o.add("BARNEY", "barney", "betty", null);
o.add("BETTY", "betty", "fred", null);
o.add("WILMA", "wilma", "barney", null);
- interceptLogging();
-
List l = o.getOrderedObjects();
assertListsEqual(new Object[] { "WILMA", "FRED", "BETTY", "BARNEY"
}, l);
- assertLoggedMessage(
- "Unable to order cartoon character 'wilma' (at unknown location)
due to dependency cycle:"
- + " A cycle has been detected from the initial goal
[wilma]");
+ c.verify();
}
public void testCyclePost() throws Exception
{
- Orderer o = new Orderer(new DefaultErrorHandler(), "cartoon
character");
+ MockControl c = MockControl.createStrictControl(ErrorHandler.class);
+ ErrorHandler eh = (ErrorHandler) c.getMock();
+
+ eh.error(
+ LOG,
+ "Unable to order cartoon character 'betty' due to dependency
cycle: A cycle has been detected from the initial goal [fred]",
+ null,
+ new CyclicGoalChainException(new Goal("")));
+
+ c.setMatcher(new ExceptionAwareArgumentsMatcher());
+
+ c.replay();
+
+ Orderer o = new Orderer(LOG, eh, "cartoon character");
o.add("WILMA", "wilma", null, "betty");
o.add("FRED", "fred", null, "barney");
o.add("BARNEY", "barney", null, "wilma");
o.add("BETTY", "betty", null, "fred");
- interceptLogging();
-
List l = o.getOrderedObjects();
assertListsEqual(new Object[] { "FRED", "BARNEY", "WILMA", "BETTY"
}, l);
- assertLoggedMessage(
- "Unable to order cartoon character 'betty' (at unknown location)
due to dependency cycle:"
- + " A cycle has been detected from the initial goal [fred]");
+ c.verify();
}
public void testDupe() throws Exception
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]