| /******************************************************************************* |
| * 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.HashSet; |
| import java.util.List; |
| import java.util.Set; |
| |
| import org.eclipse.bpel.model.PartnerLink; |
| import org.eclipse.bpel.model.partnerlinktype.Role; |
| import org.eclipse.bpel.ui.util.BPELUtil; |
| import org.eclipse.bpel.ui.util.ModelHelper; |
| import org.eclipse.emf.ecore.EObject; |
| |
| import org.eclipse.wst.wsdl.Definition; |
| import org.eclipse.wst.wsdl.PortType; |
| |
| /** |
| * Content provider for PortTypes. |
| * |
| * Expects a Role or a Definition or a context as input. |
| */ |
| public class PortTypeContentProvider extends AbstractContentProvider { |
| |
| @Override |
| public void collectElements(Object input, List list) { |
| |
| if (input instanceof Definition) { |
| Definition defn = (Definition) input; |
| list.addAll ( defn.getEPortTypes() ); |
| |
| } else if (input instanceof PortType) { |
| |
| PortType pt = (PortType) input; |
| collectElements ( pt.eContainer(), list ); |
| |
| } else if (input instanceof Role) { |
| |
| Role role = (Role) input; |
| PortType portType = ModelHelper.getRolePortType(role); |
| if (portType != null) { |
| list.add ( portType ); |
| } |
| |
| } else if (input instanceof EObject) { |
| EObject eObj = (EObject) input; |
| |
| // everything else is expected to be a Process or something inside a Process. |
| PartnerLink[] partnerLinks = BPELUtil.getVisiblePartnerLinks( eObj ); |
| Set portTypeSet = new HashSet(); |
| for (int i = 0; i<partnerLinks.length; i++) { |
| PortType pt = ModelHelper.getPartnerPortType(partnerLinks[i], ModelHelper.INCOMING); |
| if (pt != null) { |
| if (portTypeSet.add(pt)) { |
| list.add(pt); |
| } |
| } |
| pt = ModelHelper.getPartnerPortType(partnerLinks[i], ModelHelper.OUTGOING); |
| if (pt != null) { |
| if (portTypeSet.add(pt)) { |
| list.add(pt); |
| } |
| } |
| } |
| |
| } |
| } |
| } |