From fab054831c4b04c0485106a67a9edfc052223b4e Mon Sep 17 00:00:00 2001 From: Matej Novotny Date: Wed, 25 Oct 2017 11:50:58 +0200 Subject: [PATCH] WELD-2427 Introduce WeldInstance.select() and WeldEvent.select() with Type as parameter. --- .../java/org/jboss/weld/events/WeldEvent.java | 46 +++++++++++++++++++ .../org/jboss/weld/inject/WeldInstance.java | 18 ++++++++ 2 files changed, 64 insertions(+) create mode 100644 weld/src/main/java/org/jboss/weld/events/WeldEvent.java diff --git a/weld/src/main/java/org/jboss/weld/events/WeldEvent.java b/weld/src/main/java/org/jboss/weld/events/WeldEvent.java new file mode 100644 index 00000000..4866a5af --- /dev/null +++ b/weld/src/main/java/org/jboss/weld/events/WeldEvent.java @@ -0,0 +1,46 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2017, Red Hat, Inc., and individual contributors + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * 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.jboss.weld.events; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; + +import javax.enterprise.event.Event; + +/** + * Enriched version of {@link javax.enterprise.event.Event}. + * + * @author Matej Novotny + */ +public interface WeldEvent extends Event { + + /** + *

+ * Obtains a child {@code Event} for the given required type and additional required qualifiers. + * Must be invoked on {@code Event} where T is {@link java.lang.Object}. + *

+ * + * @param the required type + * @param type a {@link java.lang.reflect.Type} representing the required type + * @param qualifiers the additional required qualifiers + * @return the child Event + * @throws IllegalArgumentException if passed two instances of the same non repeating qualifier type, or an instance of an + * annotation that is not a qualifier type + * @throws IllegalStateException if invoked on {@code Event} where T is of any other type than {@link java.lang.Object} + */ + WeldEvent select(Type type, Annotation... qualifiers); +} \ No newline at end of file diff --git a/weld/src/main/java/org/jboss/weld/inject/WeldInstance.java b/weld/src/main/java/org/jboss/weld/inject/WeldInstance.java index 1c3aa072..1ae78e84 100644 --- a/weld/src/main/java/org/jboss/weld/inject/WeldInstance.java +++ b/weld/src/main/java/org/jboss/weld/inject/WeldInstance.java @@ -17,6 +17,7 @@ package org.jboss.weld.inject; import java.lang.annotation.Annotation; +import java.lang.reflect.Type; import java.util.Comparator; import javax.enterprise.context.Dependent; @@ -110,6 +111,23 @@ public interface WeldInstance extends Instance { @Override WeldInstance select(TypeLiteral subtype, Annotation... qualifiers); + /** + *

+ * Obtains a child {@code Instance} for the given required type and additional required qualifiers. + * Must be invoked on {@code Instance} where T is {@link java.lang.Object}. + *

+ * + * @param the required type + * @param subtype a {@link java.lang.reflect.Type} representing the required type + * @param qualifiers the additional required qualifiers + * @return the child Instance + * @throws IllegalArgumentException if passed two instances of the same non repeating qualifier type, or an instance of an + * annotation that is not a qualifier type + * @throws IllegalStateException if the container is already shutdown + * @throws IllegalStateException if invoked on {@code Instance} where T is of any other type than {@link java.lang.Object} + */ + WeldInstance select(Type subtype, Annotation... qualifiers); + /** * This interface represents a contextual reference handler. *