Skip to content

Commit

Permalink
WELD-2427 Introduce WeldInstance.select() and WeldEvent.select() with…
Browse files Browse the repository at this point in the history
… Type as parameter.
  • Loading branch information
manovotn authored and mkouba committed Nov 1, 2017
1 parent cf5dc4a commit fab0548
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
46 changes: 46 additions & 0 deletions 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 <a href="mailto:manovotn@redhat.com">Matej Novotny</a>
*/
public interface WeldEvent<T> extends Event<T> {

/**
* <p>
* Obtains a child {@code Event} for the given required type and additional required qualifiers.
* Must be invoked on {@code Event<T>} where T is {@link java.lang.Object}.
* </p>
*
* @param <X> the required type
* @param type a {@link java.lang.reflect.Type} representing the required type
* @param qualifiers the additional required qualifiers
* @return the child <tt>Event</tt>
* @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<T>} where T is of any other type than {@link java.lang.Object}
*/
<X> WeldEvent<X> select(Type type, Annotation... qualifiers);
}
18 changes: 18 additions & 0 deletions weld/src/main/java/org/jboss/weld/inject/WeldInstance.java
Expand Up @@ -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;
Expand Down Expand Up @@ -110,6 +111,23 @@ public interface WeldInstance<T> extends Instance<T> {
@Override
<U extends T> WeldInstance<U> select(TypeLiteral<U> subtype, Annotation... qualifiers);

/**
* <p>
* Obtains a child {@code Instance} for the given required type and additional required qualifiers.
* Must be invoked on {@code Instance<T>} where T is {@link java.lang.Object}.
* </p>
*
* @param <X> the required type
* @param subtype a {@link java.lang.reflect.Type} representing the required type
* @param qualifiers the additional required qualifiers
* @return the child <tt>Instance</tt>
* @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<T>} where T is of any other type than {@link java.lang.Object}
*/
<X> WeldInstance<X> select(Type subtype, Annotation... qualifiers);

/**
* This interface represents a contextual reference handler.
* <p>
Expand Down

0 comments on commit fab0548

Please sign in to comment.