001/***************************************************************************** 002 * Copyright (c) PicoContainer Organization. All rights reserved. * 003 * ------------------------------------------------------------------------- * 004 * The software in this package is published under the terms of the BSD * 005 * style license a copy of which has been included with this distribution in * 006 * the LICENSE.txt file. * 007 * * 008 *****************************************************************************/ 009package org.picocontainer.injectors; 010 011import org.picocontainer.NameBinding; 012 013import java.lang.reflect.AccessibleObject; 014import java.lang.reflect.Constructor; 015import java.lang.reflect.Method; 016import java.lang.reflect.Member; 017 018import com.thoughtworks.paranamer.CachingParanamer; 019import com.thoughtworks.paranamer.Paranamer; 020 021public class ParameterNameBinding implements NameBinding { 022 private final AccessibleObject member; 023 private final int index; 024 private final Paranamer paranamer; 025 026 private String name; 027 028 public ParameterNameBinding(Paranamer paranamer, AccessibleObject member, int index) { 029 this.member = member; 030 this.paranamer = paranamer; 031 this.index = index; 032 } 033 034 public String getName() { 035 if (name != null) { 036 return name; 037 } 038 String[] strings = paranamer.lookupParameterNames(member, false); 039 name = strings.length == 0 ? "" : strings[index]; 040 return name; 041 } 042} 043