ServiceAnnotationsImpl.java [src/csip] Revision: default Date:
/*
* $Id$
*
* This file is part of the Cloud Services Integration Platform (CSIP),
* a Model-as-a-Service framework, API and application suite.
*
* 2012-2022, Olaf David and others, OMSLab, Colorado State University.
*
* OMSLab licenses this file to you under the MIT license.
* See the LICENSE file in the project root for more information.
*/
package csip;
import csip.annotations.Name;
import csip.api.server.ServiceAnnotations;
import csip.annotations.Polling;
import csip.annotations.VersionInfo;
import javax.ws.rs.Path;
/**
* ServiceAnnotation access.
*
* @author od
*/
class ServiceAnnotationsImpl implements ServiceAnnotations {
private final ModelDataService mds;
ServiceAnnotationsImpl(ModelDataService mds) {
this.mds = mds;
}
public long getNextPoll() {
Polling p = mds.getClass().getAnnotation(Polling.class);
return (p != null) ? p.next() : -1;
}
public long getFirstPoll() {
Polling p = mds.getClass().getAnnotation(Polling.class);
return (p != null) ? p.first() : -1;
}
public String getPath() {
Path p = mds.getClass().getAnnotation(Path.class);
if (p != null)
return p.value();
throw new RuntimeException("@Path annotation missing for " + getClass());
}
public String getVersion() {
Path p = mds.getClass().getAnnotation(Path.class);
if (p != null) {
String last = p.value().substring(p.value().lastIndexOf('/'));
if (Character.isDigit(last.charAt(0))) {
return last;
}
}
VersionInfo v = mds.getClass().getAnnotation(VersionInfo.class);
if (v != null)
return v.value();
return "";
}
@Override
public String getName() {
Name n = mds.getClass().getAnnotation(Name.class);
if (n != null)
return n.value();
return mds.getClass().getName();
}
}