X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.detached%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fdetached%2Fdrivers%2FFileDriver.java;h=07d062e182e078671d6b63eeb0f9b83812bd9e30;hb=e2e168e633c14fa1557ba59261fd900dac1ad70f;hp=5dbd270f05fa22c541f82454caf18a0ddb58b0b4;hpb=fa98571e9fa36276c42bda9535e4352b2e83c933;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java b/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java index 5dbd270f0..07d062e18 100644 --- a/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java +++ b/runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/FileDriver.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.argeo.slc.detached.drivers; import java.io.File; @@ -24,11 +40,17 @@ import org.apache.commons.logging.LogFactory; import org.argeo.slc.detached.DetachedAnswer; import org.argeo.slc.detached.DetachedClient; import org.argeo.slc.detached.DetachedCommunication; +import org.argeo.slc.detached.DetachedDriver; import org.argeo.slc.detached.DetachedException; import org.argeo.slc.detached.DetachedRequest; +import org.argeo.slc.detached.DetachedXmlConverter; import org.springframework.beans.factory.InitializingBean; -public class FileDriver extends AbstractDriver implements DetachedClient, +/** + * Implements both DetachedClient and DetachedDriver + * using File protocol + */ +public class FileDriver implements DetachedClient, DetachedDriver, InitializingBean { private final static Log log = LogFactory.getLog(FileDriver.class); private final static SimpleDateFormat sdf = new SimpleDateFormat( @@ -50,6 +72,12 @@ public class FileDriver extends AbstractDriver implements DetachedClient, // Counters to avoid naming files with same prefix private long lastSentTime = 0; private int counter = 0; + + private DetachedXmlConverter xmlConverter = null; + + private long receiveAnswerTimeout = 10000l; + + private boolean active = true; public synchronized DetachedRequest receiveRequest() throws Exception { DetachedRequest request = (DetachedRequest) receiveFile(requestsDir, @@ -163,8 +191,10 @@ public class FileDriver extends AbstractDriver implements DetachedClient, } } - if (!isActive()) + if (!isActive()) { + log.debug("DetachedDriver is not active. Leaving receiveFile"); return null; + } File lockFile = nameLockFile(file); while (lockFile.exists()) @@ -196,6 +226,16 @@ public class FileDriver extends AbstractDriver implements DetachedClient, FileUtils.moveFileToDirectory(file, processedDir, false); return detCom; } + + public synchronized void stop() { + log.debug("Stopping Detached Driver"); + active = false; + notifyAll(); + } + + private synchronized boolean isActive() { + return active; + } protected File createLockFile(File file) { File lockFile = nameLockFile(file); @@ -265,4 +305,19 @@ public class FileDriver extends AbstractDriver implements DetachedClient, } + public long getReceiveAnswerTimeout() { + return receiveAnswerTimeout; + } + + public void setReceiveAnswerTimeout(long receiveAnswerTimeout) { + this.receiveAnswerTimeout = receiveAnswerTimeout; + } + + public DetachedXmlConverter getXmlConverter() { + return xmlConverter; + } + + public void setXmlConverter(DetachedXmlConverter xmlConverter) { + this.xmlConverter = xmlConverter; + } }