/*******************************************************************************
* Copyright © 2005, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.gen.egl.templates;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Type;
import javax.jws.WebParam;
import javax.jws.WebParam.Mode;
import org.eclipse.edt.gen.egl.Context;
import org.eclipse.edt.mof.egl.FunctionMember;
import org.eclipse.edt.mof.egl.FunctionParameter;
import org.eclipse.edt.mof.egl.ParameterKind;
public class AccessibleObjectTemplate extends EglTemplate{
private static final String ARG = "arg";
public void genName(AccessibleObject obj, Context ctx, FunctionMember functionMember, FunctionParameter parameter, Integer argIdx) {
WebParam webParam = (WebParam)ctx.invoke(getAnnotation, (Object)obj, ctx, argIdx, WebParam.class);
if(webParam != null &&
webParam.name() != null &&
webParam.name().length() > 0){
parameter.setName(CommonUtilities.getValidEGLName(webParam.name()));
}
else{
parameter.setName(ARG + String.valueOf(argIdx));
}
}
public void genParameterKind(AccessibleObject obj, Context ctx, FunctionMember functionMember, FunctionParameter parameter, Integer argIdx) {
WebParam webParam = (WebParam)ctx.invoke(getAnnotation, (Object)obj, ctx, argIdx, WebParam.class);
if(webParam != null){
if(Mode.OUT.equals(webParam.mode())){
parameter.setParameterKind(ParameterKind.PARM_OUT);
}
else if(Mode.INOUT.equals(webParam.mode())){
parameter.setParameterKind(ParameterKind.PARM_INOUT);
}
else{
parameter.setParameterKind(ParameterKind.PARM_IN);
}
}
else{
parameter.setParameterKind(ParameterKind.PARM_IN);
}
}
public void genFunctionParameter(AccessibleObject obj, Context ctx, FunctionMember functionMember, Integer argIdx, Type type) {
FunctionParameter parameter = ctx.getFactory().createFunctionParameter();
parameter.setContainer(functionMember);
functionMember.addParameter(parameter);
ctx.invoke(genName, (Object)obj, ctx, functionMember, parameter, argIdx);
ctx.invoke(genType, (Object)type, ctx, parameter);
ctx.invoke(genParameterKind, (Object)obj, ctx, functionMember, parameter, argIdx);
}
}