/******************************************************************************* * 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.List; import java.util.Map; import org.eclipse.ecf.internal.remoteservices.ui.Messages; import org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription; import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin.ImportReference; import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin.ImportRegistration; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointAsyncInterfacesNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointConfigTypesNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointConnectTargetIDNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointFrameworkIDNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointHostGroupNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointIDNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointIntentsNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointInterfacesNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointNamespaceNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointPackageVersionNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointRemoteServiceFilterNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointRemoteServiceIDNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointServiceIDNode; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointTimestampNode; import org.eclipse.ecf.remoteservices.ui.util.PropertyUtils; /** * @since 3.3 */ public class EndpointDescriptionRSANode extends AbstractRSANode { private final EndpointNode endpointNode; public EndpointDescriptionRSANode(Map<String, Object> props) { this(new EndpointDescription(props)); } public EndpointDescriptionRSANode(EndpointDescription ed) { this(ed, null); } public EndpointDescriptionRSANode(EndpointDescription ed, ImportRegistration ir) { this.endpointNode = (ir == null) ? new EndpointNode(ed) : new EndpointNode(ed, (ImportReference) ir.getImportReference()); // Interfaces EndpointInterfacesNode ein = new EndpointInterfacesNode(); for (String intf : ed.getInterfaces()) ein.addChild(new EndpointPackageVersionNode(PropertyUtils.getPackageName(intf))); this.endpointNode.addChild(ein); // Async Interfaces (if present) List<String> aintfs = ed.getAsyncInterfaces(); if (aintfs.size() > 0) { EndpointAsyncInterfacesNode ain = new EndpointAsyncInterfacesNode(); for (String intf : ed.getAsyncInterfaces()) ain.addChild(new EndpointPackageVersionNode(PropertyUtils.getPackageName(intf))); this.endpointNode.addChild(ain); } // ID this.endpointNode.addChild(new EndpointIDNode()); // Remote Service Host EndpointHostGroupNode idp = new EndpointHostGroupNode(Messages.EndpointDiscoveryView_REMOTE_HOST_NAME); // Host children idp.addChild(new EndpointNamespaceNode()); idp.addChild(new EndpointRemoteServiceIDNode()); org.eclipse.ecf.core.identity.ID connectTarget = ed.getConnectTargetID(); if (connectTarget != null) idp.addChild(new EndpointConnectTargetIDNode()); idp.addChild(new EndpointServiceIDNode()); idp.addChild(new EndpointIntentsNode()); idp.addChild(new EndpointConfigTypesNode()); idp.addChild(new EndpointFrameworkIDNode()); idp.addChild(new EndpointTimestampNode()); String filter = ed.getRemoteServiceFilter(); if (filter != null) idp.addChild(new EndpointRemoteServiceFilterNode()); this.endpointNode.addChild(idp); } public EndpointNode getEndpointNode() { return this.endpointNode; } }