001/* 002 * JKNIV, utils - Helper utilities for jdk code. 003 * 004 * Copyright (C) 2017, the original author or authors. 005 * 006 * This library is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 2.1 of the License. 010 * 011 * This library is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with this library; if not, write to the Free Software Foundation, Inc., 018 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 019 */ 020package net.sf.jkniv.reflect; 021 022import net.sf.jkniv.reflect.beans.ObjectProxy; 023/** 024 * Factory to create facility object for inject data at object via methods properties, fields attributes or constructors. 025 * 026 * @author Alisson Gomes 027 * 028 */ 029public class InjectableFactory 030{ 031 /** 032 * Build a new instance of injectable data for objects using properties methods (not field attributes) 033 * @param instance object to reflect 034 * @param <T> Type of instance object 035 * @return implementation that inject values using reflection from properties methods 036 */ 037 public static <T> Injectable<T> of(T instance) 038 { 039 return new MethodInjection<T>(instance); 040 } 041 042 /** 043 * Build a new instance of injectable data for objects using properties methods (not field attributes) 044 * @param proxy for instance object to reflect 045 * @param <T> Type of instance object 046 * @return implementation that inject values using reflection from properties methods 047 */ 048 public static <T> Injectable<T> of(ObjectProxy<T> proxy) 049 { 050 return new MethodInjection<T>(proxy); 051 } 052}