| /******************************************************************************* |
| * Copyright (c) 2005, 2012 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.bpel.ui.details.providers; |
| |
| import java.util.Iterator; |
| import java.util.List; |
| |
| import org.eclipse.bpel.model.CorrelationSet; |
| import org.eclipse.bpel.model.Process; |
| import org.eclipse.bpel.model.messageproperties.Property; |
| import org.eclipse.emf.common.util.TreeIterator; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.emf.ecore.resource.ResourceSet; |
| import org.eclipse.wst.wsdl.Definition; |
| import org.eclipse.wst.wsdl.util.WSDLResourceImpl; |
| |
| /** |
| * Content provider for Properties (NOT PropertyAliases!). |
| * |
| * Expects a CorrelationSet, Definition or Process as input. |
| */ |
| public class PropertyContentProvider extends AbstractContentProvider { |
| |
| @Override |
| public void collectElements(Object input, List list) { |
| |
| if (input instanceof CorrelationSet) { |
| CorrelationSet cs = (CorrelationSet) input; |
| list.addAll( cs.getProperties() ); |
| } else if (input instanceof Definition) { |
| Definition def = (Definition)input; |
| for (Iterator it = def.getEExtensibilityElements().iterator(); it.hasNext(); ) { |
| Object object = it.next(); |
| if (object instanceof Property) { |
| list.add(object); |
| } |
| } |
| } else if (input instanceof Process) { |
| // Walk all WSDL resources in the ResourceSet and scan each one for Properties. |
| // This code is similar to BPELUtil.getPropertyAliasesForMessageType(). |
| |
| // TODO: there should be a better way, e.g. builder keeping a map of what |
| // properties and propertyAliases are available and where? |
| |
| ResourceSet resourceSet = ((Process)input).eResource().getResourceSet(); |
| for (Iterator it = resourceSet.getResources().iterator(); it.hasNext(); ) { |
| Resource resource = (Resource)it.next(); |
| if (resource instanceof WSDLResourceImpl) { |
| for (TreeIterator treeIt = resource.getAllContents(); treeIt.hasNext(); ) { |
| Object object = treeIt.next(); |
| if (object instanceof Property) { |
| list.add(object); |
| } |
| } |
| } |
| } |
| } |
| |
| } |
| } |