2014-07-19 29 views
1

我要爲我CompositeItemProcessor一個SkipListener多模型項目這是2個處理器的處理像這樣的項目的列表:SkipListener鏈條處理器和

讀卡器(itemRead) - > ValidationProcessor(itemRead,項目) - > WrapProcessor (項目,項)

的問題是當我想從第2處理器的項目太那個SkipListener只接受在 onSkipInProcess
onSkipInProcess(ValidationItem itemRead, Throwable arg1)
示範項目(itemRead,希望我是錯在這裏),在這個函數裏面。

也有很高的機會,WrapProcessor可能會改變輸出(根據要求),以類似的東西:WrapProcessor<item, anotherItem>

是否有解決這個問題的方法嗎?

我compositeItemProcessor配置:

<bean id="compositeItemProcessor" 
       class="org.springframework.batch.item.support.CompositeItemProcessor"> 
       <property name="delegates"> 
         <list> 
           <bean class="com.mycompany.ValidationProcessor">/ 
           <bean class="com.mycompany.WrapProcessor" /> 
         </list> 
       </property> 
     </bean> 

回答

1

你可以有你的轉化對象到自定義跳過例外

class WrapProcessor implements ItemProcessor<ValidationItem, WrappedObject> { 
    O transform(ValidationItem item) { 
    WrappedObject wrapped = new Wrapped(item); 
    if(some condition) { 
     throw new SkipWrappedObject(wrapped); 
    } 
    ... 
    } 
} 

onSkipInProcess(ValidationItem itemRead, Throwable arg1) Arg1可以鑄造到SkipWrappedObject廣告,您可以訪問跳過包裝的對象