![JAR search and dependency download from the Maven repository](/logo.png)
info.kwarc.sally4.mhw.base.impl.MathHubWorker Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mhw-base Show documentation
Show all versions of mhw-base Show documentation
Implements the interaction of assigning a MathHub document to a Worker.
The newest version!
package info.kwarc.sally4.mhw.base.impl;
import info.kwarc.sally4.lmh.factories.LMH;
import info.kwarc.sally4.mhw.base.IMathHubRepository;
import info.kwarc.sally4.mhw.base.IMathHubUser;
import info.kwarc.sally4.mhw.base.IMathHubWorker;
import info.kwarc.sally4.mhw.base.factories.MathHubRepositoryFactory;
import java.util.HashSet;
import org.apache.felix.ipojo.ConfigurationException;
import org.apache.felix.ipojo.Factory;
import org.apache.felix.ipojo.MissingHandlerException;
import org.apache.felix.ipojo.UnacceptableConfiguration;
import org.apache.felix.ipojo.annotations.Bind;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Invalidate;
import org.apache.felix.ipojo.annotations.Property;
import org.apache.felix.ipojo.annotations.Provides;
import org.apache.felix.ipojo.annotations.Requires;
import org.apache.felix.ipojo.annotations.Unbind;
import org.apache.felix.ipojo.annotations.Validate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component
@Provides(specifications=IMathHubWorker.class)
public class MathHubWorker implements IMathHubWorker {
final public static String factory_id = "info.kwarc.sally4.mhw.base.impl.MathHubWorker";
Logger log;
public MathHubWorker() {
log = LoggerFactory.getLogger(getClass());
}
@Requires(filter="(factory.name="+MathHubRepository.factory_id+")")
Factory mathHubRepositoryFactory;
@Property
String mhwid;
@Requires
MathHubRepositoryFactory repoFactory;
@Requires(id="mhwuserfilter", filter="(filterThatWillNeverSucceed=1)")
IMathHubUser user;
@Requires(id="mhwlmhfilter", filter="(filterThatWillNeverSucceed=1)")
LMH lmh;
HashSet instantiatedRepositories;
public MathHubWorker(IMathHubUser user, LMH lmh) {
this.user = user;
this.lmh = lmh;
init();
}
@Bind(id = "repoMHWIDBindFilter", filter = "(filterThatWillNeverSucceed=1)", aggregate=true, optional=true)
void bindActiveRepository(IMathHubRepository repo) {
log.debug(repo.getRepositoryName()+" was added");
instantiatedRepositories.add(repo.getRepositoryName());
}
@Unbind(id = "repoMHWIDUnBindFilter", filter = "(filterThatWillNeverSucceed=1)", aggregate=true, optional=true)
void unbindActiveRepository(IMathHubRepository repo) {
log.debug(repo.getRepositoryName()+" was removed");
instantiatedRepositories.remove(repo.getRepositoryName());
}
@Override
public void ensureRunningRepository(String repoName) {
if (instantiatedRepositories.contains(repoName)) {
return;
}
log.debug(repoName+" should be created");
if (!lmh.isRepoInstalled(repoName)) {
lmh.installRepo(repoName);
}
try {
repoFactory.createRepository(repoName, lmh.getLMHId(), mhwid, user.getUserId());
} catch (UnacceptableConfiguration | MissingHandlerException
| ConfigurationException e) {
log.error("Error creating repository instance", e);
e.printStackTrace();
}
}
void init() {
instantiatedRepositories = new HashSet();
lmh.setMHWID(getMHWID());
}
@Validate
void start() {
init();
}
@Invalidate
void stop() {
}
@Override
public IMathHubUser getUser() {
return user;
}
@Override
public LMH getLmh() {
return lmh;
}
@Override
public String getMHWID() {
return mhwid;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy