package org.limewire.core.impl; import org.limewire.core.api.Application; import org.limewire.http.httpclient.HttpClientInstanceUtils; 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, HttpClientInstanceUtils { 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 String addClientInfoToUrl(String baseUrl) { return LimeWireUtils.addLWInfoToUrl(baseUrl, applicationServices.getMyGUID()); } @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 isProVersion() { return LimeWireUtils.isPro(); } }