/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gses.webui.osgi;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.Version;
import ru.codeinside.gses.webui.gws.TRef;
import java.io.Serializable;
final class TRefImpl<T> implements TRef<T> {
private static final long serialVersionUID = -814154250062325413L;
final String name;
final String symbolicName;
final Version version;
final String location;
final T server;
TRefImpl(ServiceReference reference, T server) {
Object name = reference.getProperty("component.name");
this.name = name != null ? name.toString() : getSymbolicName();
symbolicName = reference.getBundle().getSymbolicName();
version = reference.getBundle().getVersion();
location = reference.getBundle().getLocation();
this.server = server;
}
@Override
public String getName() {
return name;
}
@Override
public String getSymbolicName() {
return symbolicName;
}
@Override
public String getVersion() {
return version != null ? version.toString() : "";
}
@Override
public String getLocation() {
return location;
}
@Override
public T getRef() {
return server;
}
@Override
public String toString() {
return "{" + getSymbolicName() + ", " + getVersion() + "}";
}
@Override
public int compareTo(TRef<T> o) {
return getName().compareTo(o.getName());
}
}