001/** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.camel.component.file; 018 019import org.apache.camel.Exchange; 020 021/** 022 * Represents a pluggable strategy when processing files. 023 */ 024public interface GenericFileProcessStrategy<T> { 025 026 /** 027 * Allows custom logic to be run on first poll preparing the strategy, 028 * such as removing old lock files etc. 029 * 030 * @param operations file operations 031 * @param endpoint the endpoint 032 * @throws Exception can be thrown in case of errors which causes poll to fail 033 */ 034 void prepareOnStartup(GenericFileOperations<T> operations, GenericFileEndpoint<T> endpoint) throws Exception; 035 036 /** 037 * Called when work is about to begin on this file. This method may attempt 038 * to acquire some file lock before returning true; returning false if the 039 * file lock could not be obtained so that the file should be ignored. 040 * 041 * @param operations file operations 042 * @param endpoint the endpoint 043 * @param exchange the exchange 044 * @param file the file 045 * @return true if the file can be processed (such as if a file lock could be obtained) 046 * @throws Exception can be thrown in case of errors 047 */ 048 boolean begin(GenericFileOperations<T> operations, GenericFileEndpoint<T> endpoint, 049 Exchange exchange, GenericFile<T> file) throws Exception; 050 051 /** 052 * Called when a begin is aborted, for example to release any resources which may have 053 * been acquired during the {@link #begin(GenericFileOperations, GenericFileEndpoint, org.apache.camel.Exchange, GenericFile)} 054 * operation. 055 * 056 * @param operations file operations 057 * @param endpoint the endpoint 058 * @param exchange the exchange 059 * @param file the file 060 * @throws Exception can be thrown in case of errors 061 */ 062 void abort(GenericFileOperations<T> operations, GenericFileEndpoint<T> endpoint, 063 Exchange exchange, GenericFile<T> file) throws Exception; 064 065 /** 066 * Releases any file locks and possibly deletes or moves the file after 067 * successful processing 068 * 069 * @param operations file operations 070 * @param endpoint the endpoint 071 * @param exchange the exchange 072 * @param file the file 073 * @throws Exception can be thrown in case of errors 074 */ 075 void commit(GenericFileOperations<T> operations, GenericFileEndpoint<T> endpoint, 076 Exchange exchange, GenericFile<T> file) throws Exception; 077 078 /** 079 * Releases any file locks and possibly deletes or moves the file after 080 * unsuccessful processing 081 * 082 * @param operations file operations 083 * @param endpoint the endpoint 084 * @param exchange the exchange 085 * @param file the file 086 * @throws Exception can be thrown in case of errors 087 */ 088 void rollback(GenericFileOperations<T> operations, GenericFileEndpoint<T> endpoint, 089 Exchange exchange, GenericFile<T> file) throws Exception; 090 091}