/** * <copyright> * </copyright> * * $Id: BPELExtensibleElementImpl.java,v 1.4 2011/06/14 16:41:24 rbrodt Exp $ */ package org.eclipse.bpel.model.impl; import java.util.HashMap; import java.util.Map; import javax.wsdl.extensions.ExtensibilityElement; import org.eclipse.bpel.model.BPELExtensibleElement; import org.eclipse.bpel.model.BPELPackage; import org.eclipse.bpel.model.Documentation; import org.eclipse.bpel.model.util.ReconciliationHelper; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.wst.wsdl.WSDLElement; import org.eclipse.wst.wsdl.internal.impl.ExtensibleElementImpl; import org.eclipse.wst.wsdl.internal.impl.WSDLElementImpl; import org.w3c.dom.Element; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Extensible Element</b></em>'. * <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link org.eclipse.bpel.model.impl.BPELExtensibleElementImpl#getDocumentation <em>Documentation</em>}</li> * </ul> * </p> * * @generated */ public class BPELExtensibleElementImpl extends ExtensibleElementImpl implements BPELExtensibleElement { /** * The cached value of the '{@link #getDocumentation() <em>Documentation</em>}' containment reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getDocumentation() * @generated * @ordered */ protected Documentation documentation; /** * This is true if the Documentation containment reference has been set. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ protected boolean documentationESet; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected BPELExtensibleElementImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return BPELPackage.Literals.BPEL_EXTENSIBLE_ELEMENT; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Documentation getDocumentation() { return documentation; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public NotificationChain basicSetDocumentation( Documentation newDocumentation, NotificationChain msgs) { Documentation oldDocumentation = documentation; if (!isReconciling) { ReconciliationHelper.replaceChild(this, oldDocumentation, newDocumentation); } documentation = newDocumentation; boolean oldDocumentationESet = documentationESet; documentationESet = true; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION, oldDocumentation, newDocumentation, !oldDocumentationESet); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setDocumentation(Documentation newDocumentation) { if (newDocumentation != documentation) { NotificationChain msgs = null; if (documentation != null) msgs = ((InternalEObject) documentation) .eInverseRemove( this, EOPPOSITE_FEATURE_BASE - BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION, null, msgs); if (newDocumentation != null) msgs = ((InternalEObject) newDocumentation) .eInverseAdd( this, EOPPOSITE_FEATURE_BASE - BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION, null, msgs); msgs = basicSetDocumentation(newDocumentation, msgs); if (msgs != null) msgs.dispatch(); } else { boolean oldDocumentationESet = documentationESet; documentationESet = true; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION, newDocumentation, newDocumentation, !oldDocumentationESet)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public NotificationChain basicUnsetDocumentation(NotificationChain msgs) { Documentation oldDocumentation = documentation; if (!isReconciling) { ReconciliationHelper.replaceChild(this, oldDocumentation, null); } documentation = null; boolean oldDocumentationESet = documentationESet; documentationESet = false; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.UNSET, BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION, oldDocumentation, null, oldDocumentationESet); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void unsetDocumentation() { if (documentation != null) { NotificationChain msgs = null; msgs = ((InternalEObject) documentation) .eInverseRemove( this, EOPPOSITE_FEATURE_BASE - BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION, null, msgs); msgs = basicUnsetDocumentation(msgs); if (msgs != null) msgs.dispatch(); } else { boolean oldDocumentationESet = documentationESet; documentationESet = false; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.UNSET, BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION, null, null, oldDocumentationESet)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isSetDocumentation() { return documentationESet; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION: return basicUnsetDocumentation(msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION: return getDocumentation(); } return super.eGet(featureID, resolve, coreType); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eSet(int featureID, Object newValue) { switch (featureID) { case BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION: setDocumentation((Documentation) newValue); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION: unsetDocumentation(); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case BPELPackage.BPEL_EXTENSIBLE_ELEMENT__DOCUMENTATION: return isSetDocumentation(); } return super.eIsSet(featureID); } /** * Set the DOM element which has been read and which is the facade for this EMF * object. * * @see org.eclipse.wst.wsdl.internal.impl.WSDLElementImpl#setElement(org.w3c.dom.Element) * @generated NOT */ @Override public void setElement(Element elm) { super.setElement(elm); // a pointer back to the EMF model. if (elm != null) { elm.setUserData("emf.model", this, null); //$NON-NLS-1$ } } /** * @see org.eclipse.wst.wsdl.internal.impl.WSDLElementImpl#getElement() * @generated NOT */ @Override public Element getElement() { return super.getElement(); } /** * @generated NOT */ Map<String, Object> fTransients = null; /** * This is not part of the EMF model. * * @see org.eclipse.bpel.model.ExtensibleElement#getTransientProperty(java.lang.String) * @generated NOT */ public <T extends Object> T getTransientProperty(String key) { if (fTransients == null) { return null; } Object obj = fTransients.get(key); if (obj == null) { return null; } return (T) obj; } /** * @see org.eclipse.bpel.model.ExtensibleElement#setTransientProperty(java.lang.String, java.lang.Object) * @generated NOT */ public <T extends Object> T setTransientProperty(String key, T value) { if (fTransients == null) { fTransients = new HashMap<String, Object>(7); } Object obj = fTransients.put(key, value); if (obj == null) { return null; } return (T) obj; } // Reconciliation stuff. Has copy in ExtensibilityElement // TODO: (DU) remove duplication @Override protected void reconcile(Element changedElement) { // reconcileAttributes(changedElement); // reconcileContents(changedElement); ReconciliationHelper.getInstance().reconcile(this, changedElement); } @Override public void elementChanged(Element changedElement) { if (!isUpdatingDOM()) { if (!isReconciling) { isReconciling = true; try { reconcile(changedElement); WSDLElement theContainer = getContainer(); if (theContainer != null && theContainer.getElement() == changedElement) { ((WSDLElementImpl) theContainer) .elementChanged(changedElement); } } finally { isReconciling = false; } traverseToRootForPatching(); } } } public boolean isReconciling() { return this.isReconciling; } public boolean isUpdatingDOM() { return updatingDOM; } public void setUpdatingDOM(boolean updatingDOM) { this.updatingDOM = updatingDOM; } // @Override public ExtensibilityElement removeExtensibilityElement( ExtensibilityElement arg0) { // TODO Auto-generated method stub return null; } } //BPELExtensibleElementImpl