/*******************************************************************************
* Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
* 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:
* Wim Jongman - initial API and implementation
* Ahmed Aadel - initial API and implementation
*******************************************************************************/
package org.eclipse.ecf.provider.zookeeper.core;
import java.net.URI;
import org.eclipse.core.runtime.Assert;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.identity.IDCreateException;
import org.eclipse.ecf.core.identity.Namespace;
import org.eclipse.ecf.discovery.identity.IServiceTypeID;
import org.eclipse.ecf.discovery.identity.ServiceTypeID;
public class ZooDiscoveryNamespace extends Namespace {
private static final long serialVersionUID = 3925693055869405334L;
public static final String NAME = "ecf.namespace.zoodiscovery"; //$NON-NLS-1$
public ZooDiscoveryNamespace() {
super(NAME, "ZooKeeper Discovery Namespace"); //$NON-NLS-1$
}
public ID createInstance(Object[] parameters) throws IDCreateException {
Assert.isTrue(parameters != null && parameters.length > 0);
try {
if (parameters[0] instanceof String && parameters instanceof String[]) {
return new ZooDiscoveryTargetID(this, (String[]) parameters);
} else if (parameters.length == 1
&& parameters[0] instanceof IServiceTypeID) {
return new ZooDiscoveryServiceTypeID(this,
(IServiceTypeID) parameters[0]);
} else if (parameters.length == 2
&& parameters[0] instanceof IServiceTypeID
&& parameters[1] instanceof URI) {
return new ZooDiscoveryServiceID(this,
((IServiceTypeID) parameters[0]), ((URI) parameters[1]));
} else if (parameters.length == 2
&& parameters[0] instanceof String
&& parameters[1] instanceof URI) {
final String type = (String) parameters[0];
return new ZooDiscoveryServiceID(this,
new ServiceTypeID(this, type), ((URI) parameters[1]));
}
} catch (Exception e) {
throw new IDCreateException(getName()+" createInstance()", e); //$NON-NLS-1$
}
return null;
}
public String getScheme() {
return this.getClass().toString();
}
public Class[][] getSupportedParameterTypes() {
return new Class[][] { { String.class }, { IServiceTypeID.class },
{ IServiceTypeID.class, URI.class } };
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}