/*
 * JBoss, Home of Professional Open Source
 * Copyright 2010, 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.injection.spi;

import org.jboss.weld.bootstrap.api.Service;

/**
 * Provides callbacks to the container when Weld performs injection on an
 * InjectionTarget, managed bean or session bean
 * 
 * This service may be used to provide EE-style injection.
 * 
 * The container <b>must</b> respect any modifications made to type via the
 * container lifecycle events. Container lifecycle events may alter the
 * annotations placed on the type, it's members, and the formal parameters of
 * it's members. {@link InjectionContext#getAnnotatedType()} gives access to the
 * modified state of the type.
 * 
 * {@link InjectionServices} is a per-BeanDeploymentArchive service.
 * 
 * @author Pete Muir
 * 
 */
public interface InjectionServices extends Service
{

   /**
    * Callback for injection.
    * 
    * Call {@link InjectionContext#proceed()} to cause CDI-style injection to
    * occur.
    * 
    * @param injectionContext
    */
   public <T> void aroundInject(InjectionContext<T> injectionContext);

}

@@ -587,11 +587,9 @@
 SIS,
-  
 %0A
+
  * W
@@ -808,16 +808,124 @@
 n.spi;%0A%0A
+import javax.enterprise.inject.spi.DefinitionException;%0Aimport javax.enterprise.inject.spi.InjectionPoint;%0A%0A
 import o
@@ -1091,17 +1091,16 @@
  bean%0A *
- 
 %0A * This
@@ -1149,25 +1149,24 @@
 njection.%0A *
- 
 %0A * The cont
@@ -1490,25 +1490,24 @@
 the type.%0A *
- 
 %0A * %7B@link I
@@ -1566,17 +1566,16 @@
 vice.%0A *
- 
 %0A * @aut
@@ -1591,16 +1591,42 @@
 Muir%0A * 
+@author Jozef Hartinger%0A *
 %0A */%0Apub
@@ -1714,25 +1714,24 @@
 ction.%0A    *
- 
 %0A    * Call 
@@ -1815,17 +1815,16 @@
 r.%0A    *
- 
 %0A    * @
@@ -1853,16 +1853,16 @@
 %0A    */%0A
-
    publi
@@ -1925,10 +1925,785 @@
 text);%0A%0A
+    /**%0A     * For each discovered%0A     * %3Cul%3E%0A     * %3Cli%3E@Resource injection point%3C/li%3E%0A     * %3Cli%3E@PersistenceContext injection point%3C/li%3E%0A     * %3Cli%3E@PersistenceUnit injection point%3C/li%3E%0A     * %3Cli%3E@EJB injection point%3C/li%3E%0A     * %3Cli%3E@WebServiceRef injection point%3C/li%3E%0A     * %3C/ul%3E%0A     *%0A     * Weld calls this method to validate the injection point type. The implementation is responsible for validation of the%0A     * injection point type. If the injection point type differs from the type of the matching object in the Java EE component%0A     * environment, the implementation throws %7B@link DefinitionException%7D.%0A     *%0A     * @param injectionPoint injection point to be validated%0A     */%0A   public void validateResourceInjectionPoint(InjectionPoint injectionPoint);%0A%0A
 %7D%0A

Add support for resource injection point validation if InjectionServices are used for injecting resources