blob: 4124126d66eacd5ee962317fd5cb524885f53261 [file] [log] [blame]
/*******************************************************************************
* 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