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