diff options
Diffstat (limited to 'core/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileHelp1Generator.java')
-rw-r--r-- | core/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileHelp1Generator.java | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/core/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileHelp1Generator.java b/core/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileHelp1Generator.java new file mode 100644 index 000000000..a1677f788 --- /dev/null +++ b/core/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileHelp1Generator.java @@ -0,0 +1,148 @@ +/******************************************************************************* + * Copyright (c) 2003, 2005 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.jst.ws.internal.consumption.sampleapp.codegen; + +import java.util.Enumeration; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jst.ws.internal.common.StringUtils; +import org.eclipse.jst.ws.internal.consumption.codegen.Generator; +import org.eclipse.jst.ws.internal.consumption.codegen.bean.ParameterVisitor; +import org.eclipse.jst.ws.internal.consumption.codegen.bean.ReturnParameterVisitor; +import org.eclipse.jst.ws.internal.consumption.datamodel.beanmodel.DataType; +import org.eclipse.jst.ws.internal.consumption.datamodel.beanmodel.MethodElement; +import org.eclipse.jst.ws.internal.consumption.datamodel.beanmodel.TypeFactory; +import org.eclipse.wst.ws.internal.datamodel.Element; + + +/** +* Objects of this class represent a ResultFilegenerator. +* */ +public class ResultFileHelp1Generator extends ResultFileGenerator +{ + + // Copyright + public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002."; + + + public static final int INITIAL_STATE = 1; + public static final int FINAL_STATE = 2; + public static final String MTEMP = "mtemp"; + public static String BEAN = "Proxy"; + + /** + * Constructor. + * @param buffer StringBuffer object that this code generator writes to + */ + public ResultFileHelp1Generator (StringBuffer buffer) + { + super(buffer); + } + + /** + * Visit Method generates code for this Visitor + * @param method method code will be generated for + */ + public IStatus visit (Object object) + { + Element methodElement = (Element)object; + + + MethodElement method = (MethodElement)methodElement; + if (method.getMethodOmmission()) return Status.OK_STATUS; + + fbuffer.append("case " + method.getNumberID()+ ":" + StringUtils.NEWLINE); + visitHelper(method); + + fbuffer.append("break;" + StringUtils.NEWLINE); + + return Status.OK_STATUS; + } + /** + * Helps out the visitor + * @param method method code will be generated for + */ + public void visitHelper (Element methodElement) + { + + fbuffer.append(Generator.DOUBLE_TAB + "gotMethod = true;" + StringUtils.NEWLINE); + + MethodElement method = (MethodElement)methodElement; + // go to the next generator + ResultFileHelp2Generator resultFileHelp2Generator = new ResultFileHelp2Generator(fbuffer); + resultFileHelp2Generator.setNumberFactory(getNumberFactory()); + ParameterVisitor parameterVisitor = new ParameterVisitor(); + parameterVisitor.run(methodElement,resultFileHelp2Generator); + fbuffer = resultFileHelp2Generator.getStringBuffer(); + setNumberFactory(resultFileHelp2Generator.getNumberFactory()); + // we must now grab the state data from the resident vector + setResidentVector(resultFileHelp2Generator.getResidentVector()); + + + //there is no return type if void occurs + + + if (method.getReturnParameterElement().getTypeElement().getName().equals("void")) + fbuffer.append(Generator.DOUBLE_TAB + getSessionBeanId() + "." +method.getName() + "("); + + else{ + fbuffer.append(Generator.DOUBLE_TAB + method.getReturnParameterElement().getTypeElement().getName() + Generator.SPACE + method.getMUID() + MTEMP + Generator.SPACE); + fbuffer.append("=" + Generator.SPACE + getSessionBeanId() + "." + method.getName() + "("); + } + + Enumeration e = fResidentVector.elements(); + while (e.hasMoreElements()){ + fbuffer.append((String)e.nextElement()); + if (e.hasMoreElements()) + fbuffer.append(","); + } + fbuffer.append(");" + StringUtils.NEWLINE); + if (!method.getReturnParameterElement().getTypeElement().getName().equals("void") && !method.getReturnParameterElement().getTypeElement().isPrimitive()){ + //in case our result is null + fbuffer.append("if(" + method.getMUID() + "mtemp == null){" + StringUtils.NEWLINE); + fbuffer.append("%>" + StringUtils.NEWLINE); + fbuffer.append("<%=" + method.getMUID() + "mtemp %>" + StringUtils.NEWLINE); + fbuffer.append("<%" + StringUtils.NEWLINE); + fbuffer.append("}else{" + StringUtils.NEWLINE); + } + + //now lets display the return bean + // if it is simple we dont need to use the generator + + if (!method.getReturnParameterElement().getTypeElement().getName().equals("void")){ + if (method.getReturnParameterElement().getTypeElement().isSimple() + || TypeFactory.recognizedBean(method.getReturnParameterElement().getTypeElement().getName()) + || TypeFactory.isStateLessBean(method.getReturnParameterElement().getTypeElement().getTypeName()) + || TypeFactory.isRecognizedReturnType(method.getReturnParameterElement().getTypeElement().getTypeName())){ + DataType dataType = TypeFactory.createType(method.getReturnParameterElement().getTypeElement().getTypeName(),method.getReturnParameterElement().getMUID()); + fbuffer.append(dataType.TypeConversion(method.getMUID() + MTEMP)); + } + else{ + fbuffer.append("%>" + StringUtils.NEWLINE); + InputFileHelp2Generator inputFileHelp2Generator = new InputFileHelp2Generator(fbuffer); + inputFileHelp2Generator.setInstanceName(method.getMUID() + MTEMP); + inputFileHelp2Generator.setReturnParam(true); + ReturnParameterVisitor returnParameterVisitor = new ReturnParameterVisitor(); + returnParameterVisitor.run(method,inputFileHelp2Generator); + fbuffer = inputFileHelp2Generator.getStringBuffer(); + fbuffer.append("<%" + StringUtils.NEWLINE); + + } + } + + if (!method.getReturnParameterElement().getTypeElement().getName().equals("void") && !method.getReturnParameterElement().getTypeElement().isPrimitive()) fbuffer.append("}" + StringUtils.NEWLINE); + + } + + + +} |