package cz.abclinuxu.datoveschranky.impl;
import cz.abclinuxu.datoveschranky.common.impl.Config;
import cz.abclinuxu.datoveschranky.common.interfaces.DataBoxAccessService;
import cz.abclinuxu.datoveschranky.common.interfaces.DataBoxDownloadService;
import cz.abclinuxu.datoveschranky.common.interfaces.DataBoxMessagesService;
import cz.abclinuxu.datoveschranky.common.interfaces.DataBoxSearchService;
import cz.abclinuxu.datoveschranky.common.interfaces.DataBoxServices;
import cz.abclinuxu.datoveschranky.common.interfaces.DataBoxUploadService;
import cz.abclinuxu.datoveschranky.ws.ServiceBuilder;
import cz.abclinuxu.datoveschranky.ws.db.DataBoxManipulationPortType;
import cz.abclinuxu.datoveschranky.ws.db.DataBoxSearchPortType;
import cz.abclinuxu.datoveschranky.ws.dm.DmInfoPortType;
import cz.abclinuxu.datoveschranky.ws.dm.DmOperationsPortType;
/**
*
* Thread safe implementation of DataBoxServices.
*
* Methods of this object are thread safe, returned instances are not.
*
* @author xrosecky
*/
public class ThreadSafeDataBoxManager implements DataBoxServices {
protected Authentication auth = null;
protected Config config = null;
public ThreadSafeDataBoxManager(Config conf, Authentication auth) {
this.auth = auth;
this.config = conf;
}
public DataBoxDownloadService getDataBoxDownloadService() {
MessageValidator messageValidator = new MessageValidator(config);
DmOperationsPortType dataMessageOperationsService = auth.createService(
ServiceBuilder.createDmOperationsWebService(),
DmOperationsPortType.class, "dz");
return new DataBoxDownloadServiceImpl(dataMessageOperationsService, messageValidator);
}
public DataBoxMessagesService getDataBoxMessagesService() {
DmInfoPortType dataMessageInfo = auth.createService(
ServiceBuilder.createDmInfoWebService(),
DmInfoPortType.class, "dx");
return new DataBoxMessagesServiceImpl(dataMessageInfo);
}
public DataBoxUploadService getDataBoxUploadService() {
DmOperationsPortType dataMessageOperationsService = auth.createService(
ServiceBuilder.createDmOperationsWebService(),
DmOperationsPortType.class, "dz");
return new DataBoxUploadServiceImpl(dataMessageOperationsService);
}
public DataBoxSearchService getDataBoxSearchService() {
DataBoxManipulationPortType manipulationservice = auth.createService(
ServiceBuilder.createDataBoxManipulation(),
DataBoxManipulationPortType.class, "df");
DataBoxSearchPortType searchService = auth.createService(
ServiceBuilder.createDataBoxSearch(),
DataBoxSearchPortType.class, "df");
return new DataBoxSearchServiceImpl(manipulationservice, searchService);
}
public DataBoxAccessService getDataBoxAccessService() {
throw new UnsupportedOperationException("Operace getDataBoxAccessService neni "
+ "touto knihovnou podporovana.");
}
}