You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/01/26 06:18:25 UTC
svn commit: r737635 - in /camel/trunk/camel-core/src/main:
java/org/apache/camel/component/file/
java/org/apache/camel/component/file/strategy/
resources/META-INF/services/org/apache/camel/component/
Author: davsclaus
Date: Mon Jan 26 05:18:23 2009
New Revision: 737635
URL: http://svn.apache.org/viewvc?rev=737635&view=rev
Log:
CAMEL-1241: java.io.File based component on the new generic VFS stuff (work in progress)
Added:
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileBinding.java (with props)
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultBinding.java (with props)
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileBinding.java (with props)
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileLockExclusiveReadLockStrategy.java (contents, props changed)
- copied, changed from r737493, camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileProcessStrategyFactory.java (contents, props changed)
- copied, changed from r737485, camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategyFactory.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewMarkerFileExclusiveReadLockStrategy.java (with props)
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExclusiveReadLockStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileConsumer.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategySupport.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/newfile
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java?rev=737635&r1=737634&r2=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java Mon Jan 26 05:18:23 2009
@@ -31,6 +31,7 @@
private long lastModified;
private T file;
private Object body;
+ private GenericFileBinding<T> binding = new GenericFileDefaultBinding();
@Override
public GenericFile<T> clone() {
@@ -57,6 +58,7 @@
result.setLastModified(source.getLastModified());
result.setFile(source.getFile());
result.setBody(source.getBody());
+ result.setBinding(source.getBinding());
return result;
}
@@ -136,17 +138,25 @@
}
public Object getBody() {
- return body;
+ return binding.getBody(this);
}
public void setBody(Object os) {
- this.body = os;
+ binding.setBody(this, os);
}
public String getParent() {
return getAbsoluteFileName().substring(0, getAbsoluteFileName().lastIndexOf("/"));
}
+ public GenericFileBinding<T> getBinding() {
+ return binding;
+ }
+
+ public void setBinding(GenericFileBinding<T> binding) {
+ this.binding = binding;
+ }
+
@Override
public String toString() {
return getAbsoluteFileName();
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileBinding.java?rev=737635&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileBinding.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileBinding.java Mon Jan 26 05:18:23 2009
@@ -0,0 +1,27 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.camel.component.file;
+
+/**
+ * Binding between the generic file and the body content.
+ */
+public interface GenericFileBinding<T> {
+
+ public Object getBody(GenericFile<T> file);
+
+ public void setBody(GenericFile<T> file, Object body);
+}
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileBinding.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileBinding.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultBinding.java?rev=737635&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultBinding.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultBinding.java Mon Jan 26 05:18:23 2009
@@ -0,0 +1,17 @@
+package org.apache.camel.component.file;
+
+/**
+ *
+ */
+public class GenericFileDefaultBinding implements GenericFileBinding {
+
+ private Object body;
+
+ public Object getBody(GenericFile genericFile) {
+ return body;
+ }
+
+ public void setBody(GenericFile genericFile, Object body) {
+ this.body = body;
+ }
+}
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultBinding.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileDefaultBinding.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExclusiveReadLockStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExclusiveReadLockStrategy.java?rev=737635&r1=737634&r2=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExclusiveReadLockStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExclusiveReadLockStrategy.java Mon Jan 26 05:18:23 2009
@@ -28,15 +28,34 @@
* rename the file.</li>
* </ul>
*/
-public interface GenericFileExclusiveReadLockStrategy {
+public interface GenericFileExclusiveReadLockStrategy<T> {
/**
* Acquires exclusive read lock to the file.
*
* @param operations generic file operations
- * @param file the remote file
+ * @param file the file
* @return <tt>true</tt> if read lock was acquired. If <tt>false</tt> Camel
* will skip the file and try it on the next poll
*/
- boolean acquireExclusiveReadLock(GenericFileOperations operations, GenericFile file);
+ boolean acquireExclusiveReadLock(GenericFileOperations<T> operations, GenericFile<T> file);
+
+ /**
+ * Releases the exclusive read lock granted by the <tt>acquireExclusiveReadLock</tt> method.
+ *
+ * @param operations generic file operations
+ * @param file the file
+ */
+ void releaseExclusiveReadLock(GenericFileOperations<T> operations, GenericFile<T> file);
+
+ /**
+ * Sets an optional timeout period.
+ * <p/>
+ * If the readlock could not be granted within the timeperiod then the wait is stopped and the
+ * <tt>acquireExclusiveReadLock</tt> method returns <tt>false</tt>.
+ *
+ * @param timeout period in millis
+ */
+ void setTimeout(long timeout);
+
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java?rev=737635&r1=737634&r2=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileProducer.java Mon Jan 26 05:18:23 2009
@@ -105,7 +105,7 @@
if (lastPathIndex != -1) {
String directory = fileName.substring(0, lastPathIndex);
if (!operations.buildDirectory(directory)) {
- log.warn("Can not build directory: " + directory + " (could be because of denied permissions)");
+ log.debug("Can not build directory: " + directory + " (could be because of denied permissions)");
}
}
boolean success = operations.storeFile(fileName, exchange);
@@ -152,6 +152,7 @@
answer = baseDir + name;
} else {
// use a generated filename if no name provided
+ // TODO: Consider to require end user to always provide a filename instead of generating a new name
answer = baseDir + getGenericFileEndpoint().getGeneratedFileName(exchange.getIn());
}
} else {
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileBinding.java?rev=737635&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileBinding.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileBinding.java Mon Jan 26 05:18:23 2009
@@ -0,0 +1,23 @@
+package org.apache.camel.component.file;
+
+import java.io.File;
+
+/**
+ *
+ */
+public class NewFileBinding implements GenericFileBinding<File> {
+
+ private File body;
+
+ public Object getBody(GenericFile<File> file) {
+ // TODO: comment why I do this
+ // TODO: consider storing object and only create new if changed
+ // TODO: Consider callback from changeName to binding so we change
+ // change it at that time
+ return new File(file.getAbsoluteFileName());
+ }
+
+ public void setBody(GenericFile<File> GenericFile, Object body) {
+ // noop
+ }
+}
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileBinding.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileBinding.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileConsumer.java?rev=737635&r1=737634&r2=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileConsumer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/NewFileConsumer.java Mon Jan 26 05:18:23 2009
@@ -81,6 +81,8 @@
protected GenericFile<File> asGenericFile(File file) {
GenericFile<File> answer = new GenericFile<File>();
+ // use file specific binding
+ answer.setBinding(new NewFileBinding());
answer.setFile(file);
answer.setFileLength(file.length());
answer.setFileName(file.getName());
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java?rev=737635&r1=737634&r2=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java Mon Jan 26 05:18:23 2009
@@ -107,6 +107,7 @@
if (timeout != null) {
readLockStrategy.setTimeout(timeout);
}
+ return readLockStrategy;
} else if ("rename".equals(readLock)) {
FileRenameExclusiveReadLockStrategy readLockStrategy = new FileRenameExclusiveReadLockStrategy();
Long timeout = (Long) params.get("readLockTimeout");
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategySupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategySupport.java?rev=737635&r1=737634&r2=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategySupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategySupport.java Mon Jan 26 05:18:23 2009
@@ -37,6 +37,9 @@
* @version $Revision$
*/
public abstract class FileProcessStrategySupport implements FileProcessStrategy {
+
+ // TODO: Should be suppored by NewFile
+
private static final transient Log LOG = LogFactory.getLog(FileProcessStrategySupport.class);
private boolean lockFile;
private FileRenamer lockFileRenamer;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java?rev=737635&r1=737634&r2=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategySupport.java Mon Jan 26 05:18:23 2009
@@ -40,11 +40,15 @@
}
public void commit(GenericFileOperations operations, GenericFileEndpoint endpoint, GenericFileExchange exchange, GenericFile file) throws Exception {
- // nothing
+ if (exclusiveReadLockStrategy != null) {
+ exclusiveReadLockStrategy.releaseExclusiveReadLock(operations, file);
+ }
}
public void rollback(GenericFileOperations operations, GenericFileEndpoint endpoint, GenericFileExchange exchange, GenericFile file) {
- // nothing
+ if (exclusiveReadLockStrategy != null) {
+ exclusiveReadLockStrategy.releaseExclusiveReadLock(operations, file);
+ }
}
public GenericFileExclusiveReadLockStrategy getExclusiveReadLockStrategy() {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java?rev=737635&r1=737634&r2=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileRenameExclusiveReadLockStrategy.java Mon Jan 26 05:18:23 2009
@@ -73,6 +73,10 @@
return true;
}
+ public void releaseExclusiveReadLock(GenericFileOperations genericFileOperations, GenericFile genericFile) {
+ // noop
+ }
+
private void sleep() {
LOG.trace("Exclusive read lock not granted. Sleeping for 1000 millis.");
try {
Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileLockExclusiveReadLockStrategy.java (from r737493, camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileLockExclusiveReadLockStrategy.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileLockExclusiveReadLockStrategy.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java&r1=737493&r2=737635&rev=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileLockExclusiveReadLockStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileLockExclusiveReadLockStrategy.java Mon Jan 26 05:18:23 2009
@@ -23,7 +23,9 @@
import java.nio.channels.FileLock;
import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.component.file.ExclusiveReadLockStrategy;
+import org.apache.camel.component.file.GenericFile;
+import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
+import org.apache.camel.component.file.GenericFileOperations;
import org.apache.camel.util.ObjectHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -33,22 +35,22 @@
* After granting the read lock it is released, we just want to make sure that when we start
* consuming the file its not currently in progress of being written by third party.
*/
-public class FileLockExclusiveReadLockStrategy implements ExclusiveReadLockStrategy {
- private static final transient Log LOG = LogFactory.getLog(FileLockExclusiveReadLockStrategy.class);
+public class NewFileLockExclusiveReadLockStrategy implements GenericFileExclusiveReadLockStrategy<File> {
+ private static final transient Log LOG = LogFactory.getLog(NewFileLockExclusiveReadLockStrategy.class);
private long timeout;
- // TODO: We shall keep this with the GenericFileXX to support FileLock for java.io.File
-
- public boolean acquireExclusiveReadLock(File file) {
+ public boolean acquireExclusiveReadLock(GenericFileOperations<File> operations, GenericFile<File> file) {
+ File target = new File(file.getAbsoluteFileName());
+
if (LOG.isTraceEnabled()) {
- LOG.trace("Waiting for exclusive read lock to file: " + file);
+ LOG.trace("Waiting for exclusive read lock to file: " + target);
}
FileChannel channel = null;
try {
// try to acquire rw lock on the file before we can consume it
- channel = new RandomAccessFile(file, "rw").getChannel();
-
+ channel = new RandomAccessFile(target, "rw").getChannel();
+
long start = System.currentTimeMillis();
boolean exclusive = false;
@@ -57,14 +59,14 @@
if (timeout > 0) {
long delta = System.currentTimeMillis() - start;
if (delta > timeout) {
- LOG.debug("Could not acquire read lock within " + timeout + " millis. Will skip the file: " + file);
+ LOG.debug("Could not acquire read lock within " + timeout + " millis. Will skip the file: " + target);
// we could not get the lock within the timeout period, so return false
return false;
}
}
// get the lock using either try lock or not depending on if we are using timeout or not
- FileLock lock = null;
+ FileLock lock = null;
try {
lock = timeout > 0 ? channel.tryLock() : channel.lock();
} catch (IllegalStateException ex) {
@@ -73,7 +75,7 @@
}
if (lock != null) {
if (LOG.isTraceEnabled()) {
- LOG.trace("Acquired exclusive read lock: " + lock + " to file: " + file);
+ LOG.trace("Acquired exclusive read lock: " + lock + " to file: " + target);
}
// just release it now we dont want to hold it during the rest of the processing
lock.release();
@@ -95,12 +97,16 @@
sleep();
} finally {
// must close channel
- ObjectHelper.close(channel, "while acquiring exclusive read lock for file: " + file, LOG);
+ ObjectHelper.close(channel, "while acquiring exclusive read lock for file: " + target, LOG);
}
return true;
}
-
+
+ public void releaseExclusiveReadLock(GenericFileOperations<File> fileGenericFileOperations, GenericFile<File> fileGenericFile) {
+ // TODO: release read lock from above, as we should hold id during processing
+ }
+
private void sleep() {
LOG.trace("Exclusive read lock not granted. Sleeping for 1000 millis.");
try {
@@ -118,7 +124,7 @@
* Sets an optional timeout period.
* <p/>
* If the readlock could not be granted within the timeperiod then the wait is stopped and the
- * {@link #acquireExclusiveReadLock(java.io.File)} returns <tt>false</tt>.
+ * acquireReadLock returns <tt>false</tt>.
*
* @param timeout period in millis
*/
@@ -126,4 +132,4 @@
this.timeout = timeout;
}
-}
+ }
\ No newline at end of file
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileLockExclusiveReadLockStrategy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileLockExclusiveReadLockStrategy.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileLockExclusiveReadLockStrategy.java
------------------------------------------------------------------------------
svn:mergeinfo =
Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileProcessStrategyFactory.java (from r737485, camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategyFactory.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileProcessStrategyFactory.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileProcessStrategyFactory.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategyFactory.java&r1=737485&r2=737635&rev=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileProcessStrategyFactory.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileProcessStrategyFactory.java Mon Jan 26 05:18:23 2009
@@ -23,9 +23,9 @@
import org.apache.camel.component.file.GenericFileProcessStrategy;
import org.apache.camel.util.ObjectHelper;
-public final class GenericFileProcessStrategyFactory {
+public final class NewFileProcessStrategyFactory {
- private GenericFileProcessStrategyFactory() {
+ private NewFileProcessStrategyFactory() {
}
public static GenericFileProcessStrategy createGenericFileProcessStrategy(Map<String, Object> params) {
@@ -93,16 +93,27 @@
if (ObjectHelper.isNotEmpty(readLock)) {
if ("none".equals(readLock) || "false".equals(readLock)) {
return null;
+ } else if ("fileLock".equals(readLock)) {
+ GenericFileExclusiveReadLockStrategy readLockStrategy = new NewFileLockExclusiveReadLockStrategy();
+ Long timeout = (Long) params.get("readLockTimeout");
+ if (timeout != null) {
+ readLockStrategy.setTimeout(timeout);
+ }
+ return readLockStrategy;
} else if ("rename".equals(readLock)) {
- GenericFileRenameExclusiveReadLockStrategy readLockStrategy = new GenericFileRenameExclusiveReadLockStrategy();
+ GenericFileExclusiveReadLockStrategy readLockStrategy = new GenericFileRenameExclusiveReadLockStrategy();
Long timeout = (Long) params.get("readLockTimeout");
if (timeout != null) {
readLockStrategy.setTimeout(timeout);
}
return readLockStrategy;
+ } else if ("markerFile".equals(readLock)) {
+ // TODO: marker file that is the stuff with the .camel file
+ GenericFileExclusiveReadLockStrategy readLockStrategy = new NewMarkerFileExclusiveReadLockStrategy();
+ return readLockStrategy;
}
}
return null;
}
-}
+}
\ No newline at end of file
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileProcessStrategyFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileProcessStrategyFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewFileProcessStrategyFactory.java
------------------------------------------------------------------------------
svn:mergeinfo =
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewMarkerFileExclusiveReadLockStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewMarkerFileExclusiveReadLockStrategy.java?rev=737635&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewMarkerFileExclusiveReadLockStrategy.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewMarkerFileExclusiveReadLockStrategy.java Mon Jan 26 05:18:23 2009
@@ -0,0 +1,27 @@
+package org.apache.camel.component.file.strategy;
+
+import java.io.File;
+
+import org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy;
+import org.apache.camel.component.file.GenericFileOperations;
+import org.apache.camel.component.file.GenericFile;
+
+/**
+ *
+ */
+public class NewMarkerFileExclusiveReadLockStrategy implements GenericFileExclusiveReadLockStrategy<File> {
+
+ public boolean acquireExclusiveReadLock(GenericFileOperations<File> fileGenericFileOperations, GenericFile<File> fileGenericFile) {
+ // create the .camelFile
+ return false;
+ }
+
+ public void releaseExclusiveReadLock(GenericFileOperations<File> fileGenericFileOperations, GenericFile<File> fileGenericFile) {
+ // delete the .camelFile
+ }
+
+ public void setTimeout(long timeout) {
+ // noop
+ }
+
+}
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewMarkerFileExclusiveReadLockStrategy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NewMarkerFileExclusiveReadLockStrategy.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/newfile
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/newfile?rev=737635&r1=737634&r2=737635&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/newfile (original)
+++ camel/trunk/camel-core/src/main/resources/META-INF/services/org/apache/camel/component/newfile Mon Jan 26 05:18:23 2009
@@ -16,4 +16,4 @@
#
class=org.apache.camel.component.file.NewFileComponent
-strategy.factory.class=org.apache.camel.component.file.strategy.GenericFileProcessStrategyFactory
\ No newline at end of file
+strategy.factory.class=org.apache.camel.component.file.strategy.NewFileProcessStrategyFactory
\ No newline at end of file