/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.parser;
import gw.lang.javadoc.IDocRef;
import gw.lang.javadoc.IParamNode;
import gw.lang.reflect.BaseFeatureInfo;
import gw.lang.reflect.IAnnotationInfo;
import gw.lang.reflect.IFeatureInfo;
import gw.lang.reflect.IParameterInfo;
import gw.lang.reflect.IType;
import gw.lang.reflect.java.IJavaParameterDescriptor;
import java.util.Collections;
import java.util.List;
/**
*/
public class JavaMethodParamInfo extends BaseFeatureInfo implements IParameterInfo
{
private IJavaParameterDescriptor _pd;
private IDocRef<IParamNode> _docs;
/**
* @param container Typically this will be the containing IMethodInfo
*/
public JavaMethodParamInfo( IFeatureInfo container, IJavaParameterDescriptor pd, IDocRef<IParamNode> docs )
{
super( container );
_pd = pd;
_docs = docs;
}
@Override
public String getName()
{
return hasValidDocs() ? getDocRef().getName() : _pd.getName();
}
@Override
public List<IAnnotationInfo> getDeclaredAnnotations()
{
return Collections.emptyList();
}
@Override
public String getDisplayName()
{
return hasValidDocs() ? getDocRef().getDescription() : _pd.getDisplayName();
}
public String getShortDescription()
{
return hasValidDocs() ? getDocRef().getDescription() : _pd.getShortDescription();
}
@Override
public String getDescription()
{
return hasValidDocs() ? getDocRef().getDescription() : _pd.getShortDescription();
}
@Override
public IType getFeatureType()
{
return _pd.getFeatureType();
}
@Override
public boolean isHidden()
{
return _pd.isHidden();
}
@Override
public boolean isStatic()
{
return false;
}
private IParamNode getDocRef()
{
return _docs.get();
}
private boolean hasValidDocs()
{
return _docs != null && getDocRef() != null;
}
}