package org.limewire.promotion;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.limewire.io.IOUtils;
import org.limewire.promotion.exceptions.PromotionException;
import org.limewire.security.certificate.CertificateVerifier;
import org.limewire.security.certificate.CipherProvider;
import org.limewire.security.certificate.KeyStoreProvider;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class PromotionBinderFactoryImpl implements PromotionBinderFactory {
private final static Log LOG = LogFactory.getLog(PromotionBinderFactoryImpl.class);
private CipherProvider cipherProvider;
private KeyStoreProvider keyStore;
private CertificateVerifier certificateVerifier;
@Inject
public PromotionBinderFactoryImpl(CipherProvider cipherProvider, KeyStoreProvider keyStore,
CertificateVerifier certificateVerifier) {
this.cipherProvider = cipherProvider;
this.keyStore = keyStore;
this.certificateVerifier = certificateVerifier;
}
public PromotionBinder newBinder(InputStream in) {
if (in == null) {
return null;
}
PromotionBinder binder = new PromotionBinder(cipherProvider, keyStore, certificateVerifier);
try {
binder.initialize(IOUtils.readFully(in));
return binder;
} catch (PromotionException e) {
LOG.error(e); // Don't be verbose
} catch (IOException e) { // about this error
LOG.error(e); // But note it
}
return null;
}
}