EMMA Coverage Report (generated Tue May 06 07:29:23 PDT 2008)
[all classes][org.springframework.batch.core.step]

COVERAGE SUMMARY FOR SOURCE FILE [StepExecutionSynchronizerFactory.java]

nameclass, %method, %block, %line, %
StepExecutionSynchronizerFactory.java100% (1/1)100% (3/3)65%  (26/40)67%  (6.7/10)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class StepExecutionSynchronizerFactory100% (1/1)100% (3/3)65%  (26/40)67%  (6.7/10)
StepExecutionSynchronizerFactory (): void 100% (1/1)46%  (11/24)59%  (4.8/8)
<static initializer> 100% (1/1)92%  (12/13)92%  (0.9/1)
getStepExecutionSynchronizer (): StepExecutionSynchronizer 100% (1/1)100% (3/3)100% (1/1)

1/*
2 * Copyright 2002-2007 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 
17package org.springframework.batch.core.step;
18 
19import org.springframework.core.JdkVersion;
20import org.springframework.util.ClassUtils;
21 
22/**
23 * A factory that properly determines which version of the {@link StepExecutionSynchronizer} to return based on the
24 * availabilty of Java 5 or Backport Concurrent.
25 * 
26 * @author Ben Hale
27 */
28public class StepExecutionSynchronizerFactory {
29 
30        /** Whether the backport-concurrent library is present on the classpath */
31        private static final boolean backportConcurrentAvailable = ClassUtils.isPresent(
32                "edu.emory.mathcs.backport.java.util.concurrent.Semaphore", StepExecutionSynchronizerFactory.class
33                        .getClassLoader());
34 
35        private final StepExecutionSynchronizer synchronizer;
36 
37        public StepExecutionSynchronizerFactory() {
38                if (JdkVersion.isAtLeastJava15()) {
39                        synchronizer = new JdkConcurrentStepExecutionSynchronizer();
40                } else if (backportConcurrentAvailable) {
41                        synchronizer = new BackportConcurrentStepExecutionSynchronizer();
42                } else {
43                        throw new IllegalStateException("Cannot create StepExecutionSynchronizer - "
44                                + "neither JDK 1.5 nor backport-concurrent available on the classpath");
45                }
46        }
47 
48        public StepExecutionSynchronizer getStepExecutionSynchronizer() {
49                return synchronizer;
50        }
51}

[all classes][org.springframework.batch.core.step]
EMMA 2.0.5312 (C) Vladimir Roubtsov