2 * Copyright 2005-2010 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.wamblee.cdi;
18 import javax.enterprise.context.spi.CreationalContext;
19 import javax.enterprise.inject.spi.AnnotatedType;
20 import javax.enterprise.inject.spi.BeanManager;
21 import javax.enterprise.inject.spi.InjectionTarget;
23 import org.wamblee.inject.Injector;
26 * Class encapsulating bean injection into a specific non-contextual object of a
29 * @author Erik Brakkee
31 public class CdiInjector implements Injector {
33 private InjectionTarget target;
34 private CreationalContext ctx;
37 * Constructs the injector.
42 * Class to analyse for injection.
44 public CdiInjector(BeanManager aMgr, Class<?> aClass) {
46 AnnotatedType<?> type = aMgr.createAnnotatedType(aClass);
47 target = aMgr.createInjectionTarget(type);
48 ctx = aMgr.createCreationalContext(null);
54 * @see org.wamblee.cdi.Injector#inject(java.lang.Object)
56 public void inject(Object aComponent) {
57 if (aComponent != null) {
58 if (!clazz.isInstance(aComponent)) {
59 throw new IllegalArgumentException("Object '" + aComponent +
60 "' is of type " + aComponent.getClass().getName() +
61 " but expected " + clazz.getName());
63 target.inject(aComponent, ctx);