/******************************************************************************* * Copyright (c) 2000, 2004 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.datamodel.beanmodel; import org.eclipse.jem.java.Field; import org.eclipse.jem.java.JavaClass; import org.eclipse.jem.java.JavaHelpers; import org.eclipse.jem.java.JavaParameter; import org.eclipse.jem.java.Method; import org.eclipse.jst.ws.internal.consumption.sampleapp.common.SamplePropertyDescriptor; import org.eclipse.wst.ws.internal.datamodel.Element; import org.eclipse.wst.ws.internal.datamodel.Model; /** * TypeFactory * Creation date: (4/10/2001 12:41:48 PM) * @author: Gilbert Andrews */ public class BeanModelElementsFactory { // Copyright public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002."; public static final String RETURN_PARAM_NAME="returnp"; private BeanModelElementsFactory(){} public static Element getBeanModelElement(Object object) { return BeanModelElementsFactory.getBeanModelElement(object,null,null); } public static Element getBeanModelElement(Object object,Element parentElement) { return BeanModelElementsFactory.getBeanModelElement(object,parentElement,null); } /* * Take in an object and return an element depending on what * type we are dealing with from the javamof **/ public static Element getBeanModelElement(Object object,Element parentElement, Model model) { Element returnElement = null; if (object instanceof JavaClass){ JavaClass javaClass = (JavaClass)object; String javaName = javaClass.getJavaName(); if (!javaClass.isArray()){ if(parentElement == null && model ==null) returnElement = new BeanElement(javaName); else if(parentElement == null && model !=null) returnElement = new BeanElement(javaName,model,false); else{ if(parentElement instanceof ParameterElement){ ParameterElement tempElement = (ParameterElement)parentElement; returnElement = new BeanElement(tempElement,javaName); } else if(parentElement instanceof AttributeElement){ AttributeElement tempElement = (AttributeElement)parentElement; returnElement = new BeanElement(tempElement,javaName); } else if(parentElement instanceof FieldElement){ FieldElement tempElement = (FieldElement)parentElement; returnElement = new BeanElement(tempElement,javaName); } else if(parentElement instanceof MethodElement){ returnElement = new ParameterElement((MethodElement)parentElement,RETURN_PARAM_NAME,MethodElement.REL_RETURN_PARAMETERS,true); } } } else{ if(parentElement == null && model ==null) returnElement = new ArrayElement(javaName); else if(parentElement == null && model !=null) returnElement = new ArrayElement(javaName,model,false); else{ if(parentElement instanceof ParameterElement){ ParameterElement tempElement = (ParameterElement)parentElement; returnElement = new ArrayElement(tempElement,javaName); } else if(parentElement instanceof AttributeElement){ AttributeElement tempElement = (AttributeElement)parentElement; returnElement = new ArrayElement(tempElement,javaName); } else if(parentElement instanceof FieldElement){ FieldElement tempElement = (FieldElement)parentElement; returnElement = new ArrayElement(tempElement,javaName); } else if(parentElement instanceof MethodElement){ returnElement = new ParameterElement((MethodElement)parentElement,RETURN_PARAM_NAME,MethodElement.REL_RETURN_PARAMETERS,true); } } } } else if(object instanceof SamplePropertyDescriptor){ SamplePropertyDescriptor pd = (SamplePropertyDescriptor)object; returnElement = new AttributeElement((BeanElement)parentElement,pd.getName()); } else if(object instanceof Field){ Field field = (Field)object; returnElement = new FieldElement((BeanElement)parentElement,field.getName()); } else if (object instanceof Method){ Method method = (Method)object; returnElement = new MethodElement((BeanElement)parentElement,method.getName(), method.getMethodElementSignature()); } //non beaninfo else if (object instanceof String){ String name = (String)object; returnElement = new AttributeElement((BeanElement)parentElement,name); } else if (object instanceof JavaParameter){ JavaParameter javaParameter = (JavaParameter)object; if (javaParameter.isReturn()) returnElement = new ParameterElement((MethodElement)parentElement,RETURN_PARAM_NAME,MethodElement.REL_RETURN_PARAMETERS,true); else{ //a java parameter gives us the qualified name we dont want this String name = javaParameter.getQualifiedName(); String shortName; int index = name.lastIndexOf("."); if (index != -1){ index++; shortName = name.substring(index); } else shortName = name; returnElement = new ParameterElement((MethodElement)parentElement,shortName,MethodElement.REL_PARAMETERS,false); } } else if (object instanceof JavaHelpers){ JavaHelpers javaHelper = (JavaHelpers)object; String javaName; if (javaHelper.isArray()) javaName = TypeFactory.ARRAY_NAME; else javaName = javaHelper.getJavaName(); if (parentElement instanceof ParameterElement){ returnElement = new SimpleElement((ParameterElement)parentElement,javaName,javaHelper.isPrimitive()); } else if(parentElement instanceof AttributeElement){ returnElement = new SimpleElement((AttributeElement)parentElement,javaName,javaHelper.isPrimitive()); } else if(parentElement instanceof FieldElement){ returnElement = new SimpleElement((FieldElement)parentElement,javaName,javaHelper.isPrimitive()); } else if(parentElement instanceof MethodElement){ returnElement = new ParameterElement((MethodElement)parentElement,RETURN_PARAM_NAME,MethodElement.REL_RETURN_PARAMETERS,true); } } return returnElement; } }