blob: 1ed79927a6a7ebddb8b95348a7c7842a4ad14c27 [file] [log] [blame]
/*******************************************************************************
* 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;
}
}