package org.limewire.core.impl;
import org.limewire.core.api.Application;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.limegroup.gnutella.ApplicationServices;
import com.limegroup.gnutella.LifecycleManager;
import com.limegroup.gnutella.util.LimeWireUtils;
@Singleton
class ApplicationImpl implements Application {
private final ApplicationServices applicationServices;
private final LifecycleManager lifecycleManager;
private volatile String flag = null;
@Inject
public ApplicationImpl(ApplicationServices applicationServices,
LifecycleManager lifecycleManager) {
this.applicationServices = applicationServices;
this.lifecycleManager = lifecycleManager;
}
@Override
public void startCore() {
lifecycleManager.start();
}
@Override
public void stopCore() {
if(flag == null)
lifecycleManager.shutdown();
else
lifecycleManager.shutdown(flag);
}
@Override
public void setShutdownFlag(String flag) {
this.flag = flag;
}
@Override
public boolean isTestingVersion() {
return LimeWireUtils.isTestingVersion();
}
@Override
public String getVersion() {
return LimeWireUtils.getLimeWireVersion();
}
@Override
public boolean isBetaVersion() {
return LimeWireUtils.isBetaRelease();
}
@Override
public boolean isNewInstall() {
return applicationServices.isNewInstall();
}
@Override
public boolean isNewJavaVersion() {
return applicationServices.isNewJavaVersion();
}
}