/******************************************************************************* | |
* Copyright (c) 2008, 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 2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* IBM Corporation - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.bpel.ui.details.providers; | |
import java.util.ArrayList; | |
import org.eclipse.bpel.model.resource.BPELResourceSetImpl; | |
import org.eclipse.bpel.model.util.BPELUtils; | |
import org.eclipse.bpel.wsil.model.inspection.Inspection; | |
import org.eclipse.bpel.wsil.model.inspection.Link; | |
import org.eclipse.bpel.wsil.model.inspection.WSILDocument; | |
import org.eclipse.emf.common.util.URI; | |
import org.eclipse.emf.ecore.EObject; | |
import org.eclipse.emf.ecore.resource.Resource; | |
import org.eclipse.jface.viewers.ITreeContentProvider; | |
import org.eclipse.jface.viewers.Viewer; | |
/** | |
* WSIIL Content Provider | |
* | |
* @author Michal Chmielewski (michal.chmielewski@oracle.com) | |
* @author Edward Gee | |
* @date Apr 5, 2007 | |
* | |
*/ | |
@SuppressWarnings({"unchecked","nls"}) | |
public class WSILContentProvider implements ITreeContentProvider { | |
/** | |
* Flatten the inspection document ( do not return root document ) | |
*/ | |
static public final int FLATTEN = 0x1; | |
int fMode = 0; | |
/** | |
* Set the mode of operation of this content provider. | |
* @param mode | |
*/ | |
public void setMode ( int mode ) { | |
fMode = mode; | |
} | |
/** (non-Javadoc) | |
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) | |
*/ | |
public Object[] getChildren (Object arg0) { | |
ArrayList<Object> items = new ArrayList<Object>(); | |
if (arg0 instanceof WSILDocument) { | |
if ((fMode & FLATTEN) == FLATTEN) { | |
arg0 = ((WSILDocument)arg0).getInspection() ; | |
} else { | |
items.add(((WSILDocument)arg0).getInspection()); | |
} | |
} | |
if (arg0 instanceof Inspection) { | |
Inspection insp = (Inspection) arg0; | |
items.addAll( insp.getServices() ); | |
items.addAll( insp.getLinks() ); | |
} | |
if (arg0 instanceof Link) { | |
Link link = (Link) arg0; | |
BPELResourceSetImpl resourceSet = BPELUtils.slightlyHackedResourceSet ( link ); | |
URI linkURI = null; | |
try { | |
linkURI = URI.createURI( link.getLocation() ); | |
if (linkURI.isRelative()) { | |
// path is relative to me ... | |
URI parentURI = link.eResource().getURI(); | |
linkURI = linkURI.resolve(parentURI); | |
} | |
} catch (Throwable t) { | |
items.add(t); | |
return items.toArray(); | |
} | |
Resource resource = null; | |
try { | |
resource = resourceSet.getResource(linkURI, true, "wsil"); | |
} catch (Throwable t) { | |
items.add(t); | |
return items.toArray(); | |
} | |
if (resource != null) { | |
Object root = resource.getContents().get(0); | |
if (root instanceof WSILDocument) { | |
WSILDocument doc = (WSILDocument) root; | |
items.addAll( doc.getInspection().getLinks() ); | |
items.addAll( doc.getInspection().getServices() ); | |
} else { | |
items.add( new Exception("Not a WSIL document") ); | |
} | |
} | |
} | |
return items.toArray(); | |
} | |
/** (non-Javadoc) | |
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) | |
*/ | |
public Object getParent(Object arg0) { | |
if (arg0 instanceof EObject) { | |
EObject eObj = (EObject) arg0; | |
return eObj.eContainer(); | |
} | |
return null; | |
} | |
/** | |
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) | |
*/ | |
public boolean hasChildren(Object arg0) { | |
return (arg0 instanceof WSILDocument || | |
arg0 instanceof Inspection || | |
arg0 instanceof Link) ; | |
} | |
/** | |
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) | |
*/ | |
public Object[] getElements (Object arg0) { | |
return getChildren(arg0); | |
} | |
/** | |
* @see org.eclipse.jface.viewers.IContentProvider#dispose() | |
*/ | |
public void dispose() { | |
} | |
/** | |
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) | |
*/ | |
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { | |
} | |
} |