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;
24 * Class encapsulating bean injection into a specific non-contextual object of a
27 * @author Erik Brakkee
29 public class CdiInjector implements Injector {
31 private InjectionTarget target;
32 private CreationalContext ctx;
35 * Constructs the injector.
40 * Class to analyse for injection.
42 public CdiInjector(BeanManager aMgr, Class<?> aClass) {
44 AnnotatedType<?> type = aMgr.createAnnotatedType(aClass);
45 target = aMgr.createInjectionTarget(type);
46 ctx = aMgr.createCreationalContext(null);
52 * @see org.wamblee.cdi.Injector#inject(java.lang.Object)
54 public void inject(Object aComponent) {
55 if (aComponent != null) {
56 if (!clazz.isInstance(aComponent)) {
57 throw new RuntimeException("Object '" + aComponent +
58 "' is of type " + aComponent.getClass().getName() +
59 " but expected " + clazz.getName());
61 target.inject(aComponent, ctx);