| /******************************************************************************* |
| * Copyright (c) 2000, 2007 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 |
| * yyyymmdd bug Email and other contact information |
| * -------- -------- ----------------------------------------------------------- |
| * 20070410 180952 makandre@ca.ibm.com - Andrew Mak, Sample JSP generator chokes on interfaces and abstract classes |
| * 20071110 209087 gilberta@ca.ibm.com - Gilbert Andrews |
| *******************************************************************************/ |
| |
| 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.AttributeVisitor; |
| import org.eclipse.jst.ws.internal.consumption.codegen.bean.FieldVisitor; |
| import org.eclipse.jst.ws.internal.consumption.datamodel.beanmodel.DataType; |
| import org.eclipse.jst.ws.internal.consumption.datamodel.beanmodel.TypeElement; |
| import org.eclipse.jst.ws.internal.consumption.datamodel.beanmodel.TypeFactory; |
| import org.eclipse.wst.ws.internal.datamodel.Element; |
| |
| /** |
| * Objects of this class represent a ResultFileHelp2generator. |
| * */ |
| public class ResultFileTypeGenerator extends ResultFileHelp2Generator |
| { |
| |
| // Copyright |
| public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002."; |
| |
| |
| |
| public String fTypeIdName; |
| |
| /** |
| * Constructor. |
| * @param buffer StringBuffer object that this code generator writes to |
| */ |
| public ResultFileTypeGenerator (StringBuffer buffer) |
| { |
| super(buffer); |
| } |
| |
| /** |
| * Visit Method generates code for this Visitor |
| * @param Parameter parameter code will be generated |
| */ |
| public IStatus visit (Object object) |
| { |
| Element typeElement = (Element)object; |
| TypeElement type = (TypeElement)typeElement; |
| // right now we only have simple to worry about |
| if(type.isSimple() || TypeFactory.recognizedBean(type.getName())){ |
| // create the type that represents the simple type name |
| DataType dataType = TypeFactory.createType(type.getName(),type.getOwningElement().getMUID()); |
| |
| String nodeName = getTypeOwnerId()+ "Temp"; |
| if(!type.isPrimitive()){ |
| |
| fbuffer.append(Generator.DOUBLE_TAB + Generator.TAB + type.getName() + " " + nodeName + " = null;" + StringUtils.NEWLINE); |
| fbuffer.append(Generator.DOUBLE_TAB + "if(!" + getTypeOwnerId() + ".equals(\"\")){" + StringUtils.NEWLINE); |
| fbuffer.append(dataType.stringConversion("",nodeName,getTypeOwnerId())); |
| fbuffer.append(Generator.DOUBLE_TAB + "}" + StringUtils.NEWLINE); |
| } |
| else |
| fbuffer.append(dataType.stringConversion(type.getName(),nodeName,getTypeOwnerId())); |
| |
| putResidentVector(nodeName); |
| } |
| |
| else { |
| //must be complex |
| String typeName = typeElement.getName(); |
| fTypeIdName = idName(typeName); |
| |
| if (!Boolean.TRUE.equals(typeElement.getPropertyAsObject(TypeElement.NON_INSTANTIABLE))) { |
| |
| AttributeVisitor attributeVisitor = new AttributeVisitor(); |
| ResultFileAttributeGenerator resultFileAttributeGenerator = new ResultFileAttributeGenerator(fbuffer); |
| resultFileAttributeGenerator.setNumberFactory(getNumberFactory()); |
| attributeVisitor.run(typeElement,resultFileAttributeGenerator); |
| setNumberFactory(resultFileAttributeGenerator.getNumberFactory()); |
| fbuffer = resultFileAttributeGenerator.getStringBuffer(); |
| |
| FieldVisitor fieldVisitor = new FieldVisitor(); |
| ResultFileAttributeGenerator resultFileAttributeGenerator2 = new ResultFileAttributeGenerator(fbuffer); |
| resultFileAttributeGenerator2.setNumberFactory(getNumberFactory()); |
| fieldVisitor.run(typeElement,resultFileAttributeGenerator2); |
| setNumberFactory(resultFileAttributeGenerator2.getNumberFactory()); |
| fbuffer = resultFileAttributeGenerator2.getStringBuffer(); |
| |
| |
| fbuffer.append(Generator.DOUBLE_TAB + "%>" + StringUtils.NEWLINE); |
| fbuffer.append(Generator.DOUBLE_TAB + "<jsp:useBean id=\"" + fTypeIdName + "\" scope=\"session\" class=\"" + typeName + "\" />" + StringUtils.NEWLINE); |
| fbuffer.append(Generator.DOUBLE_TAB + "<%" + StringUtils.NEWLINE); |
| |
| Enumeration e = resultFileAttributeGenerator.getResidentVector().elements(); |
| while(e.hasMoreElements()){ |
| fbuffer.append(Generator.DOUBLE_TAB + fTypeIdName + "." + e.nextElement() + StringUtils.NEWLINE); |
| } |
| |
| Enumeration e2 = resultFileAttributeGenerator2.getResidentVector().elements(); |
| while(e2.hasMoreElements()){ |
| fbuffer.append(Generator.DOUBLE_TAB + fTypeIdName + "." + e2.nextElement() + StringUtils.NEWLINE); |
| } |
| } |
| else |
| fbuffer.append(Generator.DOUBLE_TAB + typeName + " " + fTypeIdName + " = null;"+ StringUtils.NEWLINE); |
| |
| putResidentVector(fTypeIdName); |
| //end of changes |
| |
| } |
| |
| return Status.OK_STATUS; |
| } |
| |
| |
| |
| } |