package org.bndtools.builder.classpath;
import java.io.Serializable;
import java.util.concurrent.atomic.AtomicLong;
import org.bndtools.api.BndtoolsConstants;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.IClasspathContainer;
import org.eclipse.jdt.core.IClasspathEntry;
public class BndContainer implements IClasspathContainer, Serializable {
private static final long serialVersionUID = 1L;
public static final String DESCRIPTION = "Bnd Bundle Path";
private final IClasspathEntry[] entries;
private final AtomicLong lastModified;
BndContainer(IClasspathEntry[] entries, long lastModified) {
this.entries = entries;
this.lastModified = new AtomicLong(lastModified);
}
@Override
public IClasspathEntry[] getClasspathEntries() {
return entries;
}
@Override
public String getDescription() {
return DESCRIPTION;
}
@Override
public int getKind() {
return IClasspathContainer.K_APPLICATION;
}
@Override
public IPath getPath() {
return BndtoolsConstants.BND_CLASSPATH_ID;
}
@Override
public String toString() {
return getDescription();
}
long lastModified() {
return lastModified.get();
}
boolean updateLastModified(long time) {
for (long current = lastModified.get(); time > current; current = lastModified.get()) {
if (lastModified.compareAndSet(current, time)) {
return true;
}
}
return false;
}
}