001/* 002 * Copyright 2006-2018 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * https://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017package org.springframework.batch.item; 018 019import org.springframework.lang.Nullable; 020 021/** 022 * Interface for item transformation. Given an item as input, this interface provides 023 * an extension point which allows for the application of business logic in an item 024 * oriented processing scenario. It should be noted that while it's possible to return 025 * a different type than the one provided, it's not strictly necessary. Furthermore, 026 * returning null indicates that the item should not be continued to be processed. 027 * 028 * @author Robert Kasanicky 029 * @author Dave Syer 030 * @author Mahmoud Ben Hassine 031 */ 032public interface ItemProcessor<I, O> { 033 034 /** 035 * Process the provided item, returning a potentially modified or new item for continued 036 * processing. If the returned result is null, it is assumed that processing of the item 037 * should not continue. 038 * 039 * @param item to be processed 040 * @return potentially modified or new item for continued processing, {@code null} if processing of the 041 * provided item should not continue. 042 * 043 * @throws Exception thrown if exception occurs during processing. 044 */ 045 @Nullable 046 O process(I item) throws Exception; 047}