/*******************************************************************************
* Copyright (c) 2015 Composent, Inc. 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: Scott Lewis - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.remoteserviceadmin.ui.rsa.model;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.ecf.internal.remoteservices.ui.Activator;
import org.eclipse.ecf.internal.remoteservices.ui.DiscoveryComponent;
import org.eclipse.ecf.internal.remoteservices.ui.Messages;
import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
/**
* @since 3.3
*/
public class AbstractRSANode implements IAdaptable {
public static final String CLOSED = Messages.AbstractRSANode_NodeClosed;
private AbstractRSANode parent;
private final List<AbstractRSANode> children = new ArrayList<AbstractRSANode>();
public AbstractRSANode() {
}
protected RemoteServiceAdmin getRSA() {
return DiscoveryComponent.getDefault().getRSA();
}
public AbstractRSANode getParent() {
return this.parent;
}
protected void setParent(AbstractRSANode p) {
this.parent = p;
}
public void addChild(AbstractRSANode child) {
children.add(child);
child.setParent(this);
}
public void addChildAtIndex(int index, AbstractRSANode child) {
children.add(index, child);
child.setParent(this);
}
public void removeChild(AbstractRSANode child) {
children.remove(child);
child.setParent(null);
}
public AbstractRSANode[] getChildren() {
return (AbstractRSANode[]) children.toArray(new AbstractRSANode[children.size()]);
}
public boolean hasChildren() {
return children.size() > 0;
}
public void clearChildren() {
children.clear();
}
protected ServiceReference<org.osgi.service.remoteserviceadmin.RemoteServiceAdmin> getRSARef() {
Activator a = Activator.getDefault();
if (a != null) {
Collection<ServiceReference<org.osgi.service.remoteserviceadmin.RemoteServiceAdmin>> rsaRefs = null;
try {
rsaRefs = a.getBundle().getBundleContext()
.getServiceReferences(org.osgi.service.remoteserviceadmin.RemoteServiceAdmin.class, null);
} catch (InvalidSyntaxException e) {
// will not happen
}
return (rsaRefs != null && rsaRefs.size() > 0) ? rsaRefs.iterator().next() : null;
} else
return null;
}
@Override
public Object getAdapter(Class adapter) {
return null;
}
}