| /******************************************************************************* |
| * Copyright (c) 2010 BSI Business Systems Integration AG. |
| * 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: |
| * BSI Business Systems Integration AG - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.scout.sdk.util.type; |
| |
| import java.util.ArrayList; |
| |
| import org.eclipse.jdt.core.IField; |
| import org.eclipse.jdt.core.IMember; |
| import org.eclipse.jdt.core.IMethod; |
| import org.eclipse.jdt.core.IType; |
| import org.eclipse.jdt.core.JavaModelException; |
| import org.eclipse.jdt.core.Signature; |
| import org.eclipse.scout.sdk.util.internal.SdkUtilActivator; |
| import org.eclipse.scout.sdk.util.signature.SignatureUtility; |
| |
| /** |
| * Default description of a Java bean property. |
| */ |
| public class PropertyBean implements IPropertyBean { |
| |
| private IField m_field; |
| private IMethod m_readMethod; |
| private IMethod m_writeMethod; |
| private String m_beanName; |
| private final IType m_declaringType; |
| |
| public PropertyBean(IType declaringType, String beanName) { |
| m_declaringType = declaringType; |
| m_beanName = beanName; |
| } |
| |
| @Override |
| public String toString() { |
| return m_declaringType.getFullyQualifiedName() + "#" + m_beanName; |
| } |
| |
| @Override |
| public IType getDeclaringType() { |
| return m_declaringType; |
| } |
| |
| @Override |
| public IMember[] getAllMembers() { |
| ArrayList<IMember> members = new ArrayList<IMember>(); |
| if (TypeUtility.exists(m_field)) { |
| members.add(m_field); |
| } |
| if (TypeUtility.exists(m_readMethod)) { |
| members.add(m_readMethod); |
| } |
| if (TypeUtility.exists(m_writeMethod)) { |
| members.add(m_writeMethod); |
| } |
| return members.toArray(new IMember[members.size()]); |
| } |
| |
| public void setBeanName(String beanName) { |
| m_beanName = beanName; |
| } |
| |
| @Override |
| public String getBeanName() { |
| return m_beanName; |
| } |
| |
| @Override |
| public String getBeanSignature() { |
| String beanSignature = null; |
| if (TypeUtility.exists(getReadMethod())) { |
| try { |
| String methodSig = getReadMethod().getSignature(); |
| beanSignature = Signature.getReturnType(methodSig); |
| beanSignature = SignatureUtility.getQualifiedSignature(beanSignature, getReadMethod().getDeclaringType()); |
| return beanSignature; |
| } |
| catch (JavaModelException e) { |
| SdkUtilActivator.logWarning("could not parse signature of '" + getReadMethod().getElementName() + "' in type '" + getReadMethod().getDeclaringType().getFullyQualifiedName() + "'.", e); |
| } |
| } |
| if (TypeUtility.exists(getWriteMethod())) { |
| try { |
| String methodSig = getReadMethod().getSignature(); |
| String[] paramSignature = Signature.getParameterTypes(methodSig); |
| if (paramSignature != null && paramSignature.length == 1) { |
| beanSignature = paramSignature[0]; |
| beanSignature = SignatureUtility.getQualifiedSignature(beanSignature, getWriteMethod().getDeclaringType()); |
| return beanSignature; |
| } |
| } |
| catch (JavaModelException e) { |
| SdkUtilActivator.logWarning("could not parse signature of '" + getWriteMethod().getElementName() + "' in type '" + getWriteMethod().getDeclaringType().getFullyQualifiedName() + "'.", e); |
| } |
| } |
| return null; |
| } |
| |
| @Override |
| public IField getField() { |
| return m_field; |
| } |
| |
| public void setField(IField field) { |
| m_field = field; |
| } |
| |
| @Override |
| public IMethod getReadMethod() { |
| return m_readMethod; |
| } |
| |
| public void setReadMethod(IMethod readMethod) { |
| m_readMethod = readMethod; |
| } |
| |
| @Override |
| public IMethod getWriteMethod() { |
| return m_writeMethod; |
| } |
| |
| public void setWriteMethod(IMethod writeMethod) { |
| m_writeMethod = writeMethod; |
| } |
| } |