/******************************************************************************* * 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 org.eclipse.core.runtime.Platform; import org.eclipse.ecf.internal.remoteservices.ui.Messages; import org.eclipse.ecf.remoteserviceadmin.ui.endpoint.model.EndpointPropertySource; import org.eclipse.ecf.remoteservices.ui.util.PropertyUtils; import org.eclipse.ui.views.properties.IPropertySource; import org.osgi.framework.ServiceReference; /** * @since 3.3 */ public abstract class AbstractRegistrationNode extends AbstractRSANode { public static final String ERROR = Messages.AbstractRegistrationNode_ErrorName; private final Throwable error; /** * @since 3.4 */ public AbstractRegistrationNode(Throwable t, boolean showStack) { this.error = t; if (this.error != null) addChild(new ExceptionNode(this.error, showStack)); } public AbstractRegistrationNode(Throwable t) { this(t, false); } protected Throwable getError() { return error; } protected boolean hasError() { return getError() != null; } public abstract boolean isClosed(); protected abstract String getValidName(); /** * @since 3.4 */ protected String getErrorName(){ return ERROR; } /** * @since 3.4 */ protected String getClosedName() { return CLOSED; } public abstract ServiceReference getServiceReference(); public String getName() { return hasError() ? getErrorName() : (isClosed() ? getClosedName() : getValidName()); } @Override public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) { if (adapter == IPropertySource.class) { ServiceReference sr = getServiceReference(); if (sr != null) return new EndpointPropertySource(PropertyUtils.convertServicePropsToMap(sr)); } return Platform.getAdapterManager().getAdapter(this, adapter); } public abstract void close(); }