Skip to main content
summaryrefslogtreecommitdiffstats
blob: a1677f788a8c063c0ba0642d6d593e1244992b5d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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);    
    
  }



}

Back to the top