View Javadoc

1   /*******************************************************************************
2    * Copyright 2013 André Rouél and Dominik Seichter
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  package net.sf.qualitytest.blueprint.strategy.creation;
17  
18  import java.util.UUID;
19  
20  import javax.annotation.Nonnegative;
21  
22  import net.sf.qualitycheck.ArgumentsChecked;
23  import net.sf.qualitycheck.Check;
24  
25  /**
26   * Strategy which creates random strings using {@code Blueprint.string()}.
27   * 
28   * Optionally a maximum length for the generated strings can be specified.
29   * 
30   * @author Dominik Seichter
31   */
32  public class BlueprintStringCreationStrategy extends ValueCreationStrategy<String> {
33  
34  	private final int maxLength;
35  
36  	/**
37  	 * Create a string creation strategy which creates strings with the default length (standard UUID).
38  	 */
39  	public BlueprintStringCreationStrategy() {
40  		maxLength = -1;
41  	}
42  
43  	@ArgumentsChecked
44  	public BlueprintStringCreationStrategy(@Nonnegative final int maxLength) {
45  		this.maxLength = Check.notNegative(maxLength, "maxLength");
46  	}
47  
48  	@Override
49  	public String createValue(final Class<?> expectedClass) {
50  		final String ret = UUID.randomUUID().toString();
51  
52  		if (maxLength >= 0) {
53  			return ret.substring(0, maxLength);
54  		} else {
55  			return ret;
56  		}
57  	}
58  
59  }