Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
  * regarding copyright ownership.  The ASF licenses this file
  * to you 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.apache.tuscany.sca.implementation.java.injection;
Injects a value created by an org.apache.tuscany.sca.core.factory.ObjectFactory on a given field

Version:
$Rev: 986676 $ $Date: 2010-08-18 16:52:28 +0300 (Wed, 18 Aug 2010) $
public class FieldInjector<T> implements Injector<T> {
    private final Field field;
    private final ObjectFactory<?> objectFactory;

    
Create an injector and have it use the given ObjectFactory to inject a value on the instance using the reflected Field
    public FieldInjector(Field pFieldObjectFactory<?> objectFactory) {
         = pField;
        // Allow privileged access to set accessibility. Requires ReflectPermission
        // in security policy.
        AccessController.doPrivileged(new PrivilegedAction<Object>() {
            public Object run() {
                .setAccessible(true); // ignore Java accessibility
                return null;
            }
        });
        
        this. = objectFactory;
    }

    
Inject a new value on the given instance
    public void inject(T instancethrows ObjectCreationException {
    	inject(instance.getInstance());
    }
    
    public void inject(T instanceObject value) {
        try {
            .set(instancevalue);
        } catch (IllegalAccessException e) {
            throw new ObjectCreationException("Field is not accessible [" +  + "]"e);
        }
    }
    
    public Class<?> getType() {
    	return .getType();
    }
    
	public Type getGenericType() {
	}
	public void injectNull(T instancethrows ObjectCreationException {
		inject(instancenull);		
	}
New to GrepCode? Check out our FAQ X