diff --git a/README.md b/README.md
index e267152..86d014c 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ dependency:
org.microbean
microbean-event
- 0.0.2
+ 0.0.3
```
diff --git a/pom.xml b/pom.xml
index 446ea61..34a05be 100644
--- a/pom.xml
+++ b/pom.xml
@@ -127,7 +127,7 @@
org.microbean
microbean-assign
- 0.0.10
+ 0.0.11
@@ -139,7 +139,7 @@
org.microbean
microbean-bean
- 0.0.21
+ 0.0.22
diff --git a/src/main/java/org/microbean/event/EventQualifiersMatcher.java b/src/main/java/org/microbean/event/EventQualifiersMatcher.java
index 7e28042..bb48d3c 100644
--- a/src/main/java/org/microbean/event/EventQualifiersMatcher.java
+++ b/src/main/java/org/microbean/event/EventQualifiersMatcher.java
@@ -16,11 +16,11 @@
import java.util.Collection;
import org.microbean.assign.Matcher;
+import org.microbean.assign.Qualifiers;
import org.microbean.attributes.Attributes;
-import static org.microbean.assign.Qualifiers.anyQualifier;
-import static org.microbean.assign.Qualifiers.qualifiers;
+import static java.util.Objects.requireNonNull;
/**
* A {@link Matcher} encapsulating , Collection extends Attributes>> {
+ /*
+ * Instance fields.
+ */
+
+
+ private final Qualifiers qualifiers;
+
+
/*
* Constructors.
*/
@@ -41,9 +49,14 @@ public final class EventQualifiersMatcher implements Matcher receiverAttribu
final Collection extends Attributes> payloadAttributes) {
// "An event is delivered to an observer method if...the observer method has no event qualifiers or has a subset of
// the event qualifiers."
- final Collection extends Attributes> receiverQualifiers = qualifiers(receiverAttributes);
- return receiverQualifiers.isEmpty() || qualifiers(payloadAttributes).containsAll(receiverQualifiers);
+ final Collection extends Attributes> receiverQualifiers = qualifiers.qualifiers(receiverAttributes);
+ return receiverQualifiers.isEmpty() || qualifiers.qualifiers(payloadAttributes).containsAll(receiverQualifiers);
}
}
diff --git a/src/main/java/org/microbean/event/Events.java b/src/main/java/org/microbean/event/Events.java
index 3b313d5..eb1f9b9 100644
--- a/src/main/java/org/microbean/event/Events.java
+++ b/src/main/java/org/microbean/event/Events.java
@@ -23,15 +23,13 @@
import org.microbean.attributes.Attributes;
+import org.microbean.bean.Qualifiers;
import org.microbean.bean.ReferencesSelector;
import org.microbean.construct.Domain;
import static java.util.Objects.requireNonNull;
-import static org.microbean.assign.Qualifiers.anyQualifiers;
-import static org.microbean.assign.Qualifiers.qualifiers;
-
/**
* A utility class for working with events.
*
@@ -39,9 +37,11 @@
*/
// Deliberately not final.
public class Events {
-
+
private final EventTypes eventTypes;
+ private final Qualifiers qualifiers;
+
private final EventTypeMatcher eventTypeMatcher;
private final EventQualifiersMatcher eventQualifiersMatcher;
@@ -53,6 +53,8 @@ public class Events {
*
* @param eventTypes an {@link EventTypes}; must not be {@code null}
*
+ * @param qualifiers a {@link Qualifiers}; must not be {@code null}
+ *
* @param eventTypeMatcher an {@link EventTypeMatcher}; must not be {@code null}
*
* @param eventQualifiersMatcher an {@link EventQualifiersMatcher}; must not be {@code null}
@@ -60,10 +62,12 @@ public class Events {
* @exception NullPointerException if any argument is {@code null}
*/
public Events(final EventTypes eventTypes,
+ final Qualifiers qualifiers,
final EventTypeMatcher eventTypeMatcher,
final EventQualifiersMatcher eventQualifiersMatcher) {
super();
this.eventTypes = requireNonNull(eventTypes, "eventTypes");
+ this.qualifiers = requireNonNull(qualifiers, "qualifiers");
this.eventTypeMatcher = requireNonNull(eventTypeMatcher, "eventTypeMatcher");
this.eventQualifiersMatcher = requireNonNull(eventQualifiersMatcher, "eventQualifiersMatcher");
final Domain d = eventTypes.domain();
@@ -71,7 +75,7 @@ public Events(final EventTypes eventTypes,
new AttributedType(d.declaredType(d.typeElement(EventListener.class.getCanonicalName()),
d.wildcardType(),
d.wildcardType(null, d.javaLangObjectType())),
- anyQualifiers());
+ this.qualifiers.anyQualifiers());
}
/**
@@ -103,14 +107,14 @@ public final void fire(final TypeMirror typeArgumentSource,
final Object event,
final ReferencesSelector rs) {
final EventTypeList eventTypes = this.eventTypes.eventTypes(typeArgumentSource, event);
- final List eventQualifiers = qualifiers(attributes);
+ final List eventQualifiers = this.qualifiers.qualifiers(attributes);
final Iterator extends EventListener, ? super Object>> i =
rs.>references(this.eventListenerAttributedType).iterator();
while (i.hasNext()) {
final EventListener, ? super Object> el = i.next();
try {
final AttributedType slot = el.attributedType();
- if (slot == null || !this.eventQualifiersMatcher.test(qualifiers(slot.attributes()), eventQualifiers)) {
+ if (slot == null || !this.eventQualifiersMatcher.test(this.qualifiers.qualifiers(slot.attributes()), eventQualifiers)) {
continue;
}
final TypeMirror slotType = slot.type();
diff --git a/src/test/java/org/microbean/event/TestJDKFacts.java b/src/test/java/org/microbean/event/TestJDKFacts.java
index 4337014..6c83e2c 100644
--- a/src/test/java/org/microbean/event/TestJDKFacts.java
+++ b/src/test/java/org/microbean/event/TestJDKFacts.java
@@ -22,9 +22,6 @@
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertTrue;
diff --git a/src/test/java/org/microbean/event/TestLanguageModelFacts.java b/src/test/java/org/microbean/event/TestLanguageModelFacts.java
index d755e8e..43b5b68 100644
--- a/src/test/java/org/microbean/event/TestLanguageModelFacts.java
+++ b/src/test/java/org/microbean/event/TestLanguageModelFacts.java
@@ -16,11 +16,13 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.AnnotationValue;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.TypeParameterElement;
@@ -41,14 +43,14 @@
import static javax.lang.model.element.ElementKind.CLASS;
import static javax.lang.model.element.ElementKind.METHOD;
+import static javax.lang.model.element.Modifier.ABSTRACT;
+import static javax.lang.model.element.Modifier.PUBLIC;
+
import static javax.lang.model.type.TypeKind.DECLARED;
-import static javax.lang.model.type.TypeKind.TYPEVAR;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNotSame;
-import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -73,12 +75,19 @@ final void testAnnotationMirrorEnclosingAndEnclosedElements() {
final ExecutableElement element = m.keySet().iterator().next();
final TypeElement deprecatedElement = (TypeElement)element.getEnclosingElement();
assertSame(ANNOTATION_TYPE, deprecatedElement.getKind());
+ Set modifiers = deprecatedElement.getModifiers();
+ assertEquals(2, modifiers.size());
+ assertTrue(modifiers.contains(PUBLIC));
+ assertTrue(modifiers.contains(ABSTRACT));
final List extends Element> enclosedElements = deprecatedElement.getEnclosedElements();
assertEquals(2, enclosedElements.size());
- enclosedElements.forEach(ee -> assertSame(METHOD, ee.getKind()));
- System.out.println("*** modifiers: " + deprecatedElement.getModifiers());
- enclosedElements.forEach(ee -> System.out.println(" modifiers for " + ee + ": " + ee.getModifiers()));
-
+ for (final Element ee : enclosedElements) {
+ assertSame(METHOD, ee.getKind());
+ modifiers = ee.getModifiers();
+ assertEquals(2, modifiers.size());
+ assertTrue(modifiers.contains(PUBLIC));
+ assertTrue(modifiers.contains(ABSTRACT));
+ }
}
@Test