/******************************************************************************* * Copyright (c) 2006 Oracle Corporation. * 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: * Cameron Bateman/Oracle - initial API and implementation * ********************************************************************************/ package org.eclipse.jst.jsf.context.symbol.internal.impl; import java.util.HashMap; import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.jst.jsf.common.internal.types.TypeConstants; import org.eclipse.jst.jsf.context.symbol.IBeanInstanceSymbol; import org.eclipse.jst.jsf.context.symbol.IBoundedListTypeDescriptor; import org.eclipse.jst.jsf.context.symbol.IBoundedMapTypeDescriptor; import org.eclipse.jst.jsf.context.symbol.IJavaTypeDescriptor2; import org.eclipse.jst.jsf.context.symbol.ISymbol; import org.eclipse.jst.jsf.context.symbol.ITypeDescriptor; import org.eclipse.jst.jsf.context.symbol.SymbolFactory; import org.eclipse.jst.jsf.context.symbol.SymbolPackage; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>IBean Instance Symbol</b></em>'. * <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link org.eclipse.jst.jsf.context.symbol.internal.impl.IBeanInstanceSymbolImpl#getProperties <em>Properties</em>}</li> * <li>{@link org.eclipse.jst.jsf.context.symbol.internal.impl.IBeanInstanceSymbolImpl#getMethods <em>Methods</em>}</li> * </ul> * </p> * * @generated */ public class IBeanInstanceSymbolImpl extends IInstanceSymbolImpl implements IBeanInstanceSymbol { /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @SuppressWarnings("hiding") public static final String copyright = "Copyright 2006 Oracle"; //$NON-NLS-1$ /** * A detailed description (human readable) about this instance symbol */ protected String _detailedDescription = null; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected IBeanInstanceSymbolImpl() { super(); } /** * <!-- begin-user-doc --> * @return the EClass * <!-- end-user-doc --> * @generated */ protected EClass eStaticClass() { return SymbolPackage.Literals.IBEAN_INSTANCE_SYMBOL; } /** * <!-- begin-user-doc --> * @return the list of bean properties * <!-- end-user-doc --> * @generated NOT */ public EList getProperties() { return getJavaTypeDescriptor().getBeanProperties(); } /** * <!-- begin-user-doc --> * @return the list of methods * <!-- end-user-doc --> * @generated NOT */ public EList getMethods() { return getJavaTypeDescriptor().getBeanMethods(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public IJavaTypeDescriptor2 getJavaTypeDescriptor() { return (IJavaTypeDescriptor2) getTypeDescriptor(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public void setJavaTypeDescriptor(IJavaTypeDescriptor2 newTypeDescriptor) { setTypeDescriptor(newTypeDescriptor); } /** * <!-- begin-user-doc --> * @param featureID * @param resolve * @param coreType * @return the object related to featureID * <!-- end-user-doc --> * @generated */ public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case SymbolPackage.IBEAN_INSTANCE_SYMBOL__PROPERTIES: return getProperties(); case SymbolPackage.IBEAN_INSTANCE_SYMBOL__METHODS: return getMethods(); } return super.eGet(featureID, resolve, coreType); } /** * <!-- begin-user-doc --> * @param featureID * @return whether the corresponding feature is set * <!-- end-user-doc --> * @generated */ public boolean eIsSet(int featureID) { switch (featureID) { case SymbolPackage.IBEAN_INSTANCE_SYMBOL__PROPERTIES: return !getProperties().isEmpty(); case SymbolPackage.IBEAN_INSTANCE_SYMBOL__METHODS: return !getMethods().isEmpty(); } return super.eIsSet(featureID); } public String getDetailedDescription() { return _detailedDescription; } public void setDetailedDescription(String detailedDescription) { this._detailedDescription = detailedDescription; } /** * @see org.eclipse.jst.jsf.context.symbol.internal.impl.IInstanceSymbolImpl#isTypeResolved() * @generated NOT */ // @Override public boolean isTypeResolved() { return getJavaTypeDescriptor() != null; } /** * @see org.eclipse.jst.jsf.context.symbol.internal.impl.IInstanceSymbolImpl#setTypeDescriptor(org.eclipse.jst.jsf.context.symbol.ITypeDescriptor) * @generated NOT */ public void setTypeDescriptor(ITypeDescriptor newTypeDescriptor) { if (newTypeDescriptor instanceof IJavaTypeDescriptor2) { super.setTypeDescriptor(newTypeDescriptor); } else { throw new IllegalArgumentException("Bean instance symbol requires a IJavaTypeDescriptor2"); //$NON-NLS-1$ } } public boolean isReadable() { // beans always readable return true; } public boolean isWritable() { // beans not writable return false; } public void setReadable(boolean value) { // do nothing } public void setWritable(boolean value) { // do nothing } /* * @generated NOT */ public ITypeDescriptor coerce(String typeSignature) { if (supportsCoercion(typeSignature)) { if (TypeConstants.TYPE_MAP.equals(typeSignature)) { IBoundedMapTypeDescriptor mapDesc = SymbolFactory.eINSTANCE.createIBoundedMapTypeDescriptor(); // bean maps are generally writable mapDesc.setImmutable(true); mapDesc.setMapSource(new HashMap()); // give it an empty map return mapDesc; } else if (TypeConstants.TYPE_LIST.equals(typeSignature)) { IBoundedListTypeDescriptor listDesc = SymbolFactory.eINSTANCE.createIBoundedListTypeDescriptor(); // bean maps are generally writable listDesc.setListSource(new BasicEList()); // give it an empty list return listDesc; } } return null; } /** (non-Javadoc) * @see org.eclipse.jst.jsf.context.symbol.internal.impl.IPropertySymbolImpl#call(java.lang.String, org.eclipse.emf.common.util.EList, java.lang.String) * * @generated NOT */ public ISymbol call(String methodName, EList methodArguments, String symbolName) { return Util.call(methodName, methodArguments, symbolName, getTypeDescriptor()); } } //IBeanInstanceSymbolImpl