List of usage examples for org.springframework.batch.integration.chunk ChunkProcessorChunkHandler afterPropertiesSet
public void afterPropertiesSet() throws Exception
From source file:es.fcs.batch.integration.chunk.MyRemoteChunkHandlerFactoryBean.java
/** * Builds a {@link ChunkHandler} from the {@link ChunkProcessor} extracted from the {@link #setStep(TaskletStep) * step} provided. Also modifies the step to send chunks to the chunk handler via the * {@link #setChunkWriter(ItemWriter) chunk writer}. * // w w w . j a v a2s . co m * @see FactoryBean#getObject() */ public ChunkProcessor<T> getObject() throws Exception { if (stepContributionSource == null) { Assert.state(chunkWriter instanceof StepContributionSource, "The chunk writer must be a StepContributionSource or else the source must be provided explicitly"); stepContributionSource = (StepContributionSource) chunkWriter; } Assert.state(step instanceof TaskletStep, "Step [" + step.getName() + "] must be a TaskletStep"); logger.debug("Converting TaskletStep with name=" + step.getName()); Tasklet tasklet = getTasklet((TaskletStep) step); Assert.state(tasklet instanceof ChunkOrientedTasklet<?>, "Tasklet must be ChunkOrientedTasklet in step=" + step.getName()); ChunkProcessor<T> chunkProcessor = getChunkProcessor((ChunkOrientedTasklet<?>) tasklet); Assert.state(chunkProcessor != null, "ChunkProcessor must be accessible in Tasklet in step=" + step.getName()); // System.out.println("====="+chunkWriter.getClass()); // setField(chunkWriter, "chunkProcessor", chunkProcessor); // if (Proxy.isProxyClass(chunkWriter.getClass())){ // InvocationHandler ih = Proxy.getInvocationHandler(chunkWriter); // Class[] cls = new Class[]{ChunkProcessor.class}; // Method m = MyChunkMessageChannelItemWriter.class.getMethod("setChunkProcessor", cls); // try { // ih.invoke(chunkWriter, m, new Object[]{chunkProcessor}); // } catch (Throwable e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } else { // ((MyChunkMessageChannelItemWriter<T>)chunkWriter).setChunkProcessor(chunkProcessor); // } ItemWriter<T> itemWriter = getItemWriter(chunkProcessor); Assert.state(!(itemWriter instanceof ChunkMessageChannelItemWriter<?>), "Cannot adapt step [" + step.getName() + "] because it already has a remote chunk writer. Use a local writer in the step."); replaceChunkProcessor((ChunkOrientedTasklet<?>) tasklet, chunkWriter, stepContributionSource); if (chunkWriter instanceof StepExecutionListener) { step.registerStepExecutionListener((StepExecutionListener) chunkWriter); } ChunkProcessorChunkHandler<T> handler = new ChunkProcessorChunkHandler<T>(); setNonBuffering(chunkProcessor); handler.setChunkProcessor(chunkProcessor); // TODO: create step context for the processor in case it has // scope="step" dependencies handler.afterPropertiesSet(); return chunkProcessor; }
From source file:org.springframework.batch.integration.chunk.RemoteChunkHandlerFactoryBean.java
/** * Builds a {@link ChunkHandler} from the {@link ChunkProcessor} extracted from the {@link #setStep(TaskletStep) * step} provided. Also modifies the step to send chunks to the chunk handler via the * {@link #setChunkWriter(ItemWriter) chunk writer}. * //w w w . j av a 2 s. c om * @see FactoryBean#getObject() */ public ChunkHandler<T> getObject() throws Exception { if (stepContributionSource == null) { Assert.state(chunkWriter instanceof StepContributionSource, "The chunk writer must be a StepContributionSource or else the source must be provided explicitly"); stepContributionSource = (StepContributionSource) chunkWriter; } Assert.state(step instanceof TaskletStep, "Step [" + step.getName() + "] must be a TaskletStep"); if (logger.isDebugEnabled()) { logger.debug("Converting TaskletStep with name=" + step.getName()); } Tasklet tasklet = getTasklet((TaskletStep) step); Assert.state(tasklet instanceof ChunkOrientedTasklet<?>, "Tasklet must be ChunkOrientedTasklet in step=" + step.getName()); ChunkProcessor<T> chunkProcessor = getChunkProcessor((ChunkOrientedTasklet<?>) tasklet); Assert.state(chunkProcessor != null, "ChunkProcessor must be accessible in Tasklet in step=" + step.getName()); ItemWriter<T> itemWriter = getItemWriter(chunkProcessor); Assert.state(!(itemWriter instanceof ChunkMessageChannelItemWriter<?>), "Cannot adapt step [" + step.getName() + "] because it already has a remote chunk writer. Use a local writer in the step."); replaceChunkProcessor((ChunkOrientedTasklet<?>) tasklet, chunkWriter, stepContributionSource); if (chunkWriter instanceof StepExecutionListener) { step.registerStepExecutionListener((StepExecutionListener) chunkWriter); } ChunkProcessorChunkHandler<T> handler = new ChunkProcessorChunkHandler<T>(); setNonBuffering(chunkProcessor); handler.setChunkProcessor(chunkProcessor); // TODO: create step context for the processor in case it has // scope="step" dependencies handler.afterPropertiesSet(); return handler; }