Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2012 International Business Machines Corp.
   * 
   * See the NOTICE file distributed with this work for additional information
   * regarding copyright ownership. Licensed 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 com.ibm.jbatch.container.impl;
 
 import java.util.List;
 
 
When a partitioned step is run, this controller will only be used for the partition threads, NOT the top-level main thread that the step executes upon. When a non-partitioned step is run this controller will be used as well (and there will be no separate main thread with controller).
 
 public abstract class SingleThreadedStepControllerImpl extends BaseStepControllerImpl implements IController {
 
 	private final static String sourceClass = SingleThreadedStepControllerImpl.class.getName();
 	private final static Logger logger = Logger.getLogger();
 
 	// Collector only used from partition threads, not main thread
 	protected PartitionCollectorProxy collectorProxy = null;
 
 	protected SingleThreadedStepControllerImpl(RuntimeJobExecution jobExecutionImplStep stepStepContextImpl stepContextlong rootJobExecutionIdBlockingQueue<PartitionDataWrapperanalyzerStatusQueue) {
 		super(jobExecutionImplstepstepContextrootJobExecutionIdanalyzerStatusQueue);
 	}
 
 
 	protected void setupStepArtifacts() {
 		// set up listeners
 
 
 		// set up collectors if we are running a partitioned step
 		if (.getPartition() != null) {
 			Collector collector = .getPartition().getCollector();
 			if (collector != null) {
 				List<PropertypropList = (collector.getProperties() == null) ? null : collector.getProperties().getPropertyList();
Inject job flow, split, and step contexts into partition artifacts like collectors and listeners some of these contexts may be null
 
 				injectionRef = new InjectionReferences(.getJobContext(), propList);
 
 				try {
 					this. = ProxyFactory.createPartitionCollectorProxy(collector.getRef(), injectionRefthis.);
 				} catch (ArtifactValidationException e) {
 					throw new BatchContainerServiceException("Cannot create the collector [" + collector.getRef() + "]"e);
 				}
 			}
 		}
 	}
 
 	protected void invokePreStepArtifacts() {
 		if ( == null) {
 			return;
 		}
 
 		// Call @BeforeStep on all the step listeners
 		for (StepListenerProxy listenerProxy : ) {
 			listenerProxy.beforeStep();
 		}
	}
	protected void invokePostStepArtifacts() {
		// Call @AfterStep on all the step listeners
		if ( != null) {
			for (StepListenerProxy listenerProxy : ) {
				listenerProxy.afterStep();
			}
		}
	}
	protected void invokeCollectorIfPresent() {
		if ( != null) {
			.finer("Got partition data: " + data + ", from collector: " + );
	}
	// Useless to have collector without analyzer but let's check so we don't hang or blow up.
		if ( != null) {
			.finer("Sending collector partition data: " + data + " to analyzer queue: " + );
			dataWrapper.setCollectorData(data);
else {
			.fine("Analyzer not configured.");
		}
	}
	// Useless to have collector without analyzer but let's check so we don't hang or blow up.
		if ( != null) {
			.fine("Send status from partition for analyzeStatus with batchStatus = " + .getBatchStatus() + ", exitStatus = " + .getExitStatus());
else {
			.fine("Analyzer not configured.");
		}
	}
New to GrepCode? Check out our FAQ X