diff --git a/docs/documentation/custom-providers.md b/docs/documentation/custom-providers.md index c5559a0f1..6773b1d72 100644 --- a/docs/documentation/custom-providers.md +++ b/docs/documentation/custom-providers.md @@ -21,7 +21,7 @@ Create a custom provider of data: === "Java" ``` java - public static class Insect extends AbstractProvider { + public static class Insect extends AbstractProvider { private static final String[] INSECT_NAMES = new String[]{"Ant", "Beetle", "Butterfly", "Wasp"}; public Insect(Faker faker) { @@ -82,7 +82,7 @@ First, create the custom provider which loads the data from a file: === "Java" ``` java - public static class InsectFromFile extends AbstractProvider { + public static class InsectFromFile extends AbstractProvider { private static final String KEY = "insectsfromfile"; public InsectFromFile(Faker faker) { diff --git a/src/main/java/net/datafaker/AbstractProvider.java b/src/main/java/net/datafaker/AbstractProvider.java index c411f150d..1fb99a58e 100644 --- a/src/main/java/net/datafaker/AbstractProvider.java +++ b/src/main/java/net/datafaker/AbstractProvider.java @@ -2,14 +2,14 @@ import java.util.function.Supplier; -public class AbstractProvider { - protected final Faker faker; +public class AbstractProvider { + protected final T faker; - protected AbstractProvider(Faker faker) { + protected AbstractProvider(T faker) { this.faker = faker; } - public final Faker getFaker() { + public final ProviderRegistration getFaker() { return faker; } diff --git a/src/main/java/net/datafaker/Address.java b/src/main/java/net/datafaker/Address.java index 95a3b62a9..eb8a214ca 100644 --- a/src/main/java/net/datafaker/Address.java +++ b/src/main/java/net/datafaker/Address.java @@ -3,8 +3,8 @@ /** * @since 0.8.0 */ -public class Address extends AbstractProvider { - protected Address(Faker faker) { +public class Address extends AbstractProvider { + protected Address(BaseFaker faker) { super(faker); } @@ -99,14 +99,14 @@ public String stateAbbr() { * @return Returns the latitude, a number between -90 to 90. */ public String latitude() { - return String.format(faker.getLocale(), "%.8f", (faker.random().nextDouble() * 180) - 90); + return String.format(faker.getContext().getLocale(), "%.8f", (faker.random().nextDouble() * 180) - 90); } /** * @return Returns the longitude, a number between -180 and 180 */ public String longitude() { - return String.format(faker.getLocale(), "%.8f", (faker.random().nextDouble() * 360) - 180); + return String.format(faker.getContext().getLocale(), "%.8f", (faker.random().nextDouble() * 360) - 180); } /** diff --git a/src/main/java/net/datafaker/Ancient.java b/src/main/java/net/datafaker/Ancient.java index 50fc0e7d0..01db33a9a 100644 --- a/src/main/java/net/datafaker/Ancient.java +++ b/src/main/java/net/datafaker/Ancient.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Ancient extends AbstractProvider { +public class Ancient extends AbstractProvider { - protected Ancient(Faker faker) { + protected Ancient(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Animal.java b/src/main/java/net/datafaker/Animal.java index 6173073b6..945659905 100644 --- a/src/main/java/net/datafaker/Animal.java +++ b/src/main/java/net/datafaker/Animal.java @@ -5,9 +5,9 @@ /** * @since 0.8.0 */ -public class Animal extends AbstractProvider { +public class Animal extends AbstractProvider { - protected Animal(Faker faker) { + protected Animal(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/App.java b/src/main/java/net/datafaker/App.java index 85a9ecff3..b0e85d4a8 100644 --- a/src/main/java/net/datafaker/App.java +++ b/src/main/java/net/datafaker/App.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class App extends AbstractProvider { +public class App extends AbstractProvider { - protected App(Faker faker) { + protected App(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Appliance.java b/src/main/java/net/datafaker/Appliance.java index b96569b4b..eea2c0afc 100644 --- a/src/main/java/net/datafaker/Appliance.java +++ b/src/main/java/net/datafaker/Appliance.java @@ -3,9 +3,9 @@ /** * @since 1.0.0 */ -public class Appliance extends AbstractProvider { +public class Appliance extends AbstractProvider { - protected Appliance(Faker faker) { + protected Appliance(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/AquaTeenHungerForce.java b/src/main/java/net/datafaker/AquaTeenHungerForce.java index 27b32e116..ba94924d4 100644 --- a/src/main/java/net/datafaker/AquaTeenHungerForce.java +++ b/src/main/java/net/datafaker/AquaTeenHungerForce.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class AquaTeenHungerForce extends AbstractProvider { +public class AquaTeenHungerForce extends AbstractProvider { - protected AquaTeenHungerForce(Faker faker) { + protected AquaTeenHungerForce(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Artist.java b/src/main/java/net/datafaker/Artist.java index 24eded11c..d6a39ef98 100644 --- a/src/main/java/net/datafaker/Artist.java +++ b/src/main/java/net/datafaker/Artist.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Artist extends AbstractProvider { +public class Artist extends AbstractProvider { - protected Artist(Faker faker) { + protected Artist(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Australia.java b/src/main/java/net/datafaker/Australia.java index 38abf9cb9..81a9f2a65 100644 --- a/src/main/java/net/datafaker/Australia.java +++ b/src/main/java/net/datafaker/Australia.java @@ -3,9 +3,9 @@ /** * @since 1.2.0 */ -public class Australia extends AbstractProvider { +public class Australia extends AbstractProvider { - protected Australia(Faker faker) { + protected Australia(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Avatar.java b/src/main/java/net/datafaker/Avatar.java index 189fd62d3..3055fe206 100644 --- a/src/main/java/net/datafaker/Avatar.java +++ b/src/main/java/net/datafaker/Avatar.java @@ -3,10 +3,10 @@ /** * @since 0.8.0 */ -public class Avatar extends AbstractProvider { +public class Avatar extends AbstractProvider { private final String baseUrl; - protected Avatar(Faker faker) { + protected Avatar(BaseFaker faker) { super(faker); this.baseUrl = "https://robohash.org/"; } diff --git a/src/main/java/net/datafaker/Aviation.java b/src/main/java/net/datafaker/Aviation.java index 2c46f9dcd..4db035067 100644 --- a/src/main/java/net/datafaker/Aviation.java +++ b/src/main/java/net/datafaker/Aviation.java @@ -5,9 +5,9 @@ * * @since 0.8.0 */ -public class Aviation extends AbstractProvider { +public class Aviation extends AbstractProvider { - protected Aviation(Faker faker) { + protected Aviation(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Aws.java b/src/main/java/net/datafaker/Aws.java index 0b9a2f696..26c85db6d 100644 --- a/src/main/java/net/datafaker/Aws.java +++ b/src/main/java/net/datafaker/Aws.java @@ -5,9 +5,9 @@ /** * @since 1.3.0 */ -public class Aws extends AbstractProvider { +public class Aws extends AbstractProvider { - protected Aws(Faker faker) { + protected Aws(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Babylon5.java b/src/main/java/net/datafaker/Babylon5.java index ce4f44955..562a7ee4d 100644 --- a/src/main/java/net/datafaker/Babylon5.java +++ b/src/main/java/net/datafaker/Babylon5.java @@ -3,9 +3,9 @@ /** * @since 0.9.0 */ -public class Babylon5 extends AbstractProvider { +public class Babylon5 extends AbstractProvider { - protected Babylon5(Faker faker) { + protected Babylon5(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/BackToTheFuture.java b/src/main/java/net/datafaker/BackToTheFuture.java index 710793d04..beacbf7a4 100644 --- a/src/main/java/net/datafaker/BackToTheFuture.java +++ b/src/main/java/net/datafaker/BackToTheFuture.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class BackToTheFuture extends AbstractProvider { +public class BackToTheFuture extends AbstractProvider { - protected BackToTheFuture(Faker faker) { + protected BackToTheFuture(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Barcode.java b/src/main/java/net/datafaker/Barcode.java index f56dc67c3..985546bbe 100644 --- a/src/main/java/net/datafaker/Barcode.java +++ b/src/main/java/net/datafaker/Barcode.java @@ -3,9 +3,9 @@ /** * @since 0.9.0 */ -public class Barcode extends AbstractProvider { +public class Barcode extends AbstractProvider { - public Barcode(Faker faker) { + public Barcode(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/BaseFaker.java b/src/main/java/net/datafaker/BaseFaker.java new file mode 100644 index 000000000..6deabdc0f --- /dev/null +++ b/src/main/java/net/datafaker/BaseFaker.java @@ -0,0 +1,391 @@ +package net.datafaker; + +import net.datafaker.fileformats.Json; +import net.datafaker.service.FakeValuesService; +import net.datafaker.service.FakerContext; +import net.datafaker.service.RandomService; + +import java.nio.file.Path; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Random; +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.function.Supplier; + +/** + * Provides utility methods for generating fake strings, such as names, phone + * numbers, addresses. generate random strings with given patterns + * + * @author ren + */ +public class BaseFaker implements IProviders { + private final FakerContext context; + private final FakeValuesService fakeValuesService; + private static final Map, Map> PROVIDERS_MAP = new ConcurrentHashMap<>(); + + public BaseFaker() { + this(Locale.ENGLISH); + } + + public BaseFaker(Locale locale) { + this(locale, (Random) null); + } + + public BaseFaker(Random random) { + this(Locale.ENGLISH, random); + } + + public BaseFaker(Locale locale, Random random) { + this(locale, new RandomService(random)); + } + + public BaseFaker(Locale locale, RandomService randomService) { + this(new FakeValuesService(), new FakerContext(locale, randomService)); + } + + public BaseFaker(FakeValuesService fakeValuesService, FakerContext context) { + this.fakeValuesService = fakeValuesService; + this.context = context; + fakeValuesService.updateFakeValuesInterfaceMap(context.getLocaleChain()); + } + + /** + * Constructs Faker instance with default argument. + * + * @deprecated Use the default constructor instead + * @return {@link BaseFaker#BaseFaker()} + */ + @Deprecated // Use the default constructor instead + public static BaseFaker instance() { + return new BaseFaker(); + } + + /** + * Constructs Faker instance with provided {@link Locale}. + * + * @deprecated Use the contructor with locale instead + * @param locale - {@link Locale} + * @return {@link BaseFaker#BaseFaker(Locale)} + */ + @Deprecated + public static BaseFaker instance(Locale locale) { + return new BaseFaker(locale); + } + + /** + * Constructs Faker instance with provided {@link Random}. + * + * @deprecated Use the contructor with random instead + * @param random - {@link Random} + * @return {@link BaseFaker#BaseFaker(Random)} + */ + @Deprecated + public static BaseFaker instance(Random random) { + return new BaseFaker(random); + } + + /** + * Constructs Faker instance with provided {@link Locale} and {@link Random}. + * + * @deprecated Use the contructor with locale and random instead + * @param locale - {@link Locale} + * @param random - {@link Random} + * @return {@link BaseFaker#BaseFaker(Locale, Random)} + */ + @Deprecated + public static BaseFaker instance(Locale locale, Random random) { + return new BaseFaker(locale, random); + } + + public FakerContext getContext() { + return context; + } + + public T doWith(Callable callable, Locale locale) { + final Locale current = context.getLocale(); + T result; + try { + context.setCurrentLocale(locale); + fakeValuesService.updateFakeValuesInterfaceMap(context.getLocaleChain()); + result = callable.call(); + return result; + } catch (Throwable t) { + throw new RuntimeException(t); + } finally { + context.setCurrentLocale(current); + fakeValuesService.updateFakeValuesInterfaceMap(context.getLocaleChain()); + } + } + + public T doWith(Callable callable, long seed) { + final RandomService current = context.getRandomService(); + T result; + try { + context.setRandomService(new RandomService(new Random(seed))); + result = callable.call(); + return result; + } catch (Throwable t) { + throw new RuntimeException(t); + } finally { + context.setRandomService(current); + } + } + + public T doWith(Callable callable, Locale locale, long seed) { + final Locale currentLocale = context.getLocale(); + final RandomService currentRandomService = context.getRandomService(); + T result; + try { + context.setRandomService(new RandomService(new Random(seed))); + context.setCurrentLocale(locale); + result = callable.call(); + return result; + } catch (Throwable t) { + throw new RuntimeException(t); + } finally { + context.setRandomService(currentRandomService); + context.setCurrentLocale(currentLocale); + } + } + + + /** + * Returns a string with the '#' characters in the parameter replaced with random digits between 0-9 inclusive. + *

+ * For example, the string "ABC##EFG" could be replaced with a string like "ABC99EFG". + * + * @param numberString Template for string generation + * @return Generated string + */ + public String numerify(String numberString) { + return fakeValuesService.numerify(numberString, context); + } + + /** + * Returns a string with the '?' characters in the parameter replaced with random alphabetic + * characters. + *

+ * For example, the string "12??34" could be replaced with a string like "12AB34". + * + * @param letterString Template for string generation + * @return Generated string. + */ + public String letterify(String letterString) { + return fakeValuesService.letterify(letterString, context); + } + + /** + * Returns a string with the '?' characters in the parameter replaced with random alphabetic + * characters. + *

+ * For example, the string "12??34" could be replaced with a string like "12AB34". + */ + public String letterify(String letterString, boolean isUpper) { + return fakeValuesService.letterify(letterString, context, isUpper); + } + + /** + * Applies both a {@link #numerify(String)} and a {@link #letterify(String)} + * over the incoming string. + */ + public String bothify(String string) { + return fakeValuesService.bothify(string, context); + } + + /** + * Applies both a {@link #numerify(String)} and a {@link #letterify(String)} + * over the incoming string. + */ + public String bothify(String string, boolean isUpper) { + return fakeValuesService.bothify(string, context, isUpper); + } + + /** + * Generates a String that matches the given regular expression. + */ + public String regexify(String regex) { + return fakeValuesService.regexify(regex, context); + } + + /** + * Generates a String by example. The output string will have the same pattern as the input string. + *

+ * For example: + * "AAA" becomes "KRA" + * "abc" becomes "uio" + * "948" becomes "345" + * "A19c" becomes "Z20d" + * + * @param example The input string + * @return The output string based on the input pattern + */ + public String examplify(String example) { + return fakeValuesService.examplify(example, context); + } + + /** + * Returns a string with the char2replace characters in the parameter replaced with random option from available options. + *

+ * For example, the string "ABC??EFG" could be replaced with a string like "ABCtestтестEFG" + * if passed options are new String[]{"test", "тест"}. + * + * @param string Template for string generation + * @param char2replace Char to replace + * @param options Options to use while filling the template + * @return Generated string + */ + public String templatify(String string, char char2replace, String... options) { + return fakeValuesService().templatify(string, char2replace, context, options); + } + + /** + * Returns a string with the characters in the keys of optionsMap parameter replaced with random option from values. + * + *

+ * For example, the string "ABC$$EFG" could be replaced with a string like "ABCtestтестEFG" + * if passed for key '$' there is value new String[]{"test", "тест"} in optionsMap + * + * @param string Template for string generation + * @param optionsMap Map with replacement rules + * @return Generated string + */ + public String templatify(String string, Map optionsMap) { + return fakeValuesService().templatify(string, optionsMap, context); + } + + /** + * Returns a string with generated csv based number of lines and column expressions. + * This method will use comma as default delimiter, always prints header and double quote as default quote. + * + *

+ * For example, it could generate + * "name_column","last_name_column" + * "Sabrina","Kihn" + *

+ * for expression {@code faker.expression("#{csv '1','name_column','#{Name.first_name}','last_name_column','#{Name.last_name}'}");} + * + * @param limit Number of lines + * @param columnExpressions Even number of expressions. + * The odd numbers args are used for columns names, and even for column values. + * @return Generated string + */ + public String csv(int limit, String ... columnExpressions) { + return fakeValuesService().csv(limit, columnExpressions); + } + + /** + * Returns a string with generated csv based number of lines and column expressions. + * + *

+ * For example, it could generate + * "Thad" ### "Crist" + * "Kathryne" ### "Wuckert" + * "Sybil" ### "Connelly" + *

+ * for expression {@code faker.expression("#{csv ' ### ','"','false','3','name_column','#{Name.first_name}','last_name_column','#{Name.last_name}'}");} + * + * @param separator Delimiter to use + * @param quote Quote to use + * @param withHeader Print header or not + * @param limit Number of lines + * @param columnExpressions Even number of expressions. + * The odd numbers args are used for columns names, and even for column values. + * @return Generated string + */ + public String csv(String separator, char quote, boolean withHeader, int limit, String ... columnExpressions) { + return fakeValuesService().csv(separator, quote, withHeader, limit, columnExpressions); + } + + public Json json(String... fieldExpressions) { + return fakeValuesService().json(fieldExpressions); + } + + public Json jsona(String... fieldExpressions) { + return fakeValuesService().jsona(fieldExpressions); + } + + public RandomService random() { + return this.context.getRandomService(); + } + + public FakeValuesService fakeValuesService() { + return this.fakeValuesService; + } + + /** + * Allows to add paths to files with custom data. Data should be in YAML format. + * + * @param locale the locale for which a path is going to be added. + * @param path path to a file with YAML structure + * @throws IllegalArgumentException in case of invalid path + */ + public void addPath(Locale locale, Path path) { + fakeValuesService().addPath(locale, path); + } + + @SuppressWarnings("unchecked") + public static T getProvider(Class clazz, Function valueSupplier, B faker) { + PROVIDERS_MAP.putIfAbsent(clazz, new ConcurrentHashMap<>()); + Map map = PROVIDERS_MAP.get(clazz); + T result = (T) map.get(faker.getContext()); + if (result == null) { + result = valueSupplier.apply(faker); + map.putIfAbsent(faker.getContext(), result); + } + return result; + } + + /** + * + * @return builder to build {@code FakeCollection} + */ + public FakeCollection.Builder collection() { + return new FakeCollection.Builder().faker(this); + } + + @SafeVarargs + public final FakeCollection.Builder collection(Supplier... suppliers) { + return new FakeCollection.Builder<>(suppliers).faker(this); + } + + public final FakeCollection.Builder collection(List> suppliers) { + return new FakeCollection.Builder<>(suppliers).faker(this); + } + + public String resolve(String key) { + return this.fakeValuesService.resolve(key, this, this, context); + } + + public String resolve(String key, Supplier message) { + return this.fakeValuesService.resolve(key, this, this, message, context); + } + + /** + * Allows the evaluation of native YML expressions to allow you to build your + * own. + *

+ * The following are valid expressions: + *

    + *
  • #{regexify '(a|b){2,3}'}
  • + *
  • #{regexify '\\.\\*\\?\\+'}
  • + *
  • #{bothify '????','false'}
  • + *
  • #{Name.first_name} #{Name.first_name} #{Name.last_name}
  • + *
  • #{number.number_between '1','10'}
  • + *
+ * + * @param expression (see examples above) + * @return the evaluated string expression + * @throws RuntimeException if unable to evaluate the expression + */ + public String expression(String expression) { + return this.fakeValuesService.expression(expression, this, getContext()); + } + + @Override + public final BaseFaker getFaker() { + return this; + } +} diff --git a/src/main/java/net/datafaker/Battlefield1.java b/src/main/java/net/datafaker/Battlefield1.java index 43c82d09a..ad0290b4d 100644 --- a/src/main/java/net/datafaker/Battlefield1.java +++ b/src/main/java/net/datafaker/Battlefield1.java @@ -6,9 +6,9 @@ * @author coolestjj * @since 1.4.0 */ -public class Battlefield1 extends AbstractProvider { +public class Battlefield1 extends AbstractProvider { - protected Battlefield1(final Faker faker) { + protected Battlefield1(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Beer.java b/src/main/java/net/datafaker/Beer.java index 1de2f46d4..dfb0511e3 100644 --- a/src/main/java/net/datafaker/Beer.java +++ b/src/main/java/net/datafaker/Beer.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Beer extends AbstractProvider { +public class Beer extends AbstractProvider { - protected Beer(Faker faker) { + protected Beer(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/BigBangTheory.java b/src/main/java/net/datafaker/BigBangTheory.java index 49f7a6a57..ae5fef9f0 100644 --- a/src/main/java/net/datafaker/BigBangTheory.java +++ b/src/main/java/net/datafaker/BigBangTheory.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class BigBangTheory extends AbstractProvider { +public class BigBangTheory extends AbstractProvider { - protected BigBangTheory(Faker faker) { + protected BigBangTheory(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/BloodType.java b/src/main/java/net/datafaker/BloodType.java index 860468753..928f803e4 100644 --- a/src/main/java/net/datafaker/BloodType.java +++ b/src/main/java/net/datafaker/BloodType.java @@ -3,9 +3,9 @@ /** * @since 1.4.0 */ -public class BloodType extends AbstractProvider { +public class BloodType extends AbstractProvider { - protected BloodType(Faker faker) { + protected BloodType(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/BojackHorseman.java b/src/main/java/net/datafaker/BojackHorseman.java index 9d7314a7d..0c9eab236 100644 --- a/src/main/java/net/datafaker/BojackHorseman.java +++ b/src/main/java/net/datafaker/BojackHorseman.java @@ -6,14 +6,14 @@ * @author unknown and irakatz * @since 0.8.0 */ -public class BojackHorseman extends AbstractProvider { +public class BojackHorseman extends AbstractProvider { /** * Create a constructor for BojackHorseman. * * @param faker The Faker instance for generating random parts in BojackHorseman. */ - protected BojackHorseman(Faker faker) { + protected BojackHorseman(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Book.java b/src/main/java/net/datafaker/Book.java index aebc136a3..470ac6889 100644 --- a/src/main/java/net/datafaker/Book.java +++ b/src/main/java/net/datafaker/Book.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Book extends AbstractProvider { +public class Book extends AbstractProvider { - protected Book(Faker faker) { + protected Book(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Bool.java b/src/main/java/net/datafaker/Bool.java index 1e6046711..3c6fa273d 100644 --- a/src/main/java/net/datafaker/Bool.java +++ b/src/main/java/net/datafaker/Bool.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Bool extends AbstractProvider { +public class Bool extends AbstractProvider { - protected Bool(Faker faker) { + protected Bool(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/BossaNova.java b/src/main/java/net/datafaker/BossaNova.java index de3a8895c..ce6780b6e 100644 --- a/src/main/java/net/datafaker/BossaNova.java +++ b/src/main/java/net/datafaker/BossaNova.java @@ -7,9 +7,9 @@ * * @since 1.0.0 */ -public class BossaNova extends AbstractProvider { +public class BossaNova extends AbstractProvider { - protected BossaNova(Faker faker) { + protected BossaNova(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/BreakingBad.java b/src/main/java/net/datafaker/BreakingBad.java index 7daa9f136..e75ef4173 100644 --- a/src/main/java/net/datafaker/BreakingBad.java +++ b/src/main/java/net/datafaker/BreakingBad.java @@ -8,9 +8,9 @@ * * @since 1.0.0 */ -public class BreakingBad extends AbstractProvider { +public class BreakingBad extends AbstractProvider { - protected BreakingBad(Faker faker) { + protected BreakingBad(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/BrooklynNineNine.java b/src/main/java/net/datafaker/BrooklynNineNine.java index f5c55e91e..fbc3c0149 100644 --- a/src/main/java/net/datafaker/BrooklynNineNine.java +++ b/src/main/java/net/datafaker/BrooklynNineNine.java @@ -5,9 +5,9 @@ * * @since 1.3.0 */ -public class BrooklynNineNine extends AbstractProvider { +public class BrooklynNineNine extends AbstractProvider { - protected BrooklynNineNine(Faker faker) { + protected BrooklynNineNine(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Buffy.java b/src/main/java/net/datafaker/Buffy.java index 247ac23cc..ac22276eb 100644 --- a/src/main/java/net/datafaker/Buffy.java +++ b/src/main/java/net/datafaker/Buffy.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Buffy extends AbstractProvider { +public class Buffy extends AbstractProvider { - protected Buffy(Faker faker) { + protected Buffy(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Business.java b/src/main/java/net/datafaker/Business.java index 525e1b8aa..977ef9e2d 100644 --- a/src/main/java/net/datafaker/Business.java +++ b/src/main/java/net/datafaker/Business.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Business extends AbstractProvider { +public class Business extends AbstractProvider { - protected Business(Faker faker) { + protected Business(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/CNPJ.java b/src/main/java/net/datafaker/CNPJ.java index 0679051b1..f2544242a 100644 --- a/src/main/java/net/datafaker/CNPJ.java +++ b/src/main/java/net/datafaker/CNPJ.java @@ -8,9 +8,9 @@ * @see CNPJ * @since 1.1.0 */ -public class CNPJ extends AbstractProvider { +public class CNPJ extends AbstractProvider { - protected CNPJ(Faker faker) { + protected CNPJ(BaseFaker faker) { super(faker); } @@ -18,7 +18,7 @@ protected CNPJ(Faker faker) { * Return valid and formatted * * @return a valid CNPJ - * @see IdNumberGeneratorPtBrUtil#cnpj(Faker, boolean, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cnpj(IProviders, boolean, boolean, boolean) */ public String valid() { return IdNumberGeneratorPtBrUtil.cnpj(faker, true, true, false); @@ -29,7 +29,7 @@ public String valid() { * * @param formatted a CNPJ (un)formatted * @return a valid CNPJ - * @see IdNumberGeneratorPtBrUtil#cnpj(Faker, boolean, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cnpj(IProviders, boolean, boolean, boolean) */ public String valid(boolean formatted) { return IdNumberGeneratorPtBrUtil.cnpj(faker, formatted, true, false); @@ -47,7 +47,7 @@ public String valid(boolean formatted) { * @param formatted a CNPJ (un)formatted * @param multiBranch CPNJ from a random company branch * @return a valid CNPJ - * @see IdNumberGeneratorPtBrUtil#cnpj(Faker, boolean, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cnpj(IProviders, boolean, boolean, boolean) */ public String valid(boolean formatted, boolean multiBranch) { return IdNumberGeneratorPtBrUtil.cnpj(faker, formatted, true, multiBranch); @@ -57,7 +57,7 @@ public String valid(boolean formatted, boolean multiBranch) { * Return invalid and formatted * * @return an invalid CNPJ - * @see IdNumberGeneratorPtBrUtil#cnpj(Faker, boolean, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cnpj(IProviders, boolean, boolean, boolean) */ public String invalid() { return IdNumberGeneratorPtBrUtil.cnpj(faker, true, false, false); @@ -67,7 +67,7 @@ public String invalid() { * Return invalid and (un)formatted * * @return an invalid CNPJ - * @see IdNumberGeneratorPtBrUtil#cnpj(Faker, boolean, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cnpj(IProviders, boolean, boolean, boolean) */ public String invalid(boolean formatted) { return IdNumberGeneratorPtBrUtil.cnpj(faker, formatted, false, false); @@ -83,7 +83,7 @@ public String invalid(boolean formatted) { * Otherwise, this number will vary between 0001 and 9999 . * * @return an invalid CNPJ - * @see IdNumberGeneratorPtBrUtil#cnpj(Faker, boolean, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cnpj(IProviders, boolean, boolean, boolean) */ public String invalid(boolean formatted, boolean multiBranch) { return IdNumberGeneratorPtBrUtil.cnpj(faker, formatted, false, multiBranch); diff --git a/src/main/java/net/datafaker/CPF.java b/src/main/java/net/datafaker/CPF.java index 302582eae..584893864 100644 --- a/src/main/java/net/datafaker/CPF.java +++ b/src/main/java/net/datafaker/CPF.java @@ -11,9 +11,9 @@ * @see CPF * @since 0.8.0 */ -public class CPF extends AbstractProvider { +public class CPF extends AbstractProvider { - protected CPF(Faker faker) { + protected CPF(BaseFaker faker) { super(faker); } @@ -21,7 +21,7 @@ protected CPF(Faker faker) { * Return valid and formatted * * @return a valid CPF - * @see IdNumberGeneratorPtBrUtil#cpf(Faker, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cpf(IProviders, boolean, boolean) */ public String valid() { return IdNumberGeneratorPtBrUtil.cpf(faker, true, true); @@ -32,7 +32,7 @@ public String valid() { * * @param formatted a (un)formatted CPF * @return a valid CPF - * @see IdNumberGeneratorPtBrUtil#cpf(Faker, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cpf(IProviders, boolean, boolean) */ public String valid(boolean formatted) { return IdNumberGeneratorPtBrUtil.cpf(faker, formatted, true); @@ -42,7 +42,7 @@ public String valid(boolean formatted) { * Return invalid and formatted * * @return an invalid CPF - * @see IdNumberGeneratorPtBrUtil#cpf(Faker, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cpf(IProviders, boolean, boolean) */ public String invalid() { return IdNumberGeneratorPtBrUtil.cpf(faker, true, false); @@ -53,7 +53,7 @@ public String invalid() { * * @param formatted a (un)formatted CPF * @return an invalid CPF - * @see IdNumberGeneratorPtBrUtil#cpf(Faker, boolean, boolean) + * @see IdNumberGeneratorPtBrUtil#cpf(IProviders, boolean, boolean) */ public String invalid(boolean formatted) { return IdNumberGeneratorPtBrUtil.cpf(faker, formatted, false); diff --git a/src/main/java/net/datafaker/Camera.java b/src/main/java/net/datafaker/Camera.java index c414a9fb3..ec6914a08 100644 --- a/src/main/java/net/datafaker/Camera.java +++ b/src/main/java/net/datafaker/Camera.java @@ -3,9 +3,9 @@ /** * @since 1.4.0 */ -public class Camera extends AbstractProvider { +public class Camera extends AbstractProvider { - protected Camera(Faker faker) { + protected Camera(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Cannabis.java b/src/main/java/net/datafaker/Cannabis.java index 08df8cca7..917b94b06 100644 --- a/src/main/java/net/datafaker/Cannabis.java +++ b/src/main/java/net/datafaker/Cannabis.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class Cannabis extends AbstractProvider { +public class Cannabis extends AbstractProvider { - protected Cannabis(Faker faker) { + protected Cannabis(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Cat.java b/src/main/java/net/datafaker/Cat.java index 87d892886..01b390c3a 100644 --- a/src/main/java/net/datafaker/Cat.java +++ b/src/main/java/net/datafaker/Cat.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Cat extends AbstractProvider { +public class Cat extends AbstractProvider { - protected Cat(Faker faker) { + protected Cat(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Chiquito.java b/src/main/java/net/datafaker/Chiquito.java index 941309448..f3bc90e91 100644 --- a/src/main/java/net/datafaker/Chiquito.java +++ b/src/main/java/net/datafaker/Chiquito.java @@ -3,9 +3,9 @@ /** * @since 1.6.0 */ -public class Chiquito extends AbstractProvider { +public class Chiquito extends AbstractProvider { - protected Chiquito(Faker faker) { + protected Chiquito(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/ChuckNorris.java b/src/main/java/net/datafaker/ChuckNorris.java index 90a4db017..d5366c7c4 100644 --- a/src/main/java/net/datafaker/ChuckNorris.java +++ b/src/main/java/net/datafaker/ChuckNorris.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class ChuckNorris extends AbstractProvider { +public class ChuckNorris extends AbstractProvider { - protected ChuckNorris(Faker faker) { + protected ChuckNorris(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/ClashOfClans.java b/src/main/java/net/datafaker/ClashOfClans.java index aa9c3d9bf..4630f3b1d 100644 --- a/src/main/java/net/datafaker/ClashOfClans.java +++ b/src/main/java/net/datafaker/ClashOfClans.java @@ -3,9 +3,9 @@ /** * @since 1.6.0 */ -public class ClashOfClans extends AbstractProvider { +public class ClashOfClans extends AbstractProvider { - protected ClashOfClans(Faker faker) { + protected ClashOfClans(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Code.java b/src/main/java/net/datafaker/Code.java index 66eb86261..8d1f15560 100644 --- a/src/main/java/net/datafaker/Code.java +++ b/src/main/java/net/datafaker/Code.java @@ -11,7 +11,7 @@ * * @since 0.8.0 */ -public class Code extends AbstractProvider { +public class Code extends AbstractProvider { private static final int[] GTIN_8_CHECK_DIGITS = {3, 1, 3, 1, 3, 1, 3}; private static final int[] GTIN_13_CHECK_DIGITS = {1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3}; @@ -20,7 +20,7 @@ public class Code extends AbstractProvider { private static final Pattern HYPHEN = Pattern.compile("-"); - protected Code(Faker faker) { + protected Code(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Coffee.java b/src/main/java/net/datafaker/Coffee.java index f34e73256..099218238 100644 --- a/src/main/java/net/datafaker/Coffee.java +++ b/src/main/java/net/datafaker/Coffee.java @@ -6,9 +6,9 @@ /** * @since 1.5.0 */ -public class Coffee extends AbstractProvider { +public class Coffee extends AbstractProvider { - protected Coffee(Faker faker) { + protected Coffee(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Coin.java b/src/main/java/net/datafaker/Coin.java index 7386b7700..256c9e64e 100644 --- a/src/main/java/net/datafaker/Coin.java +++ b/src/main/java/net/datafaker/Coin.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Coin extends AbstractProvider { +public class Coin extends AbstractProvider { - protected Coin(Faker faker) { + protected Coin(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Color.java b/src/main/java/net/datafaker/Color.java index a096641ef..f75b7c4af 100644 --- a/src/main/java/net/datafaker/Color.java +++ b/src/main/java/net/datafaker/Color.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Color extends AbstractProvider { +public class Color extends AbstractProvider { - protected Color(Faker faker) { + protected Color(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Commerce.java b/src/main/java/net/datafaker/Commerce.java index bbb1b3804..db9cfc7c4 100644 --- a/src/main/java/net/datafaker/Commerce.java +++ b/src/main/java/net/datafaker/Commerce.java @@ -8,12 +8,12 @@ /** * @since 0.8.0 */ -public class Commerce extends AbstractProvider { +public class Commerce extends AbstractProvider { private final DecimalFormatSymbols decimalFormatSymbols; - protected Commerce(Faker faker) { + protected Commerce(BaseFaker faker) { super(faker); - decimalFormatSymbols = new DecimalFormatSymbols(faker.getLocale()); + decimalFormatSymbols = new DecimalFormatSymbols(faker.getContext().getLocale()); } public String department() { diff --git a/src/main/java/net/datafaker/Community.java b/src/main/java/net/datafaker/Community.java index dc58f4b9d..da31613d4 100644 --- a/src/main/java/net/datafaker/Community.java +++ b/src/main/java/net/datafaker/Community.java @@ -5,9 +5,9 @@ * * @since 1.6.0 */ -public class Community extends AbstractProvider { +public class Community extends AbstractProvider { - protected Community(Faker faker) { + protected Community(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Company.java b/src/main/java/net/datafaker/Company.java index 8744afb6e..0d33a2c5e 100644 --- a/src/main/java/net/datafaker/Company.java +++ b/src/main/java/net/datafaker/Company.java @@ -9,11 +9,11 @@ /** * @since 0.8.0 */ -public class Company extends AbstractProvider { +public class Company extends AbstractProvider { private static final Pattern UNWANTED_CHARACTERS = Pattern.compile("[.,' ]"); - protected Company(Faker faker) { + protected Company(BaseFaker faker) { super(faker); } @@ -78,7 +78,7 @@ public String url() { } private String domainName() { - return UNWANTED_CHARACTERS.matcher(name().toLowerCase(faker.getLocale())).replaceAll(""); + return UNWANTED_CHARACTERS.matcher(name().toLowerCase(faker.getContext().getLocale())).replaceAll(""); } private String domainSuffix() { diff --git a/src/main/java/net/datafaker/Computer.java b/src/main/java/net/datafaker/Computer.java index 18574a355..ed1fdb1ec 100644 --- a/src/main/java/net/datafaker/Computer.java +++ b/src/main/java/net/datafaker/Computer.java @@ -5,9 +5,9 @@ * * @since 1.5.0 */ -public class Computer extends AbstractProvider { +public class Computer extends AbstractProvider { - protected Computer(Faker faker) { + protected Computer(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Construction.java b/src/main/java/net/datafaker/Construction.java index a93400193..0b40edad2 100644 --- a/src/main/java/net/datafaker/Construction.java +++ b/src/main/java/net/datafaker/Construction.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class Construction extends AbstractProvider { +public class Construction extends AbstractProvider { - protected Construction(Faker faker) { + protected Construction(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Country.java b/src/main/java/net/datafaker/Country.java index 3c1d7a052..745800fdc 100644 --- a/src/main/java/net/datafaker/Country.java +++ b/src/main/java/net/datafaker/Country.java @@ -3,10 +3,10 @@ /** * @since 0.8.0 */ -public class Country extends AbstractProvider { +public class Country extends AbstractProvider { private final String flagUrl; - protected Country(Faker faker) { + protected Country(BaseFaker faker) { super(faker); this.flagUrl = "https://flags.fmcdn.net/data/flags/w580/"; } diff --git a/src/main/java/net/datafaker/CryptoCoin.java b/src/main/java/net/datafaker/CryptoCoin.java index c90509445..6fbc462ca 100644 --- a/src/main/java/net/datafaker/CryptoCoin.java +++ b/src/main/java/net/datafaker/CryptoCoin.java @@ -3,9 +3,9 @@ /** * @since 1.3.0 */ -public class CryptoCoin extends AbstractProvider { +public class CryptoCoin extends AbstractProvider { - protected CryptoCoin(Faker faker) { + protected CryptoCoin(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Currency.java b/src/main/java/net/datafaker/Currency.java index 1ab037a2a..84d851388 100644 --- a/src/main/java/net/datafaker/Currency.java +++ b/src/main/java/net/datafaker/Currency.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Currency extends AbstractProvider { +public class Currency extends AbstractProvider { - public Currency(Faker faker) { + public Currency(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/DarkSoul.java b/src/main/java/net/datafaker/DarkSoul.java index fe381a545..62b5e885b 100644 --- a/src/main/java/net/datafaker/DarkSoul.java +++ b/src/main/java/net/datafaker/DarkSoul.java @@ -6,9 +6,9 @@ * @since 1.5.0 * @author SickDawn */ -public class DarkSoul extends AbstractProvider { +public class DarkSoul extends AbstractProvider { - public DarkSoul(final Faker faker) { + public DarkSoul(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/DateAndTime.java b/src/main/java/net/datafaker/DateAndTime.java index fe99629ce..17efdc098 100644 --- a/src/main/java/net/datafaker/DateAndTime.java +++ b/src/main/java/net/datafaker/DateAndTime.java @@ -19,11 +19,11 @@ * @author pmiklos * @since 0.8.0 */ -public class DateAndTime extends AbstractProvider { +public class DateAndTime extends AbstractProvider { private static final int DEFAULT_MIN_AGE = 18; private static final int DEFAULT_MAX_AGE = 65; - protected DateAndTime(Faker faker) { + protected DateAndTime(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/DcComics.java b/src/main/java/net/datafaker/DcComics.java index 892aaf843..ede59cd51 100644 --- a/src/main/java/net/datafaker/DcComics.java +++ b/src/main/java/net/datafaker/DcComics.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class DcComics extends AbstractProvider { +public class DcComics extends AbstractProvider { - public DcComics(Faker faker) { + public DcComics(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Demographic.java b/src/main/java/net/datafaker/Demographic.java index 896bc58f9..5332c7279 100644 --- a/src/main/java/net/datafaker/Demographic.java +++ b/src/main/java/net/datafaker/Demographic.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Demographic extends AbstractProvider { +public class Demographic extends AbstractProvider { - protected Demographic(Faker faker) { + protected Demographic(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Departed.java b/src/main/java/net/datafaker/Departed.java index a23859933..c70c7a9ea 100644 --- a/src/main/java/net/datafaker/Departed.java +++ b/src/main/java/net/datafaker/Departed.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class Departed extends AbstractProvider { +public class Departed extends AbstractProvider { - protected Departed(Faker faker) { + protected Departed(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Dessert.java b/src/main/java/net/datafaker/Dessert.java index ddea5f10c..d638ac758 100644 --- a/src/main/java/net/datafaker/Dessert.java +++ b/src/main/java/net/datafaker/Dessert.java @@ -3,9 +3,9 @@ /** * @since 0.9.0 */ -public class Dessert extends AbstractProvider { +public class Dessert extends AbstractProvider { - protected Dessert(Faker faker) { + protected Dessert(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Device.java b/src/main/java/net/datafaker/Device.java index 468d85b50..1be7d4e8c 100644 --- a/src/main/java/net/datafaker/Device.java +++ b/src/main/java/net/datafaker/Device.java @@ -3,9 +3,9 @@ /** * @since 1.4.0 */ -public class Device extends AbstractProvider { +public class Device extends AbstractProvider { - protected Device(Faker faker) { + protected Device(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Disease.java b/src/main/java/net/datafaker/Disease.java index 59047db65..ad0b100b0 100644 --- a/src/main/java/net/datafaker/Disease.java +++ b/src/main/java/net/datafaker/Disease.java @@ -5,14 +5,14 @@ * * @since 0.8.0 */ -public class Disease extends AbstractProvider { +public class Disease extends AbstractProvider { /** * Create a constructor for Disease * * @param faker The Faker instance for generating random, different kinds of disease, e.g. the internal disease. */ - protected Disease(Faker faker) { + protected Disease(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Dog.java b/src/main/java/net/datafaker/Dog.java index 873f1421d..c87193ede 100644 --- a/src/main/java/net/datafaker/Dog.java +++ b/src/main/java/net/datafaker/Dog.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Dog extends AbstractProvider { +public class Dog extends AbstractProvider { - protected Dog(Faker faker) { + protected Dog(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Domain.java b/src/main/java/net/datafaker/Domain.java index d1936410f..1a14189c5 100644 --- a/src/main/java/net/datafaker/Domain.java +++ b/src/main/java/net/datafaker/Domain.java @@ -8,14 +8,14 @@ * * @since 0.9.0 */ -public class Domain extends AbstractProvider { +public class Domain extends AbstractProvider { /** * Instantiates a new Domain. * * @param faker the faker */ - protected Domain(Faker faker) { + protected Domain(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/DragonBall.java b/src/main/java/net/datafaker/DragonBall.java index 0455b027f..506ed80ee 100644 --- a/src/main/java/net/datafaker/DragonBall.java +++ b/src/main/java/net/datafaker/DragonBall.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class DragonBall extends AbstractProvider { +public class DragonBall extends AbstractProvider { - protected DragonBall(Faker faker) { + protected DragonBall(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/DrivingLicense.java b/src/main/java/net/datafaker/DrivingLicense.java index 68bfbc1e1..85785c058 100644 --- a/src/main/java/net/datafaker/DrivingLicense.java +++ b/src/main/java/net/datafaker/DrivingLicense.java @@ -5,9 +5,9 @@ /** * @since 1.5.0 */ -public class DrivingLicense extends AbstractProvider { +public class DrivingLicense extends AbstractProvider { - protected DrivingLicense(Faker faker) { + protected DrivingLicense(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/DumbAndDumber.java b/src/main/java/net/datafaker/DumbAndDumber.java index d12da25e2..6e1ee4de7 100644 --- a/src/main/java/net/datafaker/DumbAndDumber.java +++ b/src/main/java/net/datafaker/DumbAndDumber.java @@ -3,9 +3,9 @@ /** * @since 1.6.0 */ -public class DumbAndDumber extends AbstractProvider { +public class DumbAndDumber extends AbstractProvider { - protected DumbAndDumber(Faker faker) { + protected DumbAndDumber(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Dune.java b/src/main/java/net/datafaker/Dune.java index bd05d0936..965e372d1 100644 --- a/src/main/java/net/datafaker/Dune.java +++ b/src/main/java/net/datafaker/Dune.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Dune extends AbstractProvider { +public class Dune extends AbstractProvider { - protected Dune(Faker faker) { + protected Dune(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Educator.java b/src/main/java/net/datafaker/Educator.java index 7fe2da76a..f5607c938 100644 --- a/src/main/java/net/datafaker/Educator.java +++ b/src/main/java/net/datafaker/Educator.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Educator extends AbstractProvider { +public class Educator extends AbstractProvider { - protected Educator(Faker faker) { + protected Educator(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/EldenRing.java b/src/main/java/net/datafaker/EldenRing.java index 9e1ede354..8582d08b3 100644 --- a/src/main/java/net/datafaker/EldenRing.java +++ b/src/main/java/net/datafaker/EldenRing.java @@ -3,9 +3,9 @@ /** * @since 1.4.0 */ -public class EldenRing extends AbstractProvider { +public class EldenRing extends AbstractProvider { - protected EldenRing(Faker faker) { + protected EldenRing(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/ElderScrolls.java b/src/main/java/net/datafaker/ElderScrolls.java index dcaafa317..f3d4b7503 100644 --- a/src/main/java/net/datafaker/ElderScrolls.java +++ b/src/main/java/net/datafaker/ElderScrolls.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class ElderScrolls extends AbstractProvider { +public class ElderScrolls extends AbstractProvider { - protected ElderScrolls(Faker faker) { + protected ElderScrolls(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/ElectricalComponents.java b/src/main/java/net/datafaker/ElectricalComponents.java index 25afe18ec..2571f1858 100644 --- a/src/main/java/net/datafaker/ElectricalComponents.java +++ b/src/main/java/net/datafaker/ElectricalComponents.java @@ -3,9 +3,9 @@ /** * @since 1.4.0 */ -public class ElectricalComponents extends AbstractProvider { +public class ElectricalComponents extends AbstractProvider { - protected ElectricalComponents(Faker faker) { + protected ElectricalComponents(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Esports.java b/src/main/java/net/datafaker/Esports.java index d86fdbd05..e8bd5a4c0 100644 --- a/src/main/java/net/datafaker/Esports.java +++ b/src/main/java/net/datafaker/Esports.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Esports extends AbstractProvider { +public class Esports extends AbstractProvider { - protected Esports(final Faker faker) { + protected Esports(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/FakeCollection.java b/src/main/java/net/datafaker/FakeCollection.java index c8a05b5bd..e88de8d79 100644 --- a/src/main/java/net/datafaker/FakeCollection.java +++ b/src/main/java/net/datafaker/FakeCollection.java @@ -44,7 +44,7 @@ public static class Builder { private int minLength = -1; // negative means same as maxLength private int maxLength = 10; private double nullRate = 0d; - private Faker faker; + private BaseFaker faker; public Builder() { suppliers = new ArrayList<>(); @@ -59,7 +59,7 @@ public Builder(Supplier... elems) { suppliers = new ArrayList<>(Arrays.asList(elems)); } - public Builder faker(Faker faker) { + public Builder faker(BaseFaker faker) { this.faker = faker; return this; } diff --git a/src/main/java/net/datafaker/FakeDuration.java b/src/main/java/net/datafaker/FakeDuration.java index 437043911..4e4564916 100644 --- a/src/main/java/net/datafaker/FakeDuration.java +++ b/src/main/java/net/datafaker/FakeDuration.java @@ -5,9 +5,9 @@ /** * @since 0.8.0 */ -public class FakeDuration extends AbstractProvider { +public class FakeDuration extends AbstractProvider { - protected FakeDuration(Faker faker) { + protected FakeDuration(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Faker.java b/src/main/java/net/datafaker/Faker.java index b2f6e34c5..07a1b67a0 100644 --- a/src/main/java/net/datafaker/Faker.java +++ b/src/main/java/net/datafaker/Faker.java @@ -1,400 +1,34 @@ package net.datafaker; -import net.datafaker.fileformats.Json; import net.datafaker.service.FakeValuesService; import net.datafaker.service.FakerContext; import net.datafaker.service.RandomService; +import net.datafaker.sport.SportProviders; -import java.nio.file.Path; -import java.util.List; import java.util.Locale; -import java.util.Map; import java.util.Random; -import java.util.concurrent.Callable; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; -import java.util.function.Supplier; - -/** - * Provides utility methods for generating fake strings, such as names, phone - * numbers, addresses. generate random strings with given patterns - * - * @author ren - */ -public class Faker implements IProviders { - private final FakerContext context; - private final FakeValuesService fakeValuesService; - private static final Map, Map> PROVIDERS_MAP = new ConcurrentHashMap<>(); +public class Faker extends BaseFaker implements IProviders, SportProviders { public Faker() { - this(Locale.ENGLISH); } public Faker(Locale locale) { - this(locale, (Random) null); + super(locale); } public Faker(Random random) { - this(Locale.ENGLISH, random); + super(random); } public Faker(Locale locale, Random random) { - this(locale, new RandomService(random)); + super(locale, random); } public Faker(Locale locale, RandomService randomService) { - this(new FakeValuesService(), new FakerContext(locale, randomService)); + super(locale, randomService); } public Faker(FakeValuesService fakeValuesService, FakerContext context) { - this.fakeValuesService = fakeValuesService; - this.context = context; - fakeValuesService.updateFakeValuesInterfaceMap(context.getLocaleChain()); - } - - /** - * Constructs Faker instance with default argument. - * - * @deprecated Use the default constructor instead - * @return {@link Faker#Faker()} - */ - @Deprecated // Use the default constructor instead - public static Faker instance() { - return new Faker(); - } - - /** - * Constructs Faker instance with provided {@link Locale}. - * - * @deprecated Use the contructor with locale instead - * @param locale - {@link Locale} - * @return {@link Faker#Faker(Locale)} - */ - @Deprecated - public static Faker instance(Locale locale) { - return new Faker(locale); - } - - /** - * Constructs Faker instance with provided {@link Random}. - * - * @deprecated Use the contructor with random instead - * @param random - {@link Random} - * @return {@link Faker#Faker(Random)} - */ - @Deprecated - public static Faker instance(Random random) { - return new Faker(random); - } - - /** - * Constructs Faker instance with provided {@link Locale} and {@link Random}. - * - * @deprecated Use the contructor with locale and random instead - * @param locale - {@link Locale} - * @param random - {@link Random} - * @return {@link Faker#Faker(Locale, Random)} - */ - @Deprecated - public static Faker instance(Locale locale, Random random) { - return new Faker(locale, random); - } - - /** - * Returns the internal locale being used, or the ROOT locale if no locale has been set. - * @return Returns locale being used - */ - public Locale getLocale() { - return context.getLocale() == null - ? Locale.ROOT : context.getLocale(); - } - - public FakerContext getContext() { - return context; - } - - public T doWith(Callable callable, Locale locale) { - final Locale current = context.getLocale(); - T result; - try { - context.setCurrentLocale(locale); - fakeValuesService.updateFakeValuesInterfaceMap(context.getLocaleChain()); - result = callable.call(); - return result; - } catch (Throwable t) { - throw new RuntimeException(t); - } finally { - context.setCurrentLocale(current); - fakeValuesService.updateFakeValuesInterfaceMap(context.getLocaleChain()); - } - } - - public T doWith(Callable callable, long seed) { - final RandomService current = context.getRandomService(); - T result; - try { - context.setRandomService(new RandomService(new Random(seed))); - result = callable.call(); - return result; - } catch (Throwable t) { - throw new RuntimeException(t); - } finally { - context.setRandomService(current); - } - } - - public T doWith(Callable callable, Locale locale, long seed) { - final Locale currentLocale = context.getLocale(); - final RandomService currentRandomService = context.getRandomService(); - T result; - try { - context.setRandomService(new RandomService(new Random(seed))); - context.setCurrentLocale(locale); - result = callable.call(); - return result; - } catch (Throwable t) { - throw new RuntimeException(t); - } finally { - context.setRandomService(currentRandomService); - context.setCurrentLocale(currentLocale); - } - } - - - /** - * Returns a string with the '#' characters in the parameter replaced with random digits between 0-9 inclusive. - *

- * For example, the string "ABC##EFG" could be replaced with a string like "ABC99EFG". - * - * @param numberString Template for string generation - * @return Generated string - */ - public String numerify(String numberString) { - return fakeValuesService.numerify(numberString, context); - } - - /** - * Returns a string with the '?' characters in the parameter replaced with random alphabetic - * characters. - *

- * For example, the string "12??34" could be replaced with a string like "12AB34". - * - * @param letterString Template for string generation - * @return Generated string. - */ - public String letterify(String letterString) { - return fakeValuesService.letterify(letterString, context); - } - - /** - * Returns a string with the '?' characters in the parameter replaced with random alphabetic - * characters. - *

- * For example, the string "12??34" could be replaced with a string like "12AB34". - */ - public String letterify(String letterString, boolean isUpper) { - return fakeValuesService.letterify(letterString, context, isUpper); - } - - /** - * Applies both a {@link #numerify(String)} and a {@link #letterify(String)} - * over the incoming string. - */ - public String bothify(String string) { - return fakeValuesService.bothify(string, context); - } - - /** - * Applies both a {@link #numerify(String)} and a {@link #letterify(String)} - * over the incoming string. - */ - public String bothify(String string, boolean isUpper) { - return fakeValuesService.bothify(string, context, isUpper); - } - - /** - * Generates a String that matches the given regular expression. - */ - public String regexify(String regex) { - return fakeValuesService.regexify(regex, context); - } - - /** - * Generates a String by example. The output string will have the same pattern as the input string. - *

- * For example: - * "AAA" becomes "KRA" - * "abc" becomes "uio" - * "948" becomes "345" - * "A19c" becomes "Z20d" - * - * @param example The input string - * @return The output string based on the input pattern - */ - public String examplify(String example) { - return fakeValuesService.examplify(example, context); - } - - /** - * Returns a string with the char2replace characters in the parameter replaced with random option from available options. - *

- * For example, the string "ABC??EFG" could be replaced with a string like "ABCtestтестEFG" - * if passed options are new String[]{"test", "тест"}. - * - * @param string Template for string generation - * @param char2replace Char to replace - * @param options Options to use while filling the template - * @return Generated string - */ - public String templatify(String string, char char2replace, String... options) { - return fakeValuesService().templatify(string, char2replace, context, options); - } - - /** - * Returns a string with the characters in the keys of optionsMap parameter replaced with random option from values. - * - *

- * For example, the string "ABC$$EFG" could be replaced with a string like "ABCtestтестEFG" - * if passed for key '$' there is value new String[]{"test", "тест"} in optionsMap - * - * @param string Template for string generation - * @param optionsMap Map with replacement rules - * @return Generated string - */ - public String templatify(String string, Map optionsMap) { - return fakeValuesService().templatify(string, optionsMap, context); - } - - /** - * Returns a string with generated csv based number of lines and column expressions. - * This method will use comma as default delimiter, always prints header and double quote as default quote. - * - *

- * For example, it could generate - * "name_column","last_name_column" - * "Sabrina","Kihn" - *

- * for expression {@code faker.expression("#{csv '1','name_column','#{Name.first_name}','last_name_column','#{Name.last_name}'}");} - * - * @param limit Number of lines - * @param columnExpressions Even number of expressions. - * The odd numbers args are used for columns names, and even for column values. - * @return Generated string - */ - public String csv(int limit, String ... columnExpressions) { - return fakeValuesService().csv(limit, columnExpressions); - } - - /** - * Returns a string with generated csv based number of lines and column expressions. - * - *

- * For example, it could generate - * "Thad" ### "Crist" - * "Kathryne" ### "Wuckert" - * "Sybil" ### "Connelly" - *

- * for expression {@code faker.expression("#{csv ' ### ','"','false','3','name_column','#{Name.first_name}','last_name_column','#{Name.last_name}'}");} - * - * @param separator Delimiter to use - * @param quote Quote to use - * @param withHeader Print header or not - * @param limit Number of lines - * @param columnExpressions Even number of expressions. - * The odd numbers args are used for columns names, and even for column values. - * @return Generated string - */ - public String csv(String separator, char quote, boolean withHeader, int limit, String ... columnExpressions) { - return fakeValuesService().csv(separator, quote, withHeader, limit, columnExpressions); - } - - public Json json(String... fieldExpressions) { - return fakeValuesService().json(fieldExpressions); - } - - public Json jsona(String... fieldExpressions) { - return fakeValuesService().jsona(fieldExpressions); - } - - public RandomService random() { - return this.context.getRandomService(); - } - - FakeValuesService fakeValuesService() { - return this.fakeValuesService; - } - - /** - * Allows to add paths to files with custom data. Data should be in YAML format. - * - * @param locale the locale for which a path is going to be added. - * @param path path to a file with YAML structure - * @throws IllegalArgumentException in case of invalid path - */ - public void addPath(Locale locale, Path path) { - fakeValuesService().addPath(locale, path); - } - - @SuppressWarnings("unchecked") - public static T getProvider(Class clazz, Function valueSupplier, Faker faker) { - PROVIDERS_MAP.putIfAbsent(clazz, new ConcurrentHashMap<>()); - Map map = PROVIDERS_MAP.get(clazz); - T result = (T) map.get(faker.getContext()); - if (result == null) { - result = valueSupplier.apply(faker); - map.putIfAbsent(faker.getContext(), result); - } - return result; - } - - /** - * - * @return builder to build {@code FakeCollection} - */ - public FakeCollection.Builder collection() { - return new FakeCollection.Builder().faker(this); - } - - @SafeVarargs - public final FakeCollection.Builder collection(Supplier... suppliers) { - return new FakeCollection.Builder<>(suppliers).faker(this); - } - - public final FakeCollection.Builder collection(List> suppliers) { - return new FakeCollection.Builder<>(suppliers).faker(this); - } - - public String resolve(String key) { - return this.fakeValuesService.resolve(key, this, this, context); - } - - public String resolve(String key, Supplier message) { - return this.fakeValuesService.resolve(key, this, this, message, context); - } - - /** - * Allows the evaluation of native YML expressions to allow you to build your - * own. - *

- * The following are valid expressions: - *

    - *
  • #{regexify '(a|b){2,3}'}
  • - *
  • #{regexify '\\.\\*\\?\\+'}
  • - *
  • #{bothify '????','false'}
  • - *
  • #{Name.first_name} #{Name.first_name} #{Name.last_name}
  • - *
  • #{number.number_between '1','10'}
  • - *
- * - * @param expression (see examples above) - * @return the evaluated string expression - * @throws RuntimeException if unable to evaluate the expression - */ - public String expression(String expression) { - return this.fakeValuesService.expression(expression, this, getContext()); - } - - @Override - public final Faker getFaker() { - return this; + super(fakeValuesService, context); } } diff --git a/src/main/java/net/datafaker/Fallout.java b/src/main/java/net/datafaker/Fallout.java index 6bd120c03..e56958582 100644 --- a/src/main/java/net/datafaker/Fallout.java +++ b/src/main/java/net/datafaker/Fallout.java @@ -5,9 +5,9 @@ * * @since 1.6.0 */ -public class Fallout extends AbstractProvider { +public class Fallout extends AbstractProvider { - protected Fallout(Faker faker) { + protected Fallout(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/FamousLastWords.java b/src/main/java/net/datafaker/FamousLastWords.java index 82edfa430..6745ad20a 100644 --- a/src/main/java/net/datafaker/FamousLastWords.java +++ b/src/main/java/net/datafaker/FamousLastWords.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class FamousLastWords extends AbstractProvider { +public class FamousLastWords extends AbstractProvider { - protected FamousLastWords(Faker faker) { + protected FamousLastWords(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/File.java b/src/main/java/net/datafaker/File.java index 30a9aa43d..4bdb85e4d 100644 --- a/src/main/java/net/datafaker/File.java +++ b/src/main/java/net/datafaker/File.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class File extends AbstractProvider { +public class File extends AbstractProvider { - protected File(Faker faker) { + protected File(BaseFaker faker) { super(faker); } @@ -24,7 +24,7 @@ public String fileName() { public String fileName(String dirOrNull, String nameOrNull, String extensionOrNull, String separatorOrNull) { final String sep = separatorOrNull == null ? System.getProperty("file.separator") : separatorOrNull; final String dir = dirOrNull == null ? faker.internet().slug() : dirOrNull; - final String name = nameOrNull == null ? faker.lorem().word().toLowerCase(faker.getLocale()) : nameOrNull; + final String name = nameOrNull == null ? faker.lorem().word().toLowerCase(faker.getContext().getLocale()) : nameOrNull; final String ext = extensionOrNull == null ? extension() : extensionOrNull; return dir + sep + name + "." + ext; } diff --git a/src/main/java/net/datafaker/FinalSpace.java b/src/main/java/net/datafaker/FinalSpace.java index 85857d405..e8fd4632f 100644 --- a/src/main/java/net/datafaker/FinalSpace.java +++ b/src/main/java/net/datafaker/FinalSpace.java @@ -5,9 +5,9 @@ * * @since 1.6.0 */ -public class FinalSpace extends AbstractProvider { +public class FinalSpace extends AbstractProvider { - protected FinalSpace(Faker faker) { + protected FinalSpace(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Finance.java b/src/main/java/net/datafaker/Finance.java index a9212fafa..54bd0b2e4 100644 --- a/src/main/java/net/datafaker/Finance.java +++ b/src/main/java/net/datafaker/Finance.java @@ -7,11 +7,11 @@ /** * @since 0.8.0 */ -public class Finance extends AbstractProvider { +public class Finance extends AbstractProvider { private static final Pattern NUMBERS = Pattern.compile("[^0-9]"); private static final Pattern EMPTY_STRING = Pattern.compile(""); - protected Finance(Faker faker) { + protected Finance(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Food.java b/src/main/java/net/datafaker/Food.java index f8388aa61..30e7ce09e 100644 --- a/src/main/java/net/datafaker/Food.java +++ b/src/main/java/net/datafaker/Food.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Food extends AbstractProvider { +public class Food extends AbstractProvider { - protected Food(Faker faker) { + protected Food(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Friends.java b/src/main/java/net/datafaker/Friends.java index 33f2ad6ef..442ad9679 100644 --- a/src/main/java/net/datafaker/Friends.java +++ b/src/main/java/net/datafaker/Friends.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Friends extends AbstractProvider { +public class Friends extends AbstractProvider { - protected Friends(Faker faker) { + protected Friends(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/FunnyName.java b/src/main/java/net/datafaker/FunnyName.java index 188a427c1..eca2917c5 100644 --- a/src/main/java/net/datafaker/FunnyName.java +++ b/src/main/java/net/datafaker/FunnyName.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class FunnyName extends AbstractProvider { +public class FunnyName extends AbstractProvider { - protected FunnyName(Faker faker) { + protected FunnyName(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/GameOfThrones.java b/src/main/java/net/datafaker/GameOfThrones.java index fb265b333..d6a4bfa26 100644 --- a/src/main/java/net/datafaker/GameOfThrones.java +++ b/src/main/java/net/datafaker/GameOfThrones.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class GameOfThrones extends AbstractProvider { +public class GameOfThrones extends AbstractProvider { - protected GameOfThrones(Faker faker) { + protected GameOfThrones(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/GarmentSize.java b/src/main/java/net/datafaker/GarmentSize.java index abc59971c..f90a04eb6 100644 --- a/src/main/java/net/datafaker/GarmentSize.java +++ b/src/main/java/net/datafaker/GarmentSize.java @@ -6,9 +6,9 @@ * @since 1.6.0 */ -public class GarmentSize extends AbstractProvider { +public class GarmentSize extends AbstractProvider { - protected GarmentSize(Faker faker) { + protected GarmentSize(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Gender.java b/src/main/java/net/datafaker/Gender.java index f39f447b8..93d78daff 100644 --- a/src/main/java/net/datafaker/Gender.java +++ b/src/main/java/net/datafaker/Gender.java @@ -5,9 +5,9 @@ * * @since 0.8.0 */ -public class Gender extends AbstractProvider { +public class Gender extends AbstractProvider { - protected Gender(Faker faker) { + protected Gender(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Ghostbusters.java b/src/main/java/net/datafaker/Ghostbusters.java index ea1948457..ccd441800 100644 --- a/src/main/java/net/datafaker/Ghostbusters.java +++ b/src/main/java/net/datafaker/Ghostbusters.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class Ghostbusters extends AbstractProvider { +public class Ghostbusters extends AbstractProvider { - protected Ghostbusters(Faker faker) { + protected Ghostbusters(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/GratefulDead.java b/src/main/java/net/datafaker/GratefulDead.java index c65d68626..3dd4ca005 100644 --- a/src/main/java/net/datafaker/GratefulDead.java +++ b/src/main/java/net/datafaker/GratefulDead.java @@ -6,9 +6,9 @@ * * @since 1.4.0 */ -public class GratefulDead extends AbstractProvider { +public class GratefulDead extends AbstractProvider { - protected GratefulDead(Faker faker) { + protected GratefulDead(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/GreekPhilosopher.java b/src/main/java/net/datafaker/GreekPhilosopher.java index cd26e5e47..791e58517 100644 --- a/src/main/java/net/datafaker/GreekPhilosopher.java +++ b/src/main/java/net/datafaker/GreekPhilosopher.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class GreekPhilosopher extends AbstractProvider { +public class GreekPhilosopher extends AbstractProvider { - protected GreekPhilosopher(Faker faker) { + protected GreekPhilosopher(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Hacker.java b/src/main/java/net/datafaker/Hacker.java index ecc3a5f6d..a5d38d9d1 100644 --- a/src/main/java/net/datafaker/Hacker.java +++ b/src/main/java/net/datafaker/Hacker.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Hacker extends AbstractProvider { +public class Hacker extends AbstractProvider { - protected Hacker(Faker faker) { + protected Hacker(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/HarryPotter.java b/src/main/java/net/datafaker/HarryPotter.java index c8b7a1236..2f555018b 100644 --- a/src/main/java/net/datafaker/HarryPotter.java +++ b/src/main/java/net/datafaker/HarryPotter.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class HarryPotter extends AbstractProvider { +public class HarryPotter extends AbstractProvider { - protected HarryPotter(final Faker faker) { + protected HarryPotter(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Hashing.java b/src/main/java/net/datafaker/Hashing.java index 374d85625..f63aa7800 100644 --- a/src/main/java/net/datafaker/Hashing.java +++ b/src/main/java/net/datafaker/Hashing.java @@ -8,9 +8,9 @@ /** * @since 0.8.0 */ -public class Hashing extends AbstractProvider { +public class Hashing extends AbstractProvider { - protected Hashing(Faker faker) { + protected Hashing(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Hearthstone.java b/src/main/java/net/datafaker/Hearthstone.java index fed89d360..e44a727c9 100644 --- a/src/main/java/net/datafaker/Hearthstone.java +++ b/src/main/java/net/datafaker/Hearthstone.java @@ -3,9 +3,9 @@ /** * @since 0.9.0 */ -public class Hearthstone extends AbstractProvider { +public class Hearthstone extends AbstractProvider { - protected Hearthstone(final Faker faker) { + protected Hearthstone(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/HeyArnold.java b/src/main/java/net/datafaker/HeyArnold.java index 1c6d2e528..21b61a7fd 100644 --- a/src/main/java/net/datafaker/HeyArnold.java +++ b/src/main/java/net/datafaker/HeyArnold.java @@ -5,9 +5,9 @@ * * @since 1.4.0 */ -public class HeyArnold extends AbstractProvider { +public class HeyArnold extends AbstractProvider { - protected HeyArnold(Faker faker) { + protected HeyArnold(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Hipster.java b/src/main/java/net/datafaker/Hipster.java index 8e68b1eb2..654d07f0c 100644 --- a/src/main/java/net/datafaker/Hipster.java +++ b/src/main/java/net/datafaker/Hipster.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Hipster extends AbstractProvider { +public class Hipster extends AbstractProvider { - protected Hipster(final Faker faker) { + protected Hipster(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/HitchhikersGuideToTheGalaxy.java b/src/main/java/net/datafaker/HitchhikersGuideToTheGalaxy.java index e5d8bb151..ec7f77f70 100644 --- a/src/main/java/net/datafaker/HitchhikersGuideToTheGalaxy.java +++ b/src/main/java/net/datafaker/HitchhikersGuideToTheGalaxy.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class HitchhikersGuideToTheGalaxy extends AbstractProvider { +public class HitchhikersGuideToTheGalaxy extends AbstractProvider { - protected HitchhikersGuideToTheGalaxy(Faker faker) { + protected HitchhikersGuideToTheGalaxy(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Hobbit.java b/src/main/java/net/datafaker/Hobbit.java index c3e118c64..ba529df12 100644 --- a/src/main/java/net/datafaker/Hobbit.java +++ b/src/main/java/net/datafaker/Hobbit.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Hobbit extends AbstractProvider { +public class Hobbit extends AbstractProvider { - protected Hobbit(Faker faker) { + protected Hobbit(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Hobby.java b/src/main/java/net/datafaker/Hobby.java index 069454e49..9fc979fc0 100644 --- a/src/main/java/net/datafaker/Hobby.java +++ b/src/main/java/net/datafaker/Hobby.java @@ -3,9 +3,9 @@ /** * @since 1.3.0 */ -public class Hobby extends AbstractProvider { +public class Hobby extends AbstractProvider { - protected Hobby(Faker faker) { + protected Hobby(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Hololive.java b/src/main/java/net/datafaker/Hololive.java index 3cac4271d..b295fb2e1 100644 --- a/src/main/java/net/datafaker/Hololive.java +++ b/src/main/java/net/datafaker/Hololive.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class Hololive extends AbstractProvider { +public class Hololive extends AbstractProvider { - protected Hololive(Faker faker) { + protected Hololive(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Horse.java b/src/main/java/net/datafaker/Horse.java index 5be80aadf..4151cae20 100644 --- a/src/main/java/net/datafaker/Horse.java +++ b/src/main/java/net/datafaker/Horse.java @@ -3,9 +3,9 @@ /** * @since 1.3.0 */ -public class Horse extends AbstractProvider { +public class Horse extends AbstractProvider { - protected Horse(Faker faker) { + protected Horse(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/House.java b/src/main/java/net/datafaker/House.java index 43e47989f..ceaccfdee 100644 --- a/src/main/java/net/datafaker/House.java +++ b/src/main/java/net/datafaker/House.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class House extends AbstractProvider { +public class House extends AbstractProvider { - protected House(Faker faker) { + protected House(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/HowIMetYourMother.java b/src/main/java/net/datafaker/HowIMetYourMother.java index 9b10b2507..c230017c1 100644 --- a/src/main/java/net/datafaker/HowIMetYourMother.java +++ b/src/main/java/net/datafaker/HowIMetYourMother.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class HowIMetYourMother extends AbstractProvider { +public class HowIMetYourMother extends AbstractProvider { - protected HowIMetYourMother(Faker faker) { + protected HowIMetYourMother(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/IProviders.java b/src/main/java/net/datafaker/IProviders.java index 9d0a3454d..e33600d6f 100644 --- a/src/main/java/net/datafaker/IProviders.java +++ b/src/main/java/net/datafaker/IProviders.java @@ -1,16 +1,10 @@ package net.datafaker; -import java.util.function.Function; /** - * The interface to register providers for {@link Faker}. + * The interface to register providers for {@link BaseFaker}. */ -public interface IProviders { - Faker getFaker(); - - default T getProvider(Class clazz, Function valueSupplier) { - return Faker.getProvider(clazz, valueSupplier, getFaker()); - } +public interface IProviders extends ProviderRegistration { default Address address() { return getProvider(Address.class, Address::new); @@ -68,10 +62,6 @@ default Barcode barcode() { return getProvider(Barcode.class, Barcode::new); } - default Basketball basketball() { - return getProvider(Basketball.class, Basketball::new); - } - default Battlefield1 battlefield1() { return getProvider(Battlefield1.class, Battlefield1::new); } @@ -276,10 +266,6 @@ default ElderScrolls elderScrolls() { return getProvider(ElderScrolls.class, ElderScrolls::new); } - default EnglandFootBall englandfootball() { - return getProvider(EnglandFootBall.class, EnglandFootBall::new); - } - default ElectricalComponents electricalComponents() { return getProvider(ElectricalComponents.class, ElectricalComponents::new); } @@ -316,14 +302,6 @@ default Food food() { return getProvider(Food.class, Food::new); } - default Football football() { - return getProvider(Football.class, Football::new); - } - - default Formula1 formula1() { - return getProvider(Formula1.class, Formula1::new); - } - default Friends friends() { return getProvider(Friends.class, Friends::new); } @@ -697,10 +675,6 @@ default Verb verb() { return getProvider(Verb.class, Verb::new); } - default Volleyball volleyball() { - return getProvider(Volleyball.class, Volleyball::new); - } - default Weather weather() { return getProvider(Weather.class, Weather::new); } diff --git a/src/main/java/net/datafaker/IdNumber.java b/src/main/java/net/datafaker/IdNumber.java index d4e464dd8..ff8440170 100644 --- a/src/main/java/net/datafaker/IdNumber.java +++ b/src/main/java/net/datafaker/IdNumber.java @@ -1,8 +1,5 @@ package net.datafaker; -import java.time.LocalDate; -import java.time.ZoneId; - import net.datafaker.idnumbers.EnIdNumber; import net.datafaker.idnumbers.EnZAIdNumber; import net.datafaker.idnumbers.EsMXIdNumber; @@ -14,12 +11,15 @@ import net.datafaker.idnumbers.SvSEIdNumber; import net.datafaker.idnumbers.ZhCnIdNumber; +import java.time.LocalDate; +import java.time.ZoneId; + /** * @since 0.8.0 */ -public class IdNumber extends AbstractProvider { +public class IdNumber extends AbstractProvider { - protected IdNumber(Faker faker) { + protected IdNumber(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/IndustrySegments.java b/src/main/java/net/datafaker/IndustrySegments.java index ad33fb785..e03390e8b 100644 --- a/src/main/java/net/datafaker/IndustrySegments.java +++ b/src/main/java/net/datafaker/IndustrySegments.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class IndustrySegments extends AbstractProvider { +public class IndustrySegments extends AbstractProvider { - protected IndustrySegments(Faker faker) { + protected IndustrySegments(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Internet.java b/src/main/java/net/datafaker/Internet.java index 637a1b6ea..972a4fee9 100644 --- a/src/main/java/net/datafaker/Internet.java +++ b/src/main/java/net/datafaker/Internet.java @@ -21,11 +21,11 @@ /** * @since 0.8.0 */ -public class Internet extends AbstractProvider { +public class Internet extends AbstractProvider { private static final Pattern SINGLE_QUOTE = Pattern.compile("'"); private static final Pattern COLON = Pattern.compile(":"); - protected Internet(Faker faker) { + protected Internet(BaseFaker faker) { super(faker); } @@ -408,7 +408,7 @@ public enum UserAgent { this.browserName = browserName; } - private static UserAgent any(Faker faker) { + private static UserAgent any(IProviders faker) { UserAgent[] agents = UserAgent.values(); int randomIndex = (int) (faker.random().nextDouble() * agents.length); return agents[randomIndex]; diff --git a/src/main/java/net/datafaker/Job.java b/src/main/java/net/datafaker/Job.java index 6c3baf35e..1e4948089 100644 --- a/src/main/java/net/datafaker/Job.java +++ b/src/main/java/net/datafaker/Job.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Job extends AbstractProvider { +public class Job extends AbstractProvider { - public Job(final Faker faker) { + public Job(final IProviders faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Kaamelott.java b/src/main/java/net/datafaker/Kaamelott.java index 38a64563b..eb21b5658 100644 --- a/src/main/java/net/datafaker/Kaamelott.java +++ b/src/main/java/net/datafaker/Kaamelott.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Kaamelott extends AbstractProvider { +public class Kaamelott extends AbstractProvider { - protected Kaamelott(Faker faker) { + protected Kaamelott(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Kpop.java b/src/main/java/net/datafaker/Kpop.java index bfa01a249..bc4c2f0de 100644 --- a/src/main/java/net/datafaker/Kpop.java +++ b/src/main/java/net/datafaker/Kpop.java @@ -5,9 +5,9 @@ * * @since 1.3.0 */ -public class Kpop extends AbstractProvider { +public class Kpop extends AbstractProvider { - protected Kpop(Faker faker) { + protected Kpop(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/LeagueOfLegends.java b/src/main/java/net/datafaker/LeagueOfLegends.java index e6a5331e4..2a42f53c0 100644 --- a/src/main/java/net/datafaker/LeagueOfLegends.java +++ b/src/main/java/net/datafaker/LeagueOfLegends.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class LeagueOfLegends extends AbstractProvider { +public class LeagueOfLegends extends AbstractProvider { - protected LeagueOfLegends(Faker faker) { + protected LeagueOfLegends(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Lebowski.java b/src/main/java/net/datafaker/Lebowski.java index 40ed63538..0273b6fed 100644 --- a/src/main/java/net/datafaker/Lebowski.java +++ b/src/main/java/net/datafaker/Lebowski.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Lebowski extends AbstractProvider { +public class Lebowski extends AbstractProvider { - public Lebowski(final Faker faker) { + public Lebowski(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/LordOfTheRings.java b/src/main/java/net/datafaker/LordOfTheRings.java index 176923035..fbf379ffc 100644 --- a/src/main/java/net/datafaker/LordOfTheRings.java +++ b/src/main/java/net/datafaker/LordOfTheRings.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class LordOfTheRings extends AbstractProvider { +public class LordOfTheRings extends AbstractProvider { - protected LordOfTheRings(final Faker faker) { + protected LordOfTheRings(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Lorem.java b/src/main/java/net/datafaker/Lorem.java index 693f31b3a..4f924bfef 100644 --- a/src/main/java/net/datafaker/Lorem.java +++ b/src/main/java/net/datafaker/Lorem.java @@ -8,9 +8,9 @@ /** * @since 0.8.0 */ -public class Lorem extends AbstractProvider { +public class Lorem extends AbstractProvider { - protected Lorem(Faker faker) { + protected Lorem(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Marketing.java b/src/main/java/net/datafaker/Marketing.java index 516343620..79f949449 100644 --- a/src/main/java/net/datafaker/Marketing.java +++ b/src/main/java/net/datafaker/Marketing.java @@ -5,9 +5,9 @@ * * @since 1.2.0 */ -public class Marketing extends AbstractProvider { +public class Marketing extends AbstractProvider { - protected Marketing(Faker faker) { + protected Marketing(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/MassEffect.java b/src/main/java/net/datafaker/MassEffect.java index 1b67ee0a1..6e740471f 100644 --- a/src/main/java/net/datafaker/MassEffect.java +++ b/src/main/java/net/datafaker/MassEffect.java @@ -5,8 +5,8 @@ * * @since 1.6.0 */ -public class MassEffect extends AbstractProvider { - protected MassEffect(Faker faker) { +public class MassEffect extends AbstractProvider { + protected MassEffect(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Matz.java b/src/main/java/net/datafaker/Matz.java index 2d30810bc..3f128428e 100644 --- a/src/main/java/net/datafaker/Matz.java +++ b/src/main/java/net/datafaker/Matz.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Matz extends AbstractProvider { +public class Matz extends AbstractProvider { - protected Matz(final Faker faker) { + protected Matz(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Mbti.java b/src/main/java/net/datafaker/Mbti.java index 4e27b959e..51f7b0252 100644 --- a/src/main/java/net/datafaker/Mbti.java +++ b/src/main/java/net/datafaker/Mbti.java @@ -5,11 +5,11 @@ * * @since 1.5.0 */ -public class Mbti extends AbstractProvider { +public class Mbti extends AbstractProvider { private final String choice; - public Mbti(final Faker faker) { + public Mbti(final BaseFaker faker) { super(faker); this.choice = this.faker.resolve("mbti.choice"); } diff --git a/src/main/java/net/datafaker/Measurement.java b/src/main/java/net/datafaker/Measurement.java index aff21cfbe..969036525 100644 --- a/src/main/java/net/datafaker/Measurement.java +++ b/src/main/java/net/datafaker/Measurement.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class Measurement extends AbstractProvider { +public class Measurement extends AbstractProvider { - protected Measurement(Faker faker) { + protected Measurement(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Medical.java b/src/main/java/net/datafaker/Medical.java index 9e9bd56f6..0031d5de0 100644 --- a/src/main/java/net/datafaker/Medical.java +++ b/src/main/java/net/datafaker/Medical.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Medical extends AbstractProvider { +public class Medical extends AbstractProvider { - protected Medical(Faker faker) { + protected Medical(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Military.java b/src/main/java/net/datafaker/Military.java index b425079d6..0c44cd86d 100644 --- a/src/main/java/net/datafaker/Military.java +++ b/src/main/java/net/datafaker/Military.java @@ -5,9 +5,9 @@ * * @since 1.2.0 */ -public class Military extends AbstractProvider { +public class Military extends AbstractProvider { - protected Military(Faker faker) { + protected Military(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Minecraft.java b/src/main/java/net/datafaker/Minecraft.java index ac4c5252a..18422748f 100644 --- a/src/main/java/net/datafaker/Minecraft.java +++ b/src/main/java/net/datafaker/Minecraft.java @@ -3,9 +3,9 @@ /** * @since 0.9.0 */ -public class Minecraft extends AbstractProvider { +public class Minecraft extends AbstractProvider { - public Minecraft(Faker faker) { + public Minecraft(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Money.java b/src/main/java/net/datafaker/Money.java index f394acff9..2aa2f93e9 100644 --- a/src/main/java/net/datafaker/Money.java +++ b/src/main/java/net/datafaker/Money.java @@ -5,9 +5,9 @@ * * @since 1.5.0 */ -public class Money extends AbstractProvider { +public class Money extends AbstractProvider { - public Money(Faker faker) { + public Money(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Mood.java b/src/main/java/net/datafaker/Mood.java index 970861399..378c67b14 100644 --- a/src/main/java/net/datafaker/Mood.java +++ b/src/main/java/net/datafaker/Mood.java @@ -3,9 +3,9 @@ /** * @since 0.9.0 */ -public class Mood extends AbstractProvider { +public class Mood extends AbstractProvider { - protected Mood(Faker faker) { + protected Mood(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Mountain.java b/src/main/java/net/datafaker/Mountain.java index a2919bdfc..8deec2908 100644 --- a/src/main/java/net/datafaker/Mountain.java +++ b/src/main/java/net/datafaker/Mountain.java @@ -5,9 +5,9 @@ * * @since 1.1.0 */ -public class Mountain extends AbstractProvider { +public class Mountain extends AbstractProvider { - protected Mountain(Faker faker) { + protected Mountain(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Mountaineering.java b/src/main/java/net/datafaker/Mountaineering.java index f52674503..00819dd02 100644 --- a/src/main/java/net/datafaker/Mountaineering.java +++ b/src/main/java/net/datafaker/Mountaineering.java @@ -5,9 +5,9 @@ * * @since 1.4.0 */ -public class Mountaineering extends AbstractProvider { +public class Mountaineering extends AbstractProvider { - protected Mountaineering(Faker faker) { + protected Mountaineering(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Movie.java b/src/main/java/net/datafaker/Movie.java index 9768bca5d..6475069be 100644 --- a/src/main/java/net/datafaker/Movie.java +++ b/src/main/java/net/datafaker/Movie.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class Movie extends AbstractProvider { +public class Movie extends AbstractProvider { - protected Movie(Faker faker) { + protected Movie(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Music.java b/src/main/java/net/datafaker/Music.java index 6ece70017..31d95b5bc 100644 --- a/src/main/java/net/datafaker/Music.java +++ b/src/main/java/net/datafaker/Music.java @@ -3,13 +3,13 @@ /** * @since 0.8.0 */ -public class Music extends AbstractProvider { +public class Music extends AbstractProvider { private static final String[] KEYS = new String[]{"C", "D", "E", "F", "G", "A", "B"}; private static final String[] KEY_VARIANTS = new String[]{"b", "#", ""}; private static final String[] CHORD_TYPES = new String[]{"", "maj", "6", "maj7", "m", "m7", "-7", "7", "dom7", "dim", "dim7", "m7b5"}; - protected Music(Faker faker) { + protected Music(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Name.java b/src/main/java/net/datafaker/Name.java index 617bc9205..3963b0baa 100644 --- a/src/main/java/net/datafaker/Name.java +++ b/src/main/java/net/datafaker/Name.java @@ -3,13 +3,13 @@ /** * @since 0.8.0 */ -public class Name extends AbstractProvider { +public class Name extends AbstractProvider { /** * Internal constructor, not to be used by clients. Instances of {@link Name} should be accessed via - * {@link Faker#name()}. + * {@link BaseFaker#name()}. */ - protected Name(Faker faker) { + protected Name(BaseFaker faker) { super(faker); } @@ -123,7 +123,7 @@ public String title() { public String username() { StringBuilder result = new StringBuilder(); - final String firstName = firstName().toLowerCase(faker.getLocale()) + "." + lastName().toLowerCase(faker.getLocale()); + final String firstName = firstName().toLowerCase(faker.getContext().getLocale()) + "." + lastName().toLowerCase(faker.getContext().getLocale()); for (int i = 0; i < firstName.length(); i++) { final char c = firstName.charAt(i); if (c == '\'' || Character.isWhitespace(c)) { diff --git a/src/main/java/net/datafaker/Nation.java b/src/main/java/net/datafaker/Nation.java index 9c28b82a1..53e50b9b8 100644 --- a/src/main/java/net/datafaker/Nation.java +++ b/src/main/java/net/datafaker/Nation.java @@ -10,11 +10,11 @@ /** * @since 0.8.0 */ -public class Nation extends AbstractProvider { +public class Nation extends AbstractProvider { private static final Charset UTF8_CHARSET = StandardCharsets.UTF_8; - protected Nation(Faker faker) { + protected Nation(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/NatoPhoneticAlphabet.java b/src/main/java/net/datafaker/NatoPhoneticAlphabet.java index 133236f5a..0df40e9f1 100644 --- a/src/main/java/net/datafaker/NatoPhoneticAlphabet.java +++ b/src/main/java/net/datafaker/NatoPhoneticAlphabet.java @@ -5,9 +5,9 @@ * * @since 1.2.0 */ -public class NatoPhoneticAlphabet extends AbstractProvider { +public class NatoPhoneticAlphabet extends AbstractProvider { - protected NatoPhoneticAlphabet(Faker faker) { + protected NatoPhoneticAlphabet(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Nigeria.java b/src/main/java/net/datafaker/Nigeria.java index d7a95932c..be17e0504 100644 --- a/src/main/java/net/datafaker/Nigeria.java +++ b/src/main/java/net/datafaker/Nigeria.java @@ -5,10 +5,10 @@ * * @since 1.2.0 */ -public class Nigeria extends AbstractProvider { +public class Nigeria extends AbstractProvider { private static final String KEY = "nigeria"; - protected Nigeria(Faker faker) { + protected Nigeria(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Number.java b/src/main/java/net/datafaker/Number.java index 093fcbd37..fc4481eb8 100644 --- a/src/main/java/net/datafaker/Number.java +++ b/src/main/java/net/datafaker/Number.java @@ -6,9 +6,9 @@ /** * @since 0.8.0 */ -public class Number extends AbstractProvider { +public class Number extends AbstractProvider { - protected Number(Faker faker) { + protected Number(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Options.java b/src/main/java/net/datafaker/Options.java index 353e9e1fc..4d01e38df 100644 --- a/src/main/java/net/datafaker/Options.java +++ b/src/main/java/net/datafaker/Options.java @@ -10,9 +10,9 @@ /** * @since 0.8.0 */ -public class Options extends AbstractProvider { +public class Options extends AbstractProvider { - protected Options(Faker faker) { + protected Options(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/OscarMovie.java b/src/main/java/net/datafaker/OscarMovie.java index 386219889..2681cb450 100644 --- a/src/main/java/net/datafaker/OscarMovie.java +++ b/src/main/java/net/datafaker/OscarMovie.java @@ -6,7 +6,7 @@ * @author ak-maker * @since 1.4.0 */ -public class OscarMovie extends AbstractProvider { +public class OscarMovie extends AbstractProvider { private final String year; private final String choice; @@ -19,7 +19,7 @@ public class OscarMovie extends AbstractProvider { * * @param faker faker The Faker instance for generating random names of things. */ - protected OscarMovie(final Faker faker) { + protected OscarMovie(final BaseFaker faker) { super(faker); this.year = this.faker.resolve("oscar_movie.year.years"); this.choice = this.faker.resolve("oscar_movie.year.choice"); diff --git a/src/main/java/net/datafaker/Overwatch.java b/src/main/java/net/datafaker/Overwatch.java index af9b94472..c7fec36e2 100644 --- a/src/main/java/net/datafaker/Overwatch.java +++ b/src/main/java/net/datafaker/Overwatch.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Overwatch extends AbstractProvider { +public class Overwatch extends AbstractProvider { - protected Overwatch(Faker faker) { + protected Overwatch(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Passport.java b/src/main/java/net/datafaker/Passport.java index d153d71cb..08877b224 100644 --- a/src/main/java/net/datafaker/Passport.java +++ b/src/main/java/net/datafaker/Passport.java @@ -3,9 +3,9 @@ /** * @since 0.9.0 */ -public class Passport extends AbstractProvider { +public class Passport extends AbstractProvider { - protected Passport(Faker faker) { + protected Passport(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Password.java b/src/main/java/net/datafaker/Password.java index 5504dcd80..9c7f33990 100644 --- a/src/main/java/net/datafaker/Password.java +++ b/src/main/java/net/datafaker/Password.java @@ -7,14 +7,14 @@ /** * @since 1.6.0 */ -public class Password extends AbstractProvider { +public class Password extends AbstractProvider { public static final String EN_LOWERCASE = "abcdefghijklmnopqrstuvwxyz"; public static final String EN_UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static final String DIGITS = "0123456789"; public static final String DEFAULT_SPECIAL = "!@#$%^&*"; - public Password(Faker faker) { + public Password(BaseFaker faker) { super(faker); } @@ -84,7 +84,7 @@ public PasswordSymbolsBuilder throwIfLengthSmall(boolean throwIfLengthSmall) { return this; } - public PasswordRuleConfig build(Faker faker) { + public PasswordRuleConfig build(BaseFaker faker) { if (maxLength < minLength) { throw new IllegalArgumentException("Max length should be not smaller than min length"); } @@ -97,7 +97,7 @@ public PasswordRuleConfig build(Faker faker) { } public PasswordRuleConfig build() { - return build(new Faker()); + return build(new BaseFaker()); } } diff --git a/src/main/java/net/datafaker/PhoneNumber.java b/src/main/java/net/datafaker/PhoneNumber.java index cad5fef45..5d06ca887 100644 --- a/src/main/java/net/datafaker/PhoneNumber.java +++ b/src/main/java/net/datafaker/PhoneNumber.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class PhoneNumber extends AbstractProvider { +public class PhoneNumber extends AbstractProvider { - protected PhoneNumber(Faker faker) { + protected PhoneNumber(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Photography.java b/src/main/java/net/datafaker/Photography.java index 0f0f0e9d7..e572487dc 100644 --- a/src/main/java/net/datafaker/Photography.java +++ b/src/main/java/net/datafaker/Photography.java @@ -5,9 +5,9 @@ * * @since 0.8.0 */ -public class Photography extends AbstractProvider { +public class Photography extends AbstractProvider { - protected Photography(Faker faker) { + protected Photography(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Pokemon.java b/src/main/java/net/datafaker/Pokemon.java index 20a8ce66d..a78982fd1 100644 --- a/src/main/java/net/datafaker/Pokemon.java +++ b/src/main/java/net/datafaker/Pokemon.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Pokemon extends AbstractProvider { +public class Pokemon extends AbstractProvider { - protected Pokemon(Faker faker) { + protected Pokemon(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/PrincessBride.java b/src/main/java/net/datafaker/PrincessBride.java index 47965fc33..3ba6d85fd 100644 --- a/src/main/java/net/datafaker/PrincessBride.java +++ b/src/main/java/net/datafaker/PrincessBride.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class PrincessBride extends AbstractProvider { +public class PrincessBride extends AbstractProvider { - protected PrincessBride(Faker faker) { + protected PrincessBride(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/ProgrammingLanguage.java b/src/main/java/net/datafaker/ProgrammingLanguage.java index 681ea9be8..d5d071bb2 100644 --- a/src/main/java/net/datafaker/ProgrammingLanguage.java +++ b/src/main/java/net/datafaker/ProgrammingLanguage.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class ProgrammingLanguage extends AbstractProvider { +public class ProgrammingLanguage extends AbstractProvider { - public ProgrammingLanguage(Faker faker) { + public ProgrammingLanguage(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/ProviderRegistration.java b/src/main/java/net/datafaker/ProviderRegistration.java new file mode 100644 index 000000000..d35b0ce13 --- /dev/null +++ b/src/main/java/net/datafaker/ProviderRegistration.java @@ -0,0 +1,151 @@ +package net.datafaker; + +import net.datafaker.fileformats.Json; +import net.datafaker.service.FakeValuesService; +import net.datafaker.service.FakerContext; +import net.datafaker.service.RandomService; + +import java.util.Map; +import java.util.function.Function; +import java.util.function.Supplier; + +public interface ProviderRegistration { + B getFaker(); + FakerContext getContext(); + + default T getProvider( + Class clazz, Function valueSupplier) { + return BaseFaker.getProvider(clazz, valueSupplier, getFaker()); + } + + String resolve(String key); + + String resolve(String key, Supplier message); + + String numerify(String numberString); + + /** + * Returns a string with the '?' characters in the parameter replaced with random alphabetic + * characters. + *

+ * For example, the string "12??34" could be replaced with a string like "12AB34". + * + * @param letterString Template for string generation + * @return Generated string. + */ + String letterify(String letterString); + + /** + * Returns a string with the '?' characters in the parameter replaced with random alphabetic + * characters. + *

+ * For example, the string "12??34" could be replaced with a string like "12AB34". + */ + String letterify(String letterString, boolean isUpper); + + /** + * Applies both a {@link #numerify(String)} and a {@link #letterify(String)} + * over the incoming string. + */ + String bothify(String string); + + /** + * Applies both a {@link #numerify(String)} and a {@link #letterify(String)} + * over the incoming string. + */ + String bothify(String string, boolean isUpper); + + /** + * Generates a String that matches the given regular expression. + */ + String regexify(String regex); + + /** + * Generates a String by example. The output string will have the same pattern as the input string. + *

+ * For example: + * "AAA" becomes "KRA" + * "abc" becomes "uio" + * "948" becomes "345" + * "A19c" becomes "Z20d" + * + * @param example The input string + * @return The output string based on the input pattern + */ + String examplify(String example); + + /** + * Returns a string with the char2replace characters in the parameter replaced with random option from available options. + *

+ * For example, the string "ABC??EFG" could be replaced with a string like "ABCtestтестEFG" + * if passed options are new String[]{"test", "тест"}. + * + * @param string Template for string generation + * @param char2replace Char to replace + * @param options Options to use while filling the template + * @return Generated string + */ + String templatify(String string, char char2replace, String... options); + + /** + * Returns a string with the characters in the keys of optionsMap parameter replaced with random option from values. + * + *

+ * For example, the string "ABC$$EFG" could be replaced with a string like "ABCtestтестEFG" + * if passed for key '$' there is value new String[]{"test", "тест"} in optionsMap + * + * @param string Template for string generation + * @param optionsMap Map with replacement rules + * @return Generated string + */ + String templatify(String string, Map optionsMap); + + /** + * Returns a string with generated csv based number of lines and column expressions. + * This method will use comma as default delimiter, always prints header and double quote as default quote. + * + *

+ * For example, it could generate + * "name_column","last_name_column" + * "Sabrina","Kihn" + *

+ * for expression {@code faker.expression("#{csv '1','name_column','#{Name.first_name}','last_name_column','#{Name.last_name}'}");} + * + * @param limit Number of lines + * @param columnExpressions Even number of expressions. + * The odd numbers args are used for columns names, and even for column values. + * @return Generated string + */ + String csv(int limit, String ... columnExpressions); + + /** + * Returns a string with generated csv based number of lines and column expressions. + * + *

+ * For example, it could generate + * "Thad" ### "Crist" + * "Kathryne" ### "Wuckert" + * "Sybil" ### "Connelly" + *

+ * for expression {@code faker.expression("#{csv ' ### ','"','false','3','name_column','#{Name.first_name}','last_name_column','#{Name.last_name}'}");} + * + * @param separator Delimiter to use + * @param quote Quote to use + * @param withHeader Print header or not + * @param limit Number of lines + * @param columnExpressions Even number of expressions. + * The odd numbers args are used for columns names, and even for column values. + * @return Generated string + */ + String csv(String separator, char quote, boolean withHeader, int limit, String ... columnExpressions); + + Json json(String... fieldExpressions); + + Json jsona(String... fieldExpressions); + + RandomService random(); + + String expression(String expression); + + FakeValuesService fakeValuesService(); +} diff --git a/src/main/java/net/datafaker/Relationship.java b/src/main/java/net/datafaker/Relationship.java index 58e8508f7..d5bc925d8 100644 --- a/src/main/java/net/datafaker/Relationship.java +++ b/src/main/java/net/datafaker/Relationship.java @@ -8,9 +8,9 @@ /** * @since 0.8.0 */ -public class Relationship extends AbstractProvider { +public class Relationship extends AbstractProvider { - protected Relationship(final Faker faker) { + protected Relationship(final IProviders faker) { super(faker); } diff --git a/src/main/java/net/datafaker/ResidentEvil.java b/src/main/java/net/datafaker/ResidentEvil.java index 58c7ee9b1..99c9dc66b 100644 --- a/src/main/java/net/datafaker/ResidentEvil.java +++ b/src/main/java/net/datafaker/ResidentEvil.java @@ -5,9 +5,9 @@ * * @since 0.9.0 */ -public class ResidentEvil extends AbstractProvider { +public class ResidentEvil extends AbstractProvider { - protected ResidentEvil(Faker faker) { + protected ResidentEvil(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Restaurant.java b/src/main/java/net/datafaker/Restaurant.java index f8fef3a5a..09fd62eb7 100644 --- a/src/main/java/net/datafaker/Restaurant.java +++ b/src/main/java/net/datafaker/Restaurant.java @@ -3,9 +3,9 @@ /** * @since 1.2.0 */ -public class Restaurant extends AbstractProvider { +public class Restaurant extends AbstractProvider { - protected Restaurant(Faker faker) { + protected Restaurant(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/RickAndMorty.java b/src/main/java/net/datafaker/RickAndMorty.java index 98032b74a..8e25d55a4 100644 --- a/src/main/java/net/datafaker/RickAndMorty.java +++ b/src/main/java/net/datafaker/RickAndMorty.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class RickAndMorty extends AbstractProvider { +public class RickAndMorty extends AbstractProvider { - protected RickAndMorty(final Faker faker) { + protected RickAndMorty(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Robin.java b/src/main/java/net/datafaker/Robin.java index 0dfc18739..7fdc4151a 100644 --- a/src/main/java/net/datafaker/Robin.java +++ b/src/main/java/net/datafaker/Robin.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Robin extends AbstractProvider { +public class Robin extends AbstractProvider { - protected Robin(Faker faker) { + protected Robin(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/RockBand.java b/src/main/java/net/datafaker/RockBand.java index b1ea29520..124b394ec 100644 --- a/src/main/java/net/datafaker/RockBand.java +++ b/src/main/java/net/datafaker/RockBand.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class RockBand extends AbstractProvider { +public class RockBand extends AbstractProvider { - protected RockBand(Faker faker) { + protected RockBand(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/RuPaulDragRace.java b/src/main/java/net/datafaker/RuPaulDragRace.java index 51a06c763..5f9d52f72 100644 --- a/src/main/java/net/datafaker/RuPaulDragRace.java +++ b/src/main/java/net/datafaker/RuPaulDragRace.java @@ -5,9 +5,9 @@ * * @since 1.0.0 */ -public class RuPaulDragRace extends AbstractProvider { +public class RuPaulDragRace extends AbstractProvider { - protected RuPaulDragRace(Faker faker) { + protected RuPaulDragRace(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Science.java b/src/main/java/net/datafaker/Science.java index 670b3d8b7..fe30e997a 100644 --- a/src/main/java/net/datafaker/Science.java +++ b/src/main/java/net/datafaker/Science.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Science extends AbstractProvider { +public class Science extends AbstractProvider { - protected Science(Faker faker) { + protected Science(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Seinfeld.java b/src/main/java/net/datafaker/Seinfeld.java index a70f72668..e92c3ecd3 100644 --- a/src/main/java/net/datafaker/Seinfeld.java +++ b/src/main/java/net/datafaker/Seinfeld.java @@ -5,9 +5,9 @@ * * @since 1.4.0 */ -public class Seinfeld extends AbstractProvider { +public class Seinfeld extends AbstractProvider { - protected Seinfeld(Faker faker) { + protected Seinfeld(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Shakespeare.java b/src/main/java/net/datafaker/Shakespeare.java index 0a8af2ea1..9213f7bbe 100644 --- a/src/main/java/net/datafaker/Shakespeare.java +++ b/src/main/java/net/datafaker/Shakespeare.java @@ -3,7 +3,7 @@ /** * @since 0.8.0 */ -public class Shakespeare extends AbstractProvider { +public class Shakespeare extends AbstractProvider { private static final String[] hamletQuotes = { "To be, or not to be: that is the question.", @@ -58,7 +58,7 @@ public class Shakespeare extends AbstractProvider { "See, how she leans her cheek upon her hand! O that I were a glove upon that hand, that I might touch that cheek!.", "Not stepping o'er the bounds of modesty."}; - protected Shakespeare(Faker faker) { + protected Shakespeare(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Simpsons.java b/src/main/java/net/datafaker/Simpsons.java index 9d77e4caf..6630d06a4 100644 --- a/src/main/java/net/datafaker/Simpsons.java +++ b/src/main/java/net/datafaker/Simpsons.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class Simpsons extends AbstractProvider { +public class Simpsons extends AbstractProvider { - public Simpsons(Faker faker) { + public Simpsons(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Sip.java b/src/main/java/net/datafaker/Sip.java index 99309fadc..748800e4a 100644 --- a/src/main/java/net/datafaker/Sip.java +++ b/src/main/java/net/datafaker/Sip.java @@ -8,11 +8,11 @@ * @author TomerFi * @since 0.8.0 */ -public class Sip extends AbstractProvider { +public class Sip extends AbstractProvider { private final int[] portPool = new int[5001]; - public Sip(final Faker faker) { + public Sip(final BaseFaker faker) { super(faker); for (int i = 0; i < portPool.length; i++) { portPool[i] = 40000 + 2 * i; diff --git a/src/main/java/net/datafaker/Size.java b/src/main/java/net/datafaker/Size.java index 38f5a09e3..3052be7b7 100644 --- a/src/main/java/net/datafaker/Size.java +++ b/src/main/java/net/datafaker/Size.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Size extends AbstractProvider { +public class Size extends AbstractProvider { - protected Size(Faker faker) { + protected Size(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/SlackEmoji.java b/src/main/java/net/datafaker/SlackEmoji.java index 59eb2d166..8b013688b 100644 --- a/src/main/java/net/datafaker/SlackEmoji.java +++ b/src/main/java/net/datafaker/SlackEmoji.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class SlackEmoji extends AbstractProvider { +public class SlackEmoji extends AbstractProvider { - protected SlackEmoji(Faker faker) { + protected SlackEmoji(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/SoulKnight.java b/src/main/java/net/datafaker/SoulKnight.java index b6ffa65a7..7cdc310bc 100644 --- a/src/main/java/net/datafaker/SoulKnight.java +++ b/src/main/java/net/datafaker/SoulKnight.java @@ -7,9 +7,9 @@ * @author zhou mintao * @since 1.4.0 */ -public class SoulKnight extends AbstractProvider { +public class SoulKnight extends AbstractProvider { - protected SoulKnight(final Faker faker) { + protected SoulKnight(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Space.java b/src/main/java/net/datafaker/Space.java index 4b2bd1d85..d38aa59ac 100644 --- a/src/main/java/net/datafaker/Space.java +++ b/src/main/java/net/datafaker/Space.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Space extends AbstractProvider { +public class Space extends AbstractProvider { - protected Space(Faker faker) { + protected Space(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/StarCraft.java b/src/main/java/net/datafaker/StarCraft.java index 2209b0c7e..435ece854 100644 --- a/src/main/java/net/datafaker/StarCraft.java +++ b/src/main/java/net/datafaker/StarCraft.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class StarCraft extends AbstractProvider { +public class StarCraft extends AbstractProvider { - protected StarCraft(final Faker faker) { + protected StarCraft(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/StarTrek.java b/src/main/java/net/datafaker/StarTrek.java index 7214ed6c2..fec024288 100644 --- a/src/main/java/net/datafaker/StarTrek.java +++ b/src/main/java/net/datafaker/StarTrek.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class StarTrek extends AbstractProvider { +public class StarTrek extends AbstractProvider { - protected StarTrek(Faker faker) { + protected StarTrek(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/StarWars.java b/src/main/java/net/datafaker/StarWars.java index 3fcf38c08..744caa60e 100644 --- a/src/main/java/net/datafaker/StarWars.java +++ b/src/main/java/net/datafaker/StarWars.java @@ -3,7 +3,7 @@ /** * @since 1.6.0 */ -public class StarWars extends AbstractProvider { +public class StarWars extends AbstractProvider { private final String[] CHARACTERS = new String[]{"admiral_ackbar", "ahsoka_tano", "anakin_skywalker", "asajj_ventress", "bendu", "boba_fett", "c_3po", "count_dooku", "darth_caedus", "darth_vader", "emperor_palpatine", "finn", @@ -11,7 +11,7 @@ public class StarWars extends AbstractProvider { "jar_jar_binks", "k_2so", "kylo_ren", "lando_calrissian", "leia_organa", "luke_skywalker", "mace_windu", "maz_kanata", "obi_wan_kenobi", "padme_amidala", "qui_gon_jinn", "rey", "shmi_skywalker", "yoda"}; - protected StarWars(Faker faker) { + protected StarWars(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Stock.java b/src/main/java/net/datafaker/Stock.java index b7218961b..0cd4caae4 100644 --- a/src/main/java/net/datafaker/Stock.java +++ b/src/main/java/net/datafaker/Stock.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Stock extends AbstractProvider { +public class Stock extends AbstractProvider { - protected Stock(Faker faker) { + protected Stock(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Subscription.java b/src/main/java/net/datafaker/Subscription.java index 9ec6fe3f4..cc353e4a9 100644 --- a/src/main/java/net/datafaker/Subscription.java +++ b/src/main/java/net/datafaker/Subscription.java @@ -3,9 +3,9 @@ /** * @since 1.3.0 */ -public class Subscription extends AbstractProvider { +public class Subscription extends AbstractProvider { - protected Subscription(Faker faker) { + protected Subscription(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/SuperMario.java b/src/main/java/net/datafaker/SuperMario.java index 9d3bc8a41..2bbbdbd24 100644 --- a/src/main/java/net/datafaker/SuperMario.java +++ b/src/main/java/net/datafaker/SuperMario.java @@ -3,9 +3,9 @@ /** * @since 1.3.0 */ -public class SuperMario extends AbstractProvider { +public class SuperMario extends AbstractProvider { - protected SuperMario(Faker faker) { + protected SuperMario(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Superhero.java b/src/main/java/net/datafaker/Superhero.java index 11a6f54d0..94e29e926 100644 --- a/src/main/java/net/datafaker/Superhero.java +++ b/src/main/java/net/datafaker/Superhero.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Superhero extends AbstractProvider { +public class Superhero extends AbstractProvider { - protected Superhero(Faker faker) { + protected Superhero(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Tea.java b/src/main/java/net/datafaker/Tea.java index 3d99bb0a6..77221b78b 100644 --- a/src/main/java/net/datafaker/Tea.java +++ b/src/main/java/net/datafaker/Tea.java @@ -3,9 +3,9 @@ /** * @since 1.4.0 */ -public class Tea extends AbstractProvider { +public class Tea extends AbstractProvider { - protected Tea(Faker faker) { + protected Tea(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Team.java b/src/main/java/net/datafaker/Team.java index 23c16366e..ac8df4eb5 100644 --- a/src/main/java/net/datafaker/Team.java +++ b/src/main/java/net/datafaker/Team.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Team extends AbstractProvider { +public class Team extends AbstractProvider { - protected Team(Faker faker) { + protected Team(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/TheItCrowd.java b/src/main/java/net/datafaker/TheItCrowd.java index 2d63bfa85..8e04e86ed 100644 --- a/src/main/java/net/datafaker/TheItCrowd.java +++ b/src/main/java/net/datafaker/TheItCrowd.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class TheItCrowd extends AbstractProvider { +public class TheItCrowd extends AbstractProvider { - protected TheItCrowd(Faker faker) { + protected TheItCrowd(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Time.java b/src/main/java/net/datafaker/Time.java index 01d8d66d4..cfc625906 100644 --- a/src/main/java/net/datafaker/Time.java +++ b/src/main/java/net/datafaker/Time.java @@ -7,9 +7,9 @@ /** * @since 1.4.0 */ -public class Time extends AbstractProvider { +public class Time extends AbstractProvider { - protected Time(Faker faker) { + protected Time(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Touhou.java b/src/main/java/net/datafaker/Touhou.java index 6831aff36..2bb5e18fc 100644 --- a/src/main/java/net/datafaker/Touhou.java +++ b/src/main/java/net/datafaker/Touhou.java @@ -3,9 +3,9 @@ /** * @since 0.9.0 */ -public class Touhou extends AbstractProvider { +public class Touhou extends AbstractProvider { - protected Touhou(Faker faker) { + protected Touhou(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Tron.java b/src/main/java/net/datafaker/Tron.java index da663090e..fa12e2675 100644 --- a/src/main/java/net/datafaker/Tron.java +++ b/src/main/java/net/datafaker/Tron.java @@ -5,9 +5,9 @@ * * @since 1.4.0 */ -public class Tron extends AbstractProvider { +public class Tron extends AbstractProvider { - protected Tron(Faker faker) { + protected Tron(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/TwinPeaks.java b/src/main/java/net/datafaker/TwinPeaks.java index efb238882..523a1854c 100644 --- a/src/main/java/net/datafaker/TwinPeaks.java +++ b/src/main/java/net/datafaker/TwinPeaks.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class TwinPeaks extends AbstractProvider { +public class TwinPeaks extends AbstractProvider { - protected TwinPeaks(final Faker faker) { + protected TwinPeaks(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Twitter.java b/src/main/java/net/datafaker/Twitter.java index f1a3dd443..5a6d1256e 100644 --- a/src/main/java/net/datafaker/Twitter.java +++ b/src/main/java/net/datafaker/Twitter.java @@ -14,14 +14,14 @@ * * @since 0.9.0 */ -public class Twitter extends AbstractProvider { +public class Twitter extends AbstractProvider { private final String basicstr = "QabR0cYdZ1efSg2hi3jNOPkTUM4VLlmXK5nJo6WIpHGqF7rEs8tDuC9vwBxAyz"; /** * @param faker used as constructor */ - protected Twitter(Faker faker) { + protected Twitter(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Unique.java b/src/main/java/net/datafaker/Unique.java index 788b716ef..7157d0f05 100644 --- a/src/main/java/net/datafaker/Unique.java +++ b/src/main/java/net/datafaker/Unique.java @@ -10,11 +10,11 @@ * * @since 1.6.0 */ -public class Unique extends AbstractProvider { +public class Unique extends AbstractProvider { private final Map>> valuesByKeyAndLocale = new HashMap<>(); - public Unique(Faker faker) { + public Unique(BaseFaker faker) { super(faker); } @@ -32,7 +32,7 @@ public Unique(Faker faker) { * @return a unique random value based on {@code key} and the current locale */ public String fetchFromYaml(String key) { - Locale locale = faker.getLocale(); + Locale locale = faker.getContext().getLocale(); Map> valuesByKey = valuesByKeyAndLocale.getOrDefault(locale, new HashMap<>()); List values = valuesByKey.get(key); diff --git a/src/main/java/net/datafaker/University.java b/src/main/java/net/datafaker/University.java index 4ab30dc7d..8369a0422 100644 --- a/src/main/java/net/datafaker/University.java +++ b/src/main/java/net/datafaker/University.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class University extends AbstractProvider { +public class University extends AbstractProvider { - protected University(Faker faker) { + protected University(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Vehicle.java b/src/main/java/net/datafaker/Vehicle.java index 464c7d903..3cb5308b8 100644 --- a/src/main/java/net/datafaker/Vehicle.java +++ b/src/main/java/net/datafaker/Vehicle.java @@ -8,11 +8,11 @@ /** * @since 0.8.0 */ -public class Vehicle extends AbstractProvider { +public class Vehicle extends AbstractProvider { static final String VIN_REGEX = "([A-HJ-NPR-Z0-9]){3}[A-HJ-NPR-Z0-9]{5}[A-HJ-NPR-Z0-9]{1}[A-HJ-NPR-Z0-9]{1}[A-HJ-NPR-Z0-0]{1}[A-HJ-NPR-Z0-9]{1}\\d{5}"; - public Vehicle(Faker faker) { + public Vehicle(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Verb.java b/src/main/java/net/datafaker/Verb.java index 159ca0f4f..2228eedb7 100644 --- a/src/main/java/net/datafaker/Verb.java +++ b/src/main/java/net/datafaker/Verb.java @@ -3,9 +3,9 @@ /** * @since 1.5.0 */ -public class Verb extends AbstractProvider { +public class Verb extends AbstractProvider { - protected Verb(Faker faker) { + protected Verb(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Weather.java b/src/main/java/net/datafaker/Weather.java index c14d3a922..39e788e22 100644 --- a/src/main/java/net/datafaker/Weather.java +++ b/src/main/java/net/datafaker/Weather.java @@ -5,14 +5,14 @@ * * @since 0.8.0 */ -public class Weather extends AbstractProvider { +public class Weather extends AbstractProvider { private static final int DEFAULT_MIN_TEMP_C = -30; private static final int DEFAULT_MAX_TEMP_C = 38; private static final int DEFAULT_MIN_TEMP_F = -22; private static final int DEFAULT_MAX_TEMP_F = 100; - protected Weather(Faker faker) { + protected Weather(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Witcher.java b/src/main/java/net/datafaker/Witcher.java index 1d121247d..19d7df399 100644 --- a/src/main/java/net/datafaker/Witcher.java +++ b/src/main/java/net/datafaker/Witcher.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Witcher extends AbstractProvider { +public class Witcher extends AbstractProvider { - protected Witcher(Faker faker) { + protected Witcher(BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Yoda.java b/src/main/java/net/datafaker/Yoda.java index b0993de13..c8a001349 100644 --- a/src/main/java/net/datafaker/Yoda.java +++ b/src/main/java/net/datafaker/Yoda.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Yoda extends AbstractProvider { +public class Yoda extends AbstractProvider { - protected Yoda(final Faker faker) { + protected Yoda(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Zelda.java b/src/main/java/net/datafaker/Zelda.java index 16aef6555..c4a5e6832 100644 --- a/src/main/java/net/datafaker/Zelda.java +++ b/src/main/java/net/datafaker/Zelda.java @@ -3,9 +3,9 @@ /** * @since 0.8.0 */ -public class Zelda extends AbstractProvider { +public class Zelda extends AbstractProvider { - protected Zelda(final Faker faker) { + protected Zelda(final BaseFaker faker) { super(faker); } diff --git a/src/main/java/net/datafaker/idnumbers/EnIdNumber.java b/src/main/java/net/datafaker/idnumbers/EnIdNumber.java index 57d313958..9e2035dfd 100644 --- a/src/main/java/net/datafaker/idnumbers/EnIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/EnIdNumber.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.Faker; +import net.datafaker.IProviders; import java.util.regex.Pattern; @@ -12,7 +12,7 @@ public class EnIdNumber { Pattern.compile("666-\\d{2}-\\d{4}"), Pattern.compile("9\\d{2}-\\d{2}-\\d{4}")}; - public String getValidSsn(Faker f) { + public String getValidSsn(IProviders f) { String ssn = f.regexify("[0-8]\\d{2}-\\d{2}-\\d{4}"); boolean isValid = true; diff --git a/src/main/java/net/datafaker/idnumbers/EnZAIdNumber.java b/src/main/java/net/datafaker/idnumbers/EnZAIdNumber.java index d4d5a237a..115e21a14 100644 --- a/src/main/java/net/datafaker/idnumbers/EnZAIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/EnZAIdNumber.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.Faker; +import net.datafaker.IProviders; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -21,7 +21,7 @@ public class EnZAIdNumber { * @param f the java-faker * @return a valid social security number on faker */ - public String getValidSsn(Faker f) { + public String getValidSsn(IProviders f) { String ssn = ""; while (!validSsn(ssn)) { @@ -38,7 +38,7 @@ public String getValidSsn(Faker f) { * @param f the java-faker * @return a invalid social security number on faker */ - public String getInValidSsn(Faker f) { + public String getInValidSsn(IProviders f) { String ssn = f.numerify(f.options().option(VALID_PATTERN)); while (validSsn(ssn)) { @@ -54,7 +54,7 @@ public String getInValidSsn(Faker f) { * @param faker the java-faker * @return a fixed format numeric string */ - private String getPattern(Faker faker) { + private String getPattern(IProviders faker) { return faker.options().option(VALID_PATTERN); } diff --git a/src/main/java/net/datafaker/idnumbers/EsMXIdNumber.java b/src/main/java/net/datafaker/idnumbers/EsMXIdNumber.java index 4b5fb7e11..714c32ef6 100644 --- a/src/main/java/net/datafaker/idnumbers/EsMXIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/EsMXIdNumber.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.Faker; +import net.datafaker.IProviders; import java.util.Arrays; import java.util.List; @@ -45,7 +45,7 @@ public class EsMXIdNumber { * @param faker faker * @return A valid MEX CURP. */ - public String get(Faker faker) { + public String get(IProviders faker) { String sex = new String[]{"H", "M"}[faker.random().nextInt(2)]; String birthDay = getBirthday(faker); @@ -75,7 +75,7 @@ public String get(Faker faker) { * @param faker faker * @return A invalid MEX CURP. */ - public String getWrong(Faker faker) { + public String getWrong(IProviders faker) { return faker.options().option(CHA); } @@ -85,7 +85,7 @@ public String getWrong(Faker faker) { * @param f A specific instance of Faker. * @return A valid date. */ - private String getBirthday(Faker f) { + private String getBirthday(IProviders f) { int year = f.random().nextInt(1900, 2021); int month = f.random().nextInt(1, 12); int day = validDay(year, month, f); @@ -101,7 +101,7 @@ private String getBirthday(Faker f) { * @param f A specific instance of Faker. * @return A valid day. */ - private int validDay(int year, int month, Faker f) { + private int validDay(int year, int month, IProviders f) { List bigMonths = Arrays.asList(1, 3, 5, 7, 8, 10, 12); diff --git a/src/main/java/net/datafaker/idnumbers/NricNumber.java b/src/main/java/net/datafaker/idnumbers/NricNumber.java index 1edc205f5..570e25ca0 100644 --- a/src/main/java/net/datafaker/idnumbers/NricNumber.java +++ b/src/main/java/net/datafaker/idnumbers/NricNumber.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.Faker; +import net.datafaker.IProviders; import net.datafaker.service.RandomService; import java.util.EnumMap; @@ -52,7 +52,7 @@ public String format(int[] digits) { INITIALIZER.put(Type.FOREIGNER_TWENTY_FIRST_CENTURY, new NricType('G', FIN_LETTERS, CODE, 4)); } - public static String getValidFIN(Faker f, Type type) { + public static String getValidFIN(IProviders f, Type type) { final RandomService random = f.random(); final int[] number = new int[7]; for (int i = 0; i < number.length; i++) { diff --git a/src/main/java/net/datafaker/idnumbers/PeselNumber.java b/src/main/java/net/datafaker/idnumbers/PeselNumber.java index a44275522..39e5a4eca 100644 --- a/src/main/java/net/datafaker/idnumbers/PeselNumber.java +++ b/src/main/java/net/datafaker/idnumbers/PeselNumber.java @@ -1,10 +1,10 @@ package net.datafaker.idnumbers; +import net.datafaker.IProviders; + import java.time.LocalDate; import java.util.Optional; -import net.datafaker.Faker; - /** * Implementation based on the definition at * https://isap.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU20210000510 and the @@ -14,13 +14,13 @@ public class PeselNumber { public static final int PESEL_LENGTH = 11; - private final Faker faker; + private final IProviders faker; public enum Gender { MALE, FEMALE, ANY } - public PeselNumber(Faker faker) { + public PeselNumber(IProviders faker) { this.faker = faker; } diff --git a/src/main/java/net/datafaker/idnumbers/PtNifIdNumber.java b/src/main/java/net/datafaker/idnumbers/PtNifIdNumber.java index c5eabfaad..f79e5a761 100644 --- a/src/main/java/net/datafaker/idnumbers/PtNifIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/PtNifIdNumber.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.Faker; +import net.datafaker.IProviders; /** * Portuguese VAT identification number (NIF) @@ -17,7 +17,7 @@ public class PtNifIdNumber { private static final String[] VALID_FIRST_DOUBLE_DIGITS = {"45", "70", "71", "72", "74", "75", "77", "79", "90", "91", "98", "99"}; - public String getInvalid(final Faker faker) { + public String getInvalid(final IProviders faker) { String digits = faker.number().digits(8); int digitSum = calculateDigitSum(digits); // by adding 5 to a valid checksum, we should invalidate @@ -25,7 +25,7 @@ public String getInvalid(final Faker faker) { return digits + (digitSum + 5); } - public String getValid(final Faker faker) { + public String getValid(final IProviders faker) { String digits; if (faker.random().nextBoolean()) { final char firstDigit = faker.options().option(VALID_FIRST_DIGITS); diff --git a/src/main/java/net/datafaker/idnumbers/SvSEIdNumber.java b/src/main/java/net/datafaker/idnumbers/SvSEIdNumber.java index ad0b6a808..3f1c93774 100644 --- a/src/main/java/net/datafaker/idnumbers/SvSEIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SvSEIdNumber.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.Faker; +import net.datafaker.IProviders; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -15,7 +15,7 @@ public class SvSEIdNumber { private static final String[] VALID_PATTERNS = {"######-####", "######+####"}; - public String getValidSsn(Faker f) { + public String getValidSsn(IProviders f) { String candidate = ""; while (!validSwedishSsn(candidate)) { String pattern = getPattern(f); @@ -25,7 +25,7 @@ public String getValidSsn(Faker f) { return candidate; } - public String getInvalidSsn(Faker f) { + public String getInvalidSsn(IProviders f) { String candidate = "121212-1212"; // Seed with a valid number while (validSwedishSsn(candidate)) { String pattern = getPattern(f); @@ -35,7 +35,7 @@ public String getInvalidSsn(Faker f) { return candidate; } - private String getPattern(Faker faker) { + private String getPattern(IProviders faker) { return faker.options().option(VALID_PATTERNS); } diff --git a/src/main/java/net/datafaker/idnumbers/ZhCnIdNumber.java b/src/main/java/net/datafaker/idnumbers/ZhCnIdNumber.java index a5c27c95a..e9896e917 100644 --- a/src/main/java/net/datafaker/idnumbers/ZhCnIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/ZhCnIdNumber.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.Faker; +import net.datafaker.IProviders; import net.datafaker.service.RandomService; import java.text.ParseException; @@ -24,7 +24,7 @@ public class ZhCnIdNumber { * @param faker a Faker instance for generating Zh_CN Id numbers * @return a Zh_CN Id numbers string. or null if exception. */ - public String getValidSsn(Faker faker) { + public String getValidSsn(IProviders faker) { final RandomService random = faker.random(); String s = ""; RandomService rand = faker.random(); diff --git a/src/main/java/net/datafaker/idnumbers/pt/br/IdNumberGeneratorPtBrUtil.java b/src/main/java/net/datafaker/idnumbers/pt/br/IdNumberGeneratorPtBrUtil.java index ce1ad875a..f85906ea1 100644 --- a/src/main/java/net/datafaker/idnumbers/pt/br/IdNumberGeneratorPtBrUtil.java +++ b/src/main/java/net/datafaker/idnumbers/pt/br/IdNumberGeneratorPtBrUtil.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers.pt.br; -import net.datafaker.Faker; +import net.datafaker.IProviders; public final class IdNumberGeneratorPtBrUtil { @@ -13,7 +13,7 @@ private IdNumberGeneratorPtBrUtil() { * @param formatted a cnpj (un)formatted * @param valid a cnpj (in)valid */ - public static String cnpj(Faker faker, boolean formatted, boolean valid, boolean multiBranch) { + public static String cnpj(IProviders faker, boolean formatted, boolean valid, boolean multiBranch) { String cnpj; if (valid) { @@ -56,7 +56,7 @@ public static String cnpj(Faker faker, boolean formatted, boolean valid, boolean * @param formatted a CPF (un)formatted * @param valid a CPF (in)valid */ - public static String cpf(Faker faker, boolean formatted, boolean valid) { + public static String cpf(IProviders faker, boolean formatted, boolean valid) { String cpf; if (valid) { StringBuilder partial = new StringBuilder(); diff --git a/src/main/java/net/datafaker/service/FakeValuesService.java b/src/main/java/net/datafaker/service/FakeValuesService.java index acbd59bb3..67b2947d3 100644 --- a/src/main/java/net/datafaker/service/FakeValuesService.java +++ b/src/main/java/net/datafaker/service/FakeValuesService.java @@ -2,7 +2,8 @@ import com.mifmif.common.regex.Generex; import net.datafaker.AbstractProvider; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; +import net.datafaker.ProviderRegistration; import net.datafaker.fileformats.Csv; import net.datafaker.fileformats.Format; import net.datafaker.fileformats.Json; @@ -353,7 +354,7 @@ private String letterHelper(int baseChar, String letterString, FakerContext cont *

* #{Person.hello_someone} will result in a method call to person.helloSomeone(); */ - public String resolve(String key, Object current, Faker root, FakerContext context) { + public String resolve(String key, Object current, BaseFaker root, FakerContext context) { return resolve(key, current, root, () -> key + " resulted in null expression", context); } @@ -368,7 +369,7 @@ public String resolve(String key, AbstractProvider provider, FakerContext contex *

* #{Person.hello_someone} will result in a method call to person.helloSomeone(); */ - public String resolve(String key, Object current, Faker root, Supplier exceptionMessage, FakerContext context) { + public String resolve(String key, Object current, ProviderRegistration root, Supplier exceptionMessage, FakerContext context) { String expression = root == null ? key2Expression.get(context.getLocale()).get(key) : null; if (expression == null) { expression = safeFetch(key, context, null); @@ -388,14 +389,14 @@ public String resolve(String key, Object current, Faker root, Supplier e /** * Resolves an expression using the current faker. */ - public String expression(String expression, Faker faker, FakerContext context) { + public String expression(String expression, BaseFaker faker, FakerContext context) { return resolveExpression(expression, null, faker, context); } /** * Resolves an expression in file using the current faker. */ - public String fileExpression(Path path, Faker faker, FakerContext context) { + public String fileExpression(Path path, BaseFaker faker, FakerContext context) { try { return Files.readAllLines(path) .stream().map(t -> expression(t, faker, context)) @@ -468,16 +469,16 @@ public Json jsona(String... fieldExpressions) { /** * processes a expression in the style #{X.y} using the current objects as the 'current' location - * within the yml file (or the {@link Faker} object hierarchy as it were). + * within the yml file (or the {@link BaseFaker} object hierarchy as it were). *

- * #{Address.streetName} would get resolved to {@link Faker#address()}'s {@link net.datafaker.Address#streetName()} + * #{Address.streetName} would get resolved to {@link BaseFaker#address()}'s {@link net.datafaker.Address#streetName()} * #{address.street} would get resolved to the YAML like locale: faker: address: street: * Combinations are supported as well: "#{x} #{y}" *

* Recursive templates are supported. if "#{x}" resolves to "#{Address.streetName}" then "#{x}" resolves to - * {@link Faker#address()}'s {@link net.datafaker.Address#streetName()}. + * {@link BaseFaker#address()}'s {@link net.datafaker.Address#streetName()}. */ - protected String resolveExpression(String expression, Object current, Faker root, FakerContext context) { + protected String resolveExpression(String expression, Object current, ProviderRegistration root, FakerContext context) { if (expression.indexOf('}') == -1 || !expression.contains("#{")) { return expression; } @@ -589,7 +590,7 @@ private List splitExpressions(String expression) { * * @return null if unable to resolve */ - private Object resolveExpression(String directive, String[] args, Object current, Faker root, FakerContext context) { + private Object resolveExpression(String directive, String[] args, Object current, ProviderRegistration root, FakerContext context) { // name.name (resolve locally) // Name.first_name (resolve to faker.name().firstName()) if (directive.trim().isEmpty()) { @@ -749,12 +750,12 @@ private Supplier resolveFromMethodOn(Object obj, String directive, Strin } /** - * Accepts a {@link Faker} instance and a name.firstName style 'key' which is resolved to the return value of: - * {@link Faker#name()}'s {@link net.datafaker.Name#firstName()} method. + * Accepts a {@link BaseFaker} instance and a name.firstName style 'key' which is resolved to the return value of: + * {@link BaseFaker#name()}'s {@link net.datafaker.Name#firstName()} method. * * @throws RuntimeException if there's a problem invoking the method or it doesn't exist. */ - private Supplier resolveFakerObjectAndMethod(Faker faker, String key, String[] args) { + private Supplier resolveFakerObjectAndMethod(ProviderRegistration faker, String key, String[] args) { int index = key.indexOf('.'); final String[] classAndMethod; if (index == -1) { diff --git a/src/main/java/net/datafaker/Basketball.java b/src/main/java/net/datafaker/sport/Basketball.java similarity index 85% rename from src/main/java/net/datafaker/Basketball.java rename to src/main/java/net/datafaker/sport/Basketball.java index d9e07513d..4e6c249aa 100644 --- a/src/main/java/net/datafaker/Basketball.java +++ b/src/main/java/net/datafaker/sport/Basketball.java @@ -1,4 +1,6 @@ -package net.datafaker; +package net.datafaker.sport; + +import net.datafaker.AbstractProvider; /** * Generate random components of basketball game, e.g. teams, coaches, positions and players. @@ -6,14 +8,14 @@ * @author unknown and irakatz * @since 0.8.0 */ -public class Basketball extends AbstractProvider { +public class Basketball extends AbstractProvider { /** * Create a constructor for Basketball. * * @param faker The Faker instance for generating random, different kinds of disease, e.g. the internal disease. */ - protected Basketball(Faker faker) { + protected Basketball(SportProviders faker) { super(faker); } diff --git a/src/main/java/net/datafaker/EnglandFootBall.java b/src/main/java/net/datafaker/sport/EnglandFootBall.java similarity index 52% rename from src/main/java/net/datafaker/EnglandFootBall.java rename to src/main/java/net/datafaker/sport/EnglandFootBall.java index f3d954097..520e921a3 100644 --- a/src/main/java/net/datafaker/EnglandFootBall.java +++ b/src/main/java/net/datafaker/sport/EnglandFootBall.java @@ -1,11 +1,13 @@ -package net.datafaker; +package net.datafaker.sport; + +import net.datafaker.AbstractProvider; /** * @since 0.9.0 */ -public class EnglandFootBall extends AbstractProvider { +public class EnglandFootBall extends AbstractProvider { - protected EnglandFootBall(final Faker faker) { + protected EnglandFootBall(final SportProviders faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Football.java b/src/main/java/net/datafaker/sport/Football.java similarity index 72% rename from src/main/java/net/datafaker/Football.java rename to src/main/java/net/datafaker/sport/Football.java index fb77e24a9..b013634db 100644 --- a/src/main/java/net/datafaker/Football.java +++ b/src/main/java/net/datafaker/sport/Football.java @@ -1,11 +1,13 @@ -package net.datafaker; +package net.datafaker.sport; + +import net.datafaker.AbstractProvider; /** * @since 1.5.0 */ -public class Football extends AbstractProvider { +public class Football extends AbstractProvider { - protected Football(Faker faker) { + protected Football(SportProviders faker) { super(faker); } diff --git a/src/main/java/net/datafaker/Formula1.java b/src/main/java/net/datafaker/sport/Formula1.java similarity index 67% rename from src/main/java/net/datafaker/Formula1.java rename to src/main/java/net/datafaker/sport/Formula1.java index e4836f495..73419e2da 100644 --- a/src/main/java/net/datafaker/Formula1.java +++ b/src/main/java/net/datafaker/sport/Formula1.java @@ -1,11 +1,13 @@ -package net.datafaker; +package net.datafaker.sport; + +import net.datafaker.AbstractProvider; /** * @since 1.2.0 */ -public class Formula1 extends AbstractProvider { +public class Formula1 extends AbstractProvider { - protected Formula1(Faker faker) { + protected Formula1(SportProviders faker) { super(faker); } diff --git a/src/main/java/net/datafaker/sport/SportFaker.java b/src/main/java/net/datafaker/sport/SportFaker.java new file mode 100644 index 000000000..6fdd5b607 --- /dev/null +++ b/src/main/java/net/datafaker/sport/SportFaker.java @@ -0,0 +1,6 @@ +package net.datafaker.sport; + +import net.datafaker.BaseFaker; + +public class SportFaker extends BaseFaker implements SportProviders { +} diff --git a/src/main/java/net/datafaker/sport/SportProviders.java b/src/main/java/net/datafaker/sport/SportProviders.java new file mode 100644 index 000000000..f34005bb6 --- /dev/null +++ b/src/main/java/net/datafaker/sport/SportProviders.java @@ -0,0 +1,26 @@ +package net.datafaker.sport; + +import net.datafaker.ProviderRegistration; + +public interface SportProviders extends ProviderRegistration { + default Basketball basketball() { + return getProvider(Basketball.class, Basketball::new); + } + + default EnglandFootBall englandfootball() { + return getProvider(EnglandFootBall.class, EnglandFootBall::new); + } + + default Football football() { + return getProvider(Football.class, Football::new); + } + + default Formula1 formula1() { + return getProvider(Formula1.class, Formula1::new); + } + + default Volleyball volleyball() { + return getProvider(Volleyball.class, Volleyball::new); + } + +} diff --git a/src/main/java/net/datafaker/Volleyball.java b/src/main/java/net/datafaker/sport/Volleyball.java similarity index 71% rename from src/main/java/net/datafaker/Volleyball.java rename to src/main/java/net/datafaker/sport/Volleyball.java index 7ac9e1b6e..96c73233a 100644 --- a/src/main/java/net/datafaker/Volleyball.java +++ b/src/main/java/net/datafaker/sport/Volleyball.java @@ -1,11 +1,13 @@ -package net.datafaker; +package net.datafaker.sport; + +import net.datafaker.AbstractProvider; /** * @since 1.3.0 */ -public class Volleyball extends AbstractProvider { +public class Volleyball extends AbstractProvider { - protected Volleyball(Faker faker) { + protected Volleyball(SportProviders faker) { super(faker); } diff --git a/src/test/java/net/datafaker/AbstractBaseFakerTest.java b/src/test/java/net/datafaker/AbstractBaseFakerTest.java new file mode 100644 index 000000000..84f382053 --- /dev/null +++ b/src/test/java/net/datafaker/AbstractBaseFakerTest.java @@ -0,0 +1,45 @@ +package net.datafaker; + +import org.assertj.core.api.Condition; +import org.junit.jupiter.api.BeforeEach; +import org.mockito.MockitoAnnotations; + +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogManager; +import java.util.logging.Logger; + +public class AbstractBaseFakerTest { + + protected static final Function, Condition> CONDITION_FUNCTION = characterPredicate -> new Condition<>(s -> { + for (int i = 0; i < s.length(); i++) { + if (!characterPredicate.test(s.charAt(i))) { + return false; + } + } + return true; + }, "condition"); + + protected final T faker = getFaker(); + + @BeforeEach + public void before() { + try (AutoCloseable ac = MockitoAnnotations.openMocks(this)) { + + Logger rootLogger = LogManager.getLogManager().getLogger(""); + Handler[] handlers = rootLogger.getHandlers(); + rootLogger.setLevel(Level.INFO); + for (Handler h : handlers) { + h.setLevel(Level.INFO); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + protected T getFaker() { + return (T) new BaseFaker(); + } +} diff --git a/src/test/java/net/datafaker/AbstractFakerTest.java b/src/test/java/net/datafaker/AbstractFakerTest.java index af1d2c225..ff73f1e1a 100644 --- a/src/test/java/net/datafaker/AbstractFakerTest.java +++ b/src/test/java/net/datafaker/AbstractFakerTest.java @@ -1,41 +1,7 @@ package net.datafaker; -import org.assertj.core.api.Condition; -import org.junit.jupiter.api.BeforeEach; -import org.mockito.MockitoAnnotations; - -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.logging.Handler; -import java.util.logging.Level; -import java.util.logging.LogManager; -import java.util.logging.Logger; - -public class AbstractFakerTest { - - protected static final Function, Condition> CONDITION_FUNCTION = characterPredicate -> new Condition<>(s -> { - for (int i = 0; i < s.length(); i++) { - if (!characterPredicate.test(s.charAt(i))) { - return false; - } - } - return true; - }, "condition"); - - protected final Faker faker = new Faker(); - - @BeforeEach - public void before() { - try (AutoCloseable ac = MockitoAnnotations.openMocks(this)) { - - Logger rootLogger = LogManager.getLogManager().getLogger(""); - Handler[] handlers = rootLogger.getHandlers(); - rootLogger.setLevel(Level.INFO); - for (Handler h : handlers) { - h.setLevel(Level.INFO); - } - } catch (Exception e) { - throw new RuntimeException(e); - } +public class AbstractFakerTest extends AbstractBaseFakerTest { + protected Faker getFaker() { + return new Faker(); } } diff --git a/src/test/java/net/datafaker/AddressTest.java b/src/test/java/net/datafaker/AddressTest.java index 2033989ef..faa233db6 100644 --- a/src/test/java/net/datafaker/AddressTest.java +++ b/src/test/java/net/datafaker/AddressTest.java @@ -19,7 +19,7 @@ class AddressTest extends AbstractFakerTest { - private final char decimalSeparator = new DecimalFormatSymbols(faker.getLocale()).getDecimalSeparator(); + private final char decimalSeparator = new DecimalFormatSymbols(faker.getContext().getLocale()).getDecimalSeparator(); private static final Faker US_FAKER = new Faker(new Locale("en", "US")); private static final Faker NL_FAKER = new Faker(new Locale("nl" ,"NL")); private static final Faker RU_FAKER = new Faker(new Locale("ru", "RU")); @@ -45,13 +45,13 @@ class AddressTest extends AbstractFakerTest { @Test void testStreetName() { - final Faker faker = new Faker(); + final BaseFaker faker = new BaseFaker(); assertThat(faker.address().streetName()).isNotEmpty(); } @Test void testBulgarianStreetName() { - final Faker localFaker = new Faker(new Locale("bg")); + final BaseFaker localFaker = new BaseFaker(new Locale("bg")); assertThat(localFaker.address().streetName()).isNotEmpty(); } @@ -85,14 +85,14 @@ void testLongitude() { @RepeatedTest(10) void testLocaleLatitude() { - Faker engFaker = new Faker(Locale.ENGLISH); + BaseFaker engFaker = new BaseFaker(Locale.ENGLISH); String engLatStr = engFaker.address().latitude(); assertThat(engLatStr).matches("-?\\d{1,3}\\.\\d+"); } @RepeatedTest(10) void testLocaleLongitude() { - Faker engFaker = new Faker(Locale.ENGLISH); + BaseFaker engFaker = new BaseFaker(Locale.ENGLISH); String engLatStr = engFaker.address().longitude(); assertThat(engLatStr).matches("-?\\d{1,3}\\.\\d+"); } @@ -135,8 +135,8 @@ void testStreetAddressIncludeSecondary() { @Test void testCityWithLocaleFranceAndSeed() { long seed = 1L; - Faker firstFaker = new Faker(Locale.FRANCE, new Random(seed)); - Faker secondFaker = new Faker(Locale.FRANCE, new Random(seed)); + BaseFaker firstFaker = new BaseFaker(Locale.FRANCE, new Random(seed)); + BaseFaker secondFaker = new BaseFaker(Locale.FRANCE, new Random(seed)); assertThat(firstFaker.address().city()).isEqualTo(secondFaker.address().city()); } @@ -147,19 +147,19 @@ void testFullAddress() { @Test void testZipCodeByState() { - final Faker localFaker = new Faker(new Locale("en", "US")); + final BaseFaker localFaker = new BaseFaker(new Locale("en", "US")); assertThat(localFaker.address().zipCodeByState(localFaker.address().stateAbbr())).matches("[0-9]{5}"); } @Test void testHungarianZipCodeByState() { - final Faker localFaker = new Faker(new Locale("hu")); + final BaseFaker localFaker = new BaseFaker(new Locale("hu")); assertThat(localFaker.address().zipCodeByState(localFaker.address().stateAbbr())).matches("[0-9]{4}"); } @Test void testCountyByZipCode() { - final Faker localFaker = new Faker(new Locale("en", "US")); + final BaseFaker localFaker = new BaseFaker(new Locale("en", "US")); assertThat(localFaker.address().countyByZipCode("47732")).isNotEmpty(); } @@ -167,7 +167,7 @@ void testCountyByZipCode() { @NullSource @ValueSource(strings = {"1", "asd", "qwe", "wrong"}) void testCountyForWrongZipCode(String zipCode) { - final Faker localFaker = new Faker(new Locale("en", "US")); + final BaseFaker localFaker = new BaseFaker(new Locale("en", "US")); assertThatThrownBy(() -> localFaker.address().countyByZipCode(zipCode)) .isInstanceOf(RuntimeException.class) .hasMessage("County are not configured for postcode " + zipCode); @@ -200,19 +200,19 @@ void testMailbox() { @Test void testZipIsFiveChars() { - final Faker localFaker = new Faker(new Locale("en", "US")); + final BaseFaker localFaker = new BaseFaker(new Locale("en", "US")); assertThat(localFaker.address().zipCode()).hasSize(5); } @Test void testZipPlus4IsTenChars() { - final Faker localFaker = new Faker(new Locale("en", "US")); + final BaseFaker localFaker = new BaseFaker(new Locale("en", "US")); assertThat(localFaker.address().zipCodePlus4()).hasSize(10); // includes dash } @Test void testZipPlus4IsNineDigits() { - final Faker localFaker = new Faker(new Locale("en", "US")); + final BaseFaker localFaker = new BaseFaker(new Locale("en", "US")); final String[] zipCodeParts = localFaker.address().zipCodePlus4().split("-"); assertThat(zipCodeParts[0]).matches("[0-9]{5}"); assertThat(zipCodeParts[1]).matches("[0-9]{4}"); @@ -221,43 +221,43 @@ void testZipPlus4IsNineDigits() { @RepeatedTest(100) void testLatLonEnUs() { assertThat(US_FAKER.address().latLon()) - .matches(BI_LAT_LON_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(US_FAKER.getLocale()), ",")); + .matches(BI_LAT_LON_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(US_FAKER.getContext().getLocale()), ",")); } @RepeatedTest(100) void testLatLonNl() { assertThat(NL_FAKER.address().latLon()) - .matches(BI_LAT_LON_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(NL_FAKER.getLocale()), ",")); + .matches(BI_LAT_LON_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(NL_FAKER.getContext().getLocale()), ",")); } @RepeatedTest(100) void testLonLatEnUs() { assertThat(US_FAKER.address().lonLat()) - .matches(BI_LON_LAT_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(US_FAKER.getLocale()), ",")); + .matches(BI_LON_LAT_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(US_FAKER.getContext().getLocale()), ",")); } @RepeatedTest(100) void testLonLatNl() { assertThat(NL_FAKER.address().lonLat()) - .matches(BI_LON_LAT_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(NL_FAKER.getLocale()), ",")); + .matches(BI_LON_LAT_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(NL_FAKER.getContext().getLocale()), ",")); } @Test void testLonLatRU() { assertThat(RU_FAKER.address().lonLat(";")) - .matches(BI_LON_LAT_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(RU_FAKER.getLocale()), ";")); + .matches(BI_LON_LAT_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(RU_FAKER.getContext().getLocale()), ";")); } @Test void testLatLonRU() { assertThat(RU_FAKER.address().latLon(";")) - .matches(BI_LAT_LON_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(RU_FAKER.getLocale()), ";")); + .matches(BI_LAT_LON_REGEX.apply(ESCAPED_DECIMAL_SEPARATOR.apply(RU_FAKER.getContext().getLocale()), ";")); } @ParameterizedTest @ValueSource(strings = {"bg", "ru", "uk", "by"}) void nonDefaultLocaleStreetName(String locale) { - Faker localFaker = new Faker(new Locale(locale)); + BaseFaker localFaker = new BaseFaker(new Locale(locale)); assertThat(localFaker.address().streetName()).isNotEmpty(); } } diff --git a/src/test/java/net/datafaker/BasketballTest.java b/src/test/java/net/datafaker/BasketballTest.java index 27cf96840..cfde65764 100644 --- a/src/test/java/net/datafaker/BasketballTest.java +++ b/src/test/java/net/datafaker/BasketballTest.java @@ -1,10 +1,11 @@ package net.datafaker; +import net.datafaker.sport.AbstractSportFakerTest; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; -class BasketballTest extends AbstractFakerTest { +class BasketballTest extends AbstractSportFakerTest { @Test void testPositions() { diff --git a/src/test/java/net/datafaker/CodeTest.java b/src/test/java/net/datafaker/CodeTest.java index 3628deb0e..7a81578e7 100644 --- a/src/test/java/net/datafaker/CodeTest.java +++ b/src/test/java/net/datafaker/CodeTest.java @@ -14,7 +14,7 @@ class CodeTest extends AbstractFakerTest { @RepeatedTest(100) void isbn10DefaultIsNoSeparator() { - final Faker faker = new Faker(); + final BaseFaker faker = new BaseFaker(); String isbn10 = faker.code().isbn10(); final ISBNValidator isbnValidator = ISBNValidator.getInstance(false); @@ -24,7 +24,7 @@ void isbn10DefaultIsNoSeparator() { @RepeatedTest(100) void isbn13DefaultIsNoSeparator() { - final Faker faker = new Faker(); + final BaseFaker faker = new BaseFaker(); String isbn13 = faker.code().isbn13(); final ISBNValidator isbnValidator = ISBNValidator.getInstance(false); @@ -34,7 +34,7 @@ void isbn13DefaultIsNoSeparator() { @RepeatedTest(100) void testIsbn10() { - final Faker faker = new Faker(); + final BaseFaker faker = new BaseFaker(); final String isbn10NoSep = faker.code().isbn10(false); final String isbn10Sep = faker.code().isbn10(true); final ISBNValidator isbnValidator = ISBNValidator.getInstance(false); @@ -47,7 +47,7 @@ void testIsbn10() { @RepeatedTest(100) void testIsbn13() { - final Faker faker = new Faker(); + final BaseFaker faker = new BaseFaker(); final String isbn13NoSep = faker.code().isbn13(false); final String isbn13Sep = faker.code().isbn13(true); final ISBNValidator isbnValidator = ISBNValidator.getInstance(false); @@ -69,7 +69,7 @@ private void assertIsValidISBN13(String isbn13, ISBNValidator isbnValidator) { @RepeatedTest(100) void testOverrides() { - Faker faker = new Faker(new Locale("test")); + BaseFaker faker = new BaseFaker(new Locale("test")); final String isbn10Sep = faker.code().isbn10(true); final String isbn13Sep = faker.code().isbn13(true); diff --git a/src/test/java/net/datafaker/CommerceTest.java b/src/test/java/net/datafaker/CommerceTest.java index 82252d984..bf6461ba0 100644 --- a/src/test/java/net/datafaker/CommerceTest.java +++ b/src/test/java/net/datafaker/CommerceTest.java @@ -6,9 +6,9 @@ import static org.assertj.core.api.Assertions.assertThat; -class CommerceTest extends AbstractFakerTest { +class CommerceTest extends AbstractBaseFakerTest { - private final char decimalSeparator = new DecimalFormatSymbols(faker.getLocale()).getDecimalSeparator(); + private final char decimalSeparator = new DecimalFormatSymbols(faker.getContext().getLocale()).getDecimalSeparator(); private static final String CAPITALIZED_WORD_REGEX = "[A-Z][a-z]+"; diff --git a/src/test/java/net/datafaker/CustomFakerTest.java b/src/test/java/net/datafaker/CustomFakerTest.java index dd31eb232..1a9774840 100644 --- a/src/test/java/net/datafaker/CustomFakerTest.java +++ b/src/test/java/net/datafaker/CustomFakerTest.java @@ -13,7 +13,7 @@ * This is a demo of how to create a custom faker and register a custom faker in it. */ class CustomFakerTest { - public static class MyCustomFaker extends Faker { + public static class MyCustomFaker extends BaseFaker { public Insect insect() { return getProvider(Insect.class, Insect::new, this); } @@ -23,10 +23,10 @@ public InsectFromFile insectFromFile() { } } - public static class Insect extends AbstractProvider { + public static class Insect extends AbstractProvider { private static final String[] INSECT_NAMES = new String[]{"Ant", "Beetle", "Butterfly", "Wasp"}; - public Insect(Faker faker) { + public Insect(BaseFaker faker) { super(faker); } @@ -35,10 +35,10 @@ public String nextInsectName() { } } - public static class InsectFromFile extends AbstractProvider { + public static class InsectFromFile extends AbstractProvider { private static final String KEY = "insectsfromfile"; - public InsectFromFile(Faker faker) { + public InsectFromFile(BaseFaker faker) { super(faker); faker.addPath(Locale.ENGLISH, Paths.get("src/test/ants.yml")); faker.addPath(Locale.ENGLISH, Paths.get("src/test/bees.yml")); @@ -55,13 +55,13 @@ public String bee() { @Test void addNullExistingPath() { - assertThatThrownBy(() -> new Faker().addPath(Locale.ENGLISH, null)) + assertThatThrownBy(() -> new BaseFaker().addPath(Locale.ENGLISH, null)) .isInstanceOf(IllegalArgumentException.class); } @Test void addNonExistingPath() { - assertThatThrownBy(() -> new Faker().addPath(Locale.ENGLISH, Paths.get("non-existing-file"))) + assertThatThrownBy(() -> new BaseFaker().addPath(Locale.ENGLISH, Paths.get("non-existing-file"))) .isInstanceOf(IllegalArgumentException.class); } @@ -91,13 +91,13 @@ void insectBeeTestExpressionFromFile() { @Test void insectBeeTestExpressionFromFileWithoutExtraFaker() { - Faker faker = new Faker(); + BaseFaker faker = new BaseFaker(); assertThat(faker.getProvider(InsectFromFile. class, f -> new InsectFromFile(f), faker).bee()).endsWith("bee"); } @Test void insectTestWithoutExtraFaker() { - Faker faker = new Faker(); + BaseFaker faker = new BaseFaker(); assertThat(faker.getProvider(Insect. class, f -> new Insect(f), faker).nextInsectName()).matches("[A-Za-z ]+"); } } diff --git a/src/test/java/net/datafaker/EldenRingTest.java b/src/test/java/net/datafaker/EldenRingTest.java index 8b60baccf..2ce97d04e 100644 --- a/src/test/java/net/datafaker/EldenRingTest.java +++ b/src/test/java/net/datafaker/EldenRingTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; -class EldenRingTest extends AbstractFakerTest{ +class EldenRingTest extends AbstractFakerTest { @Test void location() { assertThat(faker.eldenRing().location()).matches("[A-Za-z0-9 .]+"); diff --git a/src/test/java/net/datafaker/EnglandFootBallTest.java b/src/test/java/net/datafaker/EnglandFootBallTest.java index 436dd7499..3fba1f8ce 100644 --- a/src/test/java/net/datafaker/EnglandFootBallTest.java +++ b/src/test/java/net/datafaker/EnglandFootBallTest.java @@ -1,11 +1,12 @@ package net.datafaker; +import net.datafaker.sport.AbstractSportFakerTest; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; -class EnglandFootBallTest extends AbstractFakerTest { +class EnglandFootBallTest extends AbstractSportFakerTest { @Test void testLeague() { diff --git a/src/test/java/net/datafaker/FakeCollectionTest.java b/src/test/java/net/datafaker/FakeCollectionTest.java index a4a3748e4..2d151b59c 100644 --- a/src/test/java/net/datafaker/FakeCollectionTest.java +++ b/src/test/java/net/datafaker/FakeCollectionTest.java @@ -75,7 +75,7 @@ void illegalNullRate(double nullRate) { @Test void generateCollectionWithRepeatableFaker() { - Faker seededFaker = new Faker(new Random(10L)); + BaseFaker seededFaker = new BaseFaker(new Random(10L)); List names = faker.collection() .faker(seededFaker) @@ -129,7 +129,7 @@ public String name() { @Override public String value() { - return new Faker().random().nextInt(60, 180) + ""; + return new BaseFaker().random().nextInt(60, 180) + ""; } @Override @@ -152,7 +152,7 @@ public String name() { @Override public String value() { - return String.format("%.1f", new Faker().random().nextDouble(3.2, 5.5)); + return String.format("%.1f", new BaseFaker().random().nextDouble(3.2, 5.5)); } @Override @@ -175,7 +175,7 @@ public String name() { @Override public String value() { - return new Faker().random().nextInt(30, 50) + ""; + return new BaseFaker().random().nextInt(30, 50) + ""; } @Override diff --git a/src/test/java/net/datafaker/FakerConcurrencyModificationExceptionTest.java b/src/test/java/net/datafaker/FakerConcurrencyModificationExceptionTest.java index 33e4e178d..9b0384851 100644 --- a/src/test/java/net/datafaker/FakerConcurrencyModificationExceptionTest.java +++ b/src/test/java/net/datafaker/FakerConcurrencyModificationExceptionTest.java @@ -4,7 +4,7 @@ public class FakerConcurrencyModificationExceptionTest { - private final Faker faker = new Faker(); + private final BaseFaker faker = new BaseFaker(); @Test public void test1() { diff --git a/src/test/java/net/datafaker/FakerTest.java b/src/test/java/net/datafaker/FakerTest.java index 4fc80c7cb..83f4060f8 100644 --- a/src/test/java/net/datafaker/FakerTest.java +++ b/src/test/java/net/datafaker/FakerTest.java @@ -268,15 +268,15 @@ void datafaker87(String expression) { @Test void fakerInstanceCanBeAcquiredViaUtilityMethods() { - assertThat(new Faker()).isInstanceOf(Faker.class); - assertThat(new Faker(Locale.CANADA)).isInstanceOf(Faker.class); - assertThat(new Faker(new Random(1))).isInstanceOf(Faker.class); - assertThat(new Faker(Locale.CHINA, new Random(2))).isInstanceOf(Faker.class); + assertThat(new Faker()).isInstanceOf(BaseFaker.class); + assertThat(new Faker(Locale.CANADA)).isInstanceOf(BaseFaker.class); + assertThat(new Faker(new Random(1))).isInstanceOf(BaseFaker.class); + assertThat(new Faker(Locale.CHINA, new Random(2))).isInstanceOf(BaseFaker.class); } @Test void differentLocalesTest() { - Faker localFaker = new Faker(); + BaseFaker localFaker = new Faker(); Callable stringCallable = () -> localFaker.name().firstName(); localFaker.doWith(stringCallable, new Locale("ru_RU")); localFaker.doWith(stringCallable, Locale.GERMAN); @@ -288,7 +288,7 @@ void differentLocalesTest() { @Test void differentSeeds() { - Faker localFaker = new Faker(); + BaseFaker localFaker = new Faker(); Callable stringCallable = () -> localFaker.name().firstName(); assertThat(localFaker.doWith(stringCallable, 123)) diff --git a/src/test/java/net/datafaker/FinalSpaceTest.java b/src/test/java/net/datafaker/FinalSpaceTest.java index bbdaef1ad..081b649e5 100644 --- a/src/test/java/net/datafaker/FinalSpaceTest.java +++ b/src/test/java/net/datafaker/FinalSpaceTest.java @@ -3,7 +3,6 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; class FinalSpaceTest extends AbstractFakerTest { diff --git a/src/test/java/net/datafaker/FinanceTest.java b/src/test/java/net/datafaker/FinanceTest.java index 1f2e27b03..654d573b1 100644 --- a/src/test/java/net/datafaker/FinanceTest.java +++ b/src/test/java/net/datafaker/FinanceTest.java @@ -61,8 +61,8 @@ void creditCardWithType() { @Test void costaRicaIbanMustBeValid() { final String givenCountryCode = "CR"; - final Faker faker = new Faker(); - final String ibanFaker = faker.finance().iban(givenCountryCode).toUpperCase(faker.getLocale()); + final BaseFaker faker = new BaseFaker(); + final String ibanFaker = faker.finance().iban(givenCountryCode).toUpperCase(faker.getContext().getLocale()); assertThat(fr.marcwrobel.jbanking.iban.Iban.isValid(ibanFaker)).isTrue(); } } diff --git a/src/test/java/net/datafaker/FootballTest.java b/src/test/java/net/datafaker/FootballTest.java index 3663f29ac..36672e003 100644 --- a/src/test/java/net/datafaker/FootballTest.java +++ b/src/test/java/net/datafaker/FootballTest.java @@ -1,9 +1,10 @@ package net.datafaker; +import net.datafaker.sport.AbstractSportFakerTest; import org.junit.jupiter.api.Test; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -class FootballTest extends AbstractFakerTest { +class FootballTest extends AbstractSportFakerTest { @Test public void teams() { diff --git a/src/test/java/net/datafaker/Formula1Test.java b/src/test/java/net/datafaker/Formula1Test.java index 2e57e762a..9e240ca75 100644 --- a/src/test/java/net/datafaker/Formula1Test.java +++ b/src/test/java/net/datafaker/Formula1Test.java @@ -1,10 +1,11 @@ package net.datafaker; +import net.datafaker.sport.AbstractSportFakerTest; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; -class Formula1Test extends AbstractFakerTest { +class Formula1Test extends AbstractSportFakerTest { @Test void driver() { diff --git a/src/test/java/net/datafaker/HololiveTest.java b/src/test/java/net/datafaker/HololiveTest.java index 1666c385a..de6594e2d 100644 --- a/src/test/java/net/datafaker/HololiveTest.java +++ b/src/test/java/net/datafaker/HololiveTest.java @@ -8,7 +8,7 @@ public class HololiveTest extends AbstractFakerTest { - private static final Faker JA_FAKER = new Faker(new Locale("ja")); + private static final BaseFaker JA_FAKER = new BaseFaker(new Locale("ja")); @Test void talent() { diff --git a/src/test/java/net/datafaker/IdNumberTest.java b/src/test/java/net/datafaker/IdNumberTest.java index baa9b8706..d26788909 100644 --- a/src/test/java/net/datafaker/IdNumberTest.java +++ b/src/test/java/net/datafaker/IdNumberTest.java @@ -26,25 +26,25 @@ void testSsnValid() { @RepeatedTest(100) void testValidSwedishSsn() { - final Faker f = new Faker(new Locale("sv_SE")); + final BaseFaker f = new BaseFaker(new Locale("sv_SE")); assertThat(f.idNumber().validSvSeSsn()).matches("\\d{6}[-+]\\d{4}"); } @RepeatedTest(100) void testInvalidSwedishSsn() { - final Faker f = new Faker(new Locale("sv_SE")); + final BaseFaker f = new BaseFaker(new Locale("sv_SE")); assertThat(f.idNumber().invalidSvSeSsn()).matches("\\d{6}[-+]\\d{4}"); } @RepeatedTest(100) void testValidEnZaSsn() { - final Faker f = new Faker(new Locale("en_ZA")); + final BaseFaker f = new BaseFaker(new Locale("en_ZA")); assertThat(f.idNumber().validEnZaSsn()).matches("[0-9]{10}([01])8[0-9]"); } @RepeatedTest(100) void testInvalidEnZaSsn() { - final Faker f = new Faker(new Locale("en_ZA")); + final BaseFaker f = new BaseFaker(new Locale("en_ZA")); assertThat(f.idNumber().inValidEnZaSsn()).matches("[0-9]{10}([01])8[0-9]"); } diff --git a/src/test/java/net/datafaker/InternetTest.java b/src/test/java/net/datafaker/InternetTest.java index 2382a7352..526028041 100644 --- a/src/test/java/net/datafaker/InternetTest.java +++ b/src/test/java/net/datafaker/InternetTest.java @@ -6,7 +6,11 @@ import org.junit.jupiter.api.Test; import java.net.UnknownHostException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; +import java.util.Random; import java.util.stream.Collectors; import static java.lang.Integer.parseInt; @@ -37,7 +41,7 @@ void testSafeEmailAddress() { assertThat(EmailValidator.getInstance().isValid(emailAddress)).isTrue(); emails.add(emailAddress); } - final String safeDomain = faker.resolve("internet.safe_email"); + final String safeDomain = faker.internet().resolve("internet.safe_email"); assertThat(emails.stream().filter(t -> t.endsWith("@" + safeDomain)).collect(Collectors.toList())) .isNotEmpty(); @@ -52,7 +56,7 @@ void testSafeEmailAddressWithLocalPartParameter() { assertThat(EmailValidator.getInstance().isValid(emailAddress)).isTrue(); emails.add(emailAddress); } - final String safeDomain = faker.resolve("internet.safe_email"); + final String safeDomain = faker.internet().resolve("internet.safe_email"); assertThat(emails.stream().filter(t -> t.endsWith("@" + safeDomain)).collect(Collectors.toList())) .isNotEmpty(); @@ -109,7 +113,7 @@ void testPassword() { @Test void testPasswordWithFixedLength() { - String password = new Faker().internet().password(32, 32, true, true, true); + String password = new BaseFaker().internet().password(32, 32, true, true, true); assertThat(password).hasSize(32); } @@ -312,8 +316,8 @@ void testSlug() { void testUuidv3ConstantRandomSeed() { final int randomSeed = 42; // Two fakers, same random seed. - final Faker faker1 = new Faker(new Random(randomSeed)); - final Faker faker2 = new Faker(new Random((randomSeed))); + final BaseFaker faker1 = new BaseFaker(new Random(randomSeed)); + final BaseFaker faker2 = new BaseFaker(new Random((randomSeed))); // Keep it simple and without loops, three examples should suffice to act as the general case. final String faker1Uuidv3First = faker1.internet().uuidv3(); final String faker1Uuidv3Second = faker1.internet().uuidv3(); @@ -341,7 +345,7 @@ void testUuid() { void testFarsiIDNs() { // in this case, we're just making sure Farsi doesn't blow up. // there have been issues with Farsi not being produced. - final Faker f = new Faker(new Locale("fa")); + final BaseFaker f = new BaseFaker(new Locale("fa")); assertThat(f.internet().domainName()).isNotEmpty(); assertThat(f.internet().emailAddress()).isNotEmpty(); assertThat(f.internet().safeEmailAddress()).isNotEmpty(); diff --git a/src/test/java/net/datafaker/LocalePickerExample.java b/src/test/java/net/datafaker/LocalePickerExample.java index b0ce1cb1a..7d8925eb3 100644 --- a/src/test/java/net/datafaker/LocalePickerExample.java +++ b/src/test/java/net/datafaker/LocalePickerExample.java @@ -24,7 +24,7 @@ public static void main(String[] args) { // EXAMPLE: GET A FAKER OBJECT WITH A RANDOM LOCALE (SELECTED WITH REPLACEMENT) // Instantiate a Faker object with a randomized locale Locale pickedLocale = lp.getLocale(); - Faker faker = new Faker(pickedLocale); + BaseFaker faker = new BaseFaker(pickedLocale); // Use Faker object to generate data in the randomly selected locale String fullName = faker.name().fullName(); @@ -40,13 +40,13 @@ public static void main(String[] args) { // EXAMPLE: ROTATE THROUGH ALL SUPPORTED LOCALES TO GENERATE USER DATA // LOCALES PICKED AT RANDOM (SELECTED WITHOUT REPLACEMENT) System.out.println("EXAMPLE: ROTATE THROUGH ALL LOCALES AT RANDOM (WITHOUT REPLACEMENT)"); - Faker currentFaker; + BaseFaker currentFaker; int numSupportedLocales = allLocales.size(); for (int i = 0; i < numSupportedLocales; i++) { Locale currentLocale = lp.getLocaleWithoutReplacement(); System.out.println("Random Locale: " + currentLocale.toString()); - currentFaker = new Faker(currentLocale); + currentFaker = new BaseFaker(currentLocale); System.out.println(" First Name: " + currentFaker.name().firstName()); System.out.println(" Last Name: " + currentFaker.name().lastName()); System.out.println(" Street Address: " + currentFaker.address().streetAddress()); diff --git a/src/test/java/net/datafaker/MedicalTest.java b/src/test/java/net/datafaker/MedicalTest.java index b8fe54c97..98305893e 100644 --- a/src/test/java/net/datafaker/MedicalTest.java +++ b/src/test/java/net/datafaker/MedicalTest.java @@ -32,7 +32,7 @@ void testSymptom() { @Test void testDiagnosisCodeUS() { // will use icd-10-cm - https://www.johndcook.com/blog/2019/05/05/regex_icd_codes/ - Faker faker = new Faker(Locale.US); + BaseFaker faker = new BaseFaker(Locale.US); for (int i = 0; i < 100; i++) { // Loading the US data is slow. String actual = faker.medical().diagnosisCode(); @@ -43,7 +43,7 @@ void testDiagnosisCodeUS() { @RepeatedTest(100) void testDiagnosisCodeAU() { // will use icd-10-am - https://ace.ihpa.gov.au/Downloads/Current/ICD-10-AM-ACHI-ACS%2011th%20Edition/Education/11th%20Edition%20PDF%20files/Coding-Exercise-Workbook-Eleventh-Edition%20V2-15%20Jun%202019.pdf - Faker faker = new Faker(new Locale("en", "au")); + BaseFaker faker = new BaseFaker(new Locale("en", "au")); String actual = faker.medical().diagnosisCode(); assertThat(actual).matches("[A-Z][0-9]{1,2}\\.[0-9]{1,2}"); @@ -52,7 +52,7 @@ void testDiagnosisCodeAU() { @RepeatedTest(100) void testDiagnosisCodeNotAustraliaNorUS() { // will use icd-10 - variation of https://regexlib.com/REDetails.aspx?regexp_id=2276&AspxAutoDetectCookieSupport=1 - Faker faker = new Faker(Locale.FRANCE); + BaseFaker faker = new BaseFaker(Locale.FRANCE); String actual = faker.medical().diagnosisCode(); assertThat(actual).matches("^[A-Z][0-9]{1,2}(\\.[0-9])?$"); diff --git a/src/test/java/net/datafaker/NameTest.java b/src/test/java/net/datafaker/NameTest.java index 852ea99e2..23452cd21 100644 --- a/src/test/java/net/datafaker/NameTest.java +++ b/src/test/java/net/datafaker/NameTest.java @@ -13,7 +13,7 @@ class NameTest extends AbstractFakerTest { @Spy - private Faker mockedFaker; + private BaseFaker mockedFaker; @Test void testName() { @@ -46,7 +46,7 @@ void testFullName() { @Test void testFullNameArabic() { - Faker localFaker = new Faker(new Locale("ar")); + BaseFaker localFaker = new BaseFaker(new Locale("ar")); for (int i = 0; i < 25; i++) { assertThat(localFaker.name().fullName()).matches("^[\\u0600-\\u06FF\\u0750-\\u077F ]+$"); diff --git a/src/test/java/net/datafaker/PassportTest.java b/src/test/java/net/datafaker/PassportTest.java index 7d6a3defc..1505acce1 100644 --- a/src/test/java/net/datafaker/PassportTest.java +++ b/src/test/java/net/datafaker/PassportTest.java @@ -10,13 +10,13 @@ class PassportTest extends AbstractFakerTest { @RepeatedTest(10) void testDefaultLocale() { - assertThat(new Faker().passport().valid()) + assertThat(new BaseFaker().passport().valid()) .hasSize(9); } @RepeatedTest(10) void testValidDutch() { - assertThat(new Faker(new Locale("nl", "nl")).passport().valid()) + assertThat(new BaseFaker(new Locale("nl", "nl")).passport().valid()) .hasSize(9) .doesNotContain("O") .matches(".*?\\d$"); @@ -24,57 +24,57 @@ void testValidDutch() { @RepeatedTest(10) void testValidChinese() { - assertThat(new Faker(new Locale("zh", "CN")).passport().valid()) + assertThat(new BaseFaker(new Locale("zh", "CN")).passport().valid()) .hasSize(9); } @RepeatedTest(10) void testValidUnitedStates() { - assertThat(new Faker(new Locale("en", "US")).passport().valid()) + assertThat(new BaseFaker(new Locale("en", "US")).passport().valid()) .hasSize(9); } @RepeatedTest(10) void testValidAustralia() { - assertThat(new Faker(new Locale("en", "AU")).passport().valid()) + assertThat(new BaseFaker(new Locale("en", "AU")).passport().valid()) .hasSize(8) .matches("[A-Z][0-9]{7}"); } @RepeatedTest(10) void testValidCanada() { - assertThat(new Faker(new Locale("en", "CA")).passport().valid()) + assertThat(new BaseFaker(new Locale("en", "CA")).passport().valid()) .hasSize(8); } @RepeatedTest(10) void testValidUnitedKingdom() { - assertThat(new Faker(new Locale("en", "GB")).passport().valid()) + assertThat(new BaseFaker(new Locale("en", "GB")).passport().valid()) .hasSize(9); } @RepeatedTest(10) void testValidJapan() { - assertThat(new Faker(new Locale("ja")).passport().valid()) + assertThat(new BaseFaker(new Locale("ja")).passport().valid()) .hasSize(9) .matches("[MT][A-Z][0-9]{7}"); } @RepeatedTest(10) void testValidSpain() { - assertThat(new Faker(new Locale("es")).passport().valid()) + assertThat(new BaseFaker(new Locale("es")).passport().valid()) .matches("[A-z0-9]{2,3}[0-9]{6}"); } @RepeatedTest(10) void testValidBulgaria() { - assertThat(new Faker(new Locale("bg")).passport().valid()) + assertThat(new BaseFaker(new Locale("bg")).passport().valid()) .hasSize(9); } @RepeatedTest(10) void testValidFinland() { - assertThat(new Faker(new Locale("fi", "FI")).passport().valid()) + assertThat(new BaseFaker(new Locale("fi", "FI")).passport().valid()) .hasSize(9); } diff --git a/src/test/java/net/datafaker/PhoneNumberTest.java b/src/test/java/net/datafaker/PhoneNumberTest.java index 9156c4034..d9100a5a9 100644 --- a/src/test/java/net/datafaker/PhoneNumberTest.java +++ b/src/test/java/net/datafaker/PhoneNumberTest.java @@ -15,7 +15,7 @@ class PhoneNumberTest extends AbstractFakerTest { @Test void testCellPhone_enUS() { - final Faker f = new Faker(Locale.US); + final BaseFaker f = new BaseFaker(Locale.US); String cellPhone = f.phoneNumber().cellPhone(); assertThat(cellPhone).matches("\\(?\\d+\\)?([- .]\\d+){1,3}"); } @@ -23,7 +23,7 @@ void testCellPhone_enUS() { @RepeatedTest(10) void testAllCellPhone_enUS() throws NumberParseException { final PhoneNumberUtil util = PhoneNumberUtil.getInstance(); - String phoneNumber = new Faker(new Locale("en_US")).phoneNumber().phoneNumber(); + String phoneNumber = new BaseFaker(new Locale("en_US")).phoneNumber().phoneNumber(); Phonenumber.PhoneNumber proto = util.parse(phoneNumber, "US"); assertThat(util.isValidNumberForRegion(proto, "US")).as(phoneNumber).isTrue(); } @@ -32,7 +32,7 @@ void testAllCellPhone_enUS() throws NumberParseException { @RepeatedTest(10) void testAllCellPhone_svSE() throws NumberParseException { final PhoneNumberUtil util = PhoneNumberUtil.getInstance(); - String phoneNumber = new Faker(new Locale("sv_SE")).phoneNumber().phoneNumber(); + String phoneNumber = new BaseFaker(new Locale("sv_SE")).phoneNumber().phoneNumber(); Phonenumber.PhoneNumber proto = util.parse(phoneNumber, "SE"); assertThat(util.isValidNumberForRegion(proto, "SE")).as(phoneNumber).isTrue(); } @@ -41,7 +41,7 @@ void testAllCellPhone_svSE() throws NumberParseException { @RepeatedTest(10) void testAllCellPhone_csCZ() throws NumberParseException { final PhoneNumberUtil util = PhoneNumberUtil.getInstance(); - String phoneNumber = new Faker(new Locale("cs_CZ")).phoneNumber().phoneNumber(); + String phoneNumber = new BaseFaker(new Locale("cs_CZ")).phoneNumber().phoneNumber(); Phonenumber.PhoneNumber proto = util.parse(phoneNumber, "CZ"); assertThat(util.isValidNumberForRegion(proto, "CZ")).as(phoneNumber).isTrue(); } @@ -51,7 +51,7 @@ void testAllCellPhone_csCZ() throws NumberParseException { void testAllCellPhone_enGB() throws NumberParseException { final PhoneNumberUtil util = PhoneNumberUtil.getInstance(); int errorCount = 0; - final Faker faker = new Faker(new Locale("en_GB")); + final BaseFaker faker = new BaseFaker(new Locale("en_GB")); for (int i = 0; i < 10; i++) { String phoneNumber = faker.phoneNumber().phoneNumber(); Phonenumber.PhoneNumber proto = util.parse(phoneNumber, "GB"); @@ -70,7 +70,7 @@ void testAllCellPhone_nbNO() throws NumberParseException { final PhoneNumberUtil util = PhoneNumberUtil.getInstance(); int errorCount = 0; - final Faker faker = new Faker(new Locale("nb_NO")); + final BaseFaker faker = new BaseFaker(new Locale("nb_NO")); for (int i = 0; i < 10; i++) { String phoneNumber = faker.phoneNumber().phoneNumber(); Phonenumber.PhoneNumber proto = util.parse(phoneNumber, "NO"); @@ -88,14 +88,14 @@ void testAllCellPhone_nbNO() throws NumberParseException { @RepeatedTest(10) void testAllCellPhone_nl() throws NumberParseException { final PhoneNumberUtil util = PhoneNumberUtil.getInstance(); - String phoneNumber = new Faker(new Locale("nl_NL")).phoneNumber().phoneNumber(); + String phoneNumber = new BaseFaker(new Locale("nl_NL")).phoneNumber().phoneNumber(); Phonenumber.PhoneNumber proto = util.parse(phoneNumber, "NL"); assertThat(util.isValidNumberForRegion(proto, "NL")).as(phoneNumber).isTrue(); } @Test void testPhone_esMx() { - final Faker f = new Faker(new Locale("es_MX")); + final BaseFaker f = new BaseFaker(new Locale("es_MX")); for (int i = 0; i < 10; i++) { assertThat(f.phoneNumber().cellPhone()).matches("(044 )?\\(?\\d+\\)?([- .]\\d+){1,3}"); assertThat(f.phoneNumber().phoneNumber()).matches("\\(?\\d+\\)?([- .]\\d+){1,3}"); @@ -106,7 +106,7 @@ void testPhone_esMx() { void testPhone_CA() { final Locale[] locales = new Locale[]{Locale.CANADA, new Locale("ca")}; for (Locale locale : locales) { - final Faker f = new Faker(locale); + final BaseFaker f = new BaseFaker(locale); final String canadianAreaCode = "403|587|780|825|236|250|604|672|778|204|431|506|" + "709|782|902|226|249|289|343|365|416|437|519|548|613|647|705|807|905|367|" + "418|438|450|514|579|581|819|873|306|639|867"; @@ -121,7 +121,7 @@ void testPhone_CA() { @RepeatedTest(10) void testAllCellPhone_enPh() throws NumberParseException { final PhoneNumberUtil util = PhoneNumberUtil.getInstance(); - String phoneNumber = new Faker(new Locale("en_PH")).phoneNumber().phoneNumber(); + String phoneNumber = new BaseFaker(new Locale("en_PH")).phoneNumber().phoneNumber(); Phonenumber.PhoneNumber proto = util.parse(phoneNumber, "PH"); assertThat(util.isValidNumberForRegion(proto, "PH")).as(phoneNumber).isTrue(); } diff --git a/src/test/java/net/datafaker/PhoneNumberValidityFinderTest.java b/src/test/java/net/datafaker/PhoneNumberValidityFinderTest.java index 7dfb06bec..e7ab3760e 100644 --- a/src/test/java/net/datafaker/PhoneNumberValidityFinderTest.java +++ b/src/test/java/net/datafaker/PhoneNumberValidityFinderTest.java @@ -22,7 +22,7 @@ class PhoneNumberValidityFinderTest { void testAllCellPhoneForLocale() throws NumberParseException { String language = "en"; String region = "GB"; - Faker localFaker = new Faker(new Locale(language, region)); + BaseFaker localFaker = new BaseFaker(new Locale(language, region)); PhoneNumberUtil util = PhoneNumberUtil.getInstance(); int errorCount = 0; @@ -68,7 +68,7 @@ void testAllPhoneNumbers() { PhoneNumberUtil util = PhoneNumberUtil.getInstance(); Locale locale = new Locale(supportedLocale, country); - final Faker f = new Faker(locale); + final BaseFaker f = new BaseFaker(locale); int errorCount = 0; for (int i = 0; i < 100; i++) { String phoneNumber = f.phoneNumber().phoneNumber(); diff --git a/src/test/java/net/datafaker/RandomFakerTest.java b/src/test/java/net/datafaker/RandomFakerTest.java index 0e36a0381..c717700a2 100644 --- a/src/test/java/net/datafaker/RandomFakerTest.java +++ b/src/test/java/net/datafaker/RandomFakerTest.java @@ -10,14 +10,14 @@ class RandomFakerTest extends AbstractFakerTest { private static final int CONSTANT_SEED_VALUE = 10; - private Faker faker; + private BaseFaker faker; private Random random; @BeforeEach public void before() { super.before(); random = new Random(); - faker = new Faker(random); + faker = new BaseFaker(random); } @Test diff --git a/src/test/java/net/datafaker/RelationshipTest.java b/src/test/java/net/datafaker/RelationshipTest.java index 872f8e687..0ff46973b 100644 --- a/src/test/java/net/datafaker/RelationshipTest.java +++ b/src/test/java/net/datafaker/RelationshipTest.java @@ -13,12 +13,12 @@ class RelationshipTest extends AbstractFakerTest { - private Faker mockFaker; + private BaseFaker mockFaker; @BeforeEach public void before() { super.before(); - mockFaker = Mockito.mock(Faker.class); + mockFaker = Mockito.mock(BaseFaker.class); } @RepeatedTest(100) diff --git a/src/test/java/net/datafaker/TeamTest.java b/src/test/java/net/datafaker/TeamTest.java index 606243715..4a65c52f8 100644 --- a/src/test/java/net/datafaker/TeamTest.java +++ b/src/test/java/net/datafaker/TeamTest.java @@ -25,7 +25,7 @@ void testState() { @Test void testStateWithZaLocale() { - Faker zaFaker = new Faker(new Locale("en", "ZA")); + BaseFaker zaFaker = new BaseFaker(new Locale("en", "ZA")); assertThat(zaFaker.team().state()).isNotEmpty(); } diff --git a/src/test/java/net/datafaker/UniqueTest.java b/src/test/java/net/datafaker/UniqueTest.java index 2c11eb756..7f9dc56fc 100644 --- a/src/test/java/net/datafaker/UniqueTest.java +++ b/src/test/java/net/datafaker/UniqueTest.java @@ -13,7 +13,7 @@ class UniqueTest { - private Faker faker = new Faker(new Locale("test")); + private BaseFaker faker = new BaseFaker(new Locale("test")); private final List defaultValues = asList( "firstValue", @@ -30,7 +30,7 @@ public void fetchFromYaml_shouldReturnValuesInRandomOrderUsingRandomService() { RandomService randomService = Mockito.spy(new RandomService(new Random())); doCallRealMethod().when(randomService).nextInt(anyInt(), anyInt()); - faker = new Faker(new Locale("test"), randomService); + faker = new BaseFaker(new Locale("test"), randomService); Set results = new HashSet<>(); diff --git a/src/test/java/net/datafaker/VehicleTest.java b/src/test/java/net/datafaker/VehicleTest.java index 15d1b777e..1926b023f 100644 --- a/src/test/java/net/datafaker/VehicleTest.java +++ b/src/test/java/net/datafaker/VehicleTest.java @@ -149,7 +149,7 @@ void testLicensePlateWithParam() { @RepeatedTest(100) void testLicensePlateWithParam_Canada() { - Faker test = new Faker(Locale.CANADA); + BaseFaker test = new BaseFaker(Locale.CANADA); assertThat(test.vehicle().licensePlate("MB")).matches(WORDS_MATCH); assertThat(test.vehicle().licensePlate("ON")).matches(WORDS_MATCH); } diff --git a/src/test/java/net/datafaker/VolleyballTest.java b/src/test/java/net/datafaker/VolleyballTest.java index 3b059be06..bda673a57 100644 --- a/src/test/java/net/datafaker/VolleyballTest.java +++ b/src/test/java/net/datafaker/VolleyballTest.java @@ -1,10 +1,11 @@ package net.datafaker; +import net.datafaker.sport.AbstractSportFakerTest; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; -class VolleyballTest extends AbstractFakerTest { +class VolleyballTest extends AbstractSportFakerTest { @Test void team() { diff --git a/src/test/java/net/datafaker/fileformats/CsvTest.java b/src/test/java/net/datafaker/fileformats/CsvTest.java index 0430dd357..2c443f503 100644 --- a/src/test/java/net/datafaker/fileformats/CsvTest.java +++ b/src/test/java/net/datafaker/fileformats/CsvTest.java @@ -1,7 +1,7 @@ package net.datafaker.fileformats; import net.datafaker.AbstractFakerTest; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import net.datafaker.Name; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -16,7 +16,7 @@ class CsvTest extends AbstractFakerTest { @Test void csvTest() { - final Faker faker = new Faker(); + final BaseFaker faker = new BaseFaker(); String separator = "@@@"; int limit = 20; String csv = Format.toCsv(Csv.Column.of("first_name", () -> faker.name().firstName()), @@ -43,7 +43,7 @@ void csvTest() { void csvTestWithQuotes() { String separator = "$$$"; int limit = 20; - final Faker faker = new Faker(); + final BaseFaker faker = new BaseFaker(); List columns = new ArrayList<>(); columns.add(Csv.Column.of("first_name", () -> faker.expression("#{Name.first_name}"))); columns.add(Csv.Column.of("last_name", () -> faker.expression("#{Name.last_name}"))); @@ -84,7 +84,7 @@ void testCsvWithComma() { @ParameterizedTest @ValueSource(ints = {0, 2, 3, 10, 20, 100}) void testLimitForCsv(int limit) { - final Faker faker = new Faker(); + final BaseFaker faker = new BaseFaker(); String csv = Format.toCsv( faker.collection() .suppliers(faker::name) @@ -110,7 +110,7 @@ void testLimitForCsv(int limit) { @ParameterizedTest @ValueSource(ints = {0, 2, 3, 10, 20, 100}) void testLimitForCollection(int limit) { - final Faker faker = new Faker(); + final BaseFaker faker = new BaseFaker(); String csv = Format.toCsv( faker.collection() .suppliers(faker::name) diff --git a/src/test/java/net/datafaker/foods/HebrewFoodTest.java b/src/test/java/net/datafaker/foods/HebrewFoodTest.java index 7b1aa22a0..fa97e4186 100644 --- a/src/test/java/net/datafaker/foods/HebrewFoodTest.java +++ b/src/test/java/net/datafaker/foods/HebrewFoodTest.java @@ -1,6 +1,6 @@ package net.datafaker.foods; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -10,11 +10,11 @@ class HebrewFoodTest { public final String matchHebrewFood = "[\\u0590-\\u05FF ']+"; - public static Faker food; + public static BaseFaker food; @BeforeEach void before() { - food = new Faker(new Locale("he")); + food = new BaseFaker(new Locale("he")); } @Test diff --git a/src/test/java/net/datafaker/idnumbers/EnZAIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/EnZAIdNumberTest.java index 2fc9bc423..4911a869b 100644 --- a/src/test/java/net/datafaker/idnumbers/EnZAIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/EnZAIdNumberTest.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.Test; @@ -28,7 +28,7 @@ void testExistSsn() { @RepeatedTest(100) void testFakerSsn() { EnZAIdNumber idNumber = new EnZAIdNumber(); - final Faker f = new Faker(new Locale("en", "ZA")); + final BaseFaker f = new BaseFaker(new Locale("en", "ZA")); assertThat(idNumber.validSsn(f.idNumber().valid())).isTrue(); assertThat(idNumber.validSsn(f.idNumber().invalid())).isFalse(); @@ -36,7 +36,7 @@ void testFakerSsn() { @RepeatedTest(100) void testSsnFormat() { - final Faker f = new Faker(new Locale("en", "ZA")); + final BaseFaker f = new BaseFaker(new Locale("en", "ZA")); assertThat(f.idNumber().valid()).matches("\\d{10}[01][8]\\d"); assertThat(f.idNumber().invalid()).matches("\\d{10}[01][8]\\d"); } diff --git a/src/test/java/net/datafaker/idnumbers/EsMXIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/EsMXIdNumberTest.java index 32a534856..e80a7f377 100644 --- a/src/test/java/net/datafaker/idnumbers/EsMXIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/EsMXIdNumberTest.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import org.junit.jupiter.api.RepeatedTest; import java.util.Locale; @@ -11,7 +11,7 @@ class EsMXIdNumberTest { @RepeatedTest(100) void testValidMXSsn() { - final Faker f = new Faker(new Locale("es-MX")); + final BaseFaker f = new BaseFaker(new Locale("es-MX")); assertThat(f.idNumber().valid()).matches("[A-Z][A-Z][A-Z][A-Z]\\d{6}[HM]" + "[A-Z][A-Z][A-Z][A-Z][A-Z][A-Z,0-9]\\d"); assertThat(f.idNumber().invalid()).matches("[A-Z][A-Z][A-Z][A-Z]\\d{6}[HM]" + @@ -20,7 +20,7 @@ void testValidMXSsn() { @RepeatedTest(100) void testInvalidMXSsn() { - final Faker f = new Faker(new Locale("es-MX")); + final BaseFaker f = new BaseFaker(new Locale("es-MX")); assertThat(f.idNumber().validEsMXSsn()).matches("[A-Z][A-Z][A-Z][A-Z]\\d{6}[HM]" + "[A-Z][A-Z][A-Z][A-Z][A-Z][A-Z,0-9]\\d"); assertThat(f.idNumber().invalidEsMXSsn()).matches("[A-Z][A-Z][A-Z][A-Z]\\d{6}[HM]" + diff --git a/src/test/java/net/datafaker/idnumbers/PeselNumberTest.java b/src/test/java/net/datafaker/idnumbers/PeselNumberTest.java index 0e907f5be..f16d8e4e4 100644 --- a/src/test/java/net/datafaker/idnumbers/PeselNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/PeselNumberTest.java @@ -3,7 +3,7 @@ import java.time.LocalDate; import java.time.ZoneId; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import net.datafaker.idnumbers.PeselNumber.Gender; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -23,7 +23,7 @@ class PeselNumberTest { @BeforeAll static void setUpBeforeClass() { - peselNumber = new PeselNumber(new Faker()); + peselNumber = new PeselNumber(new BaseFaker()); } @ParameterizedTest @@ -32,7 +32,7 @@ void testGenderedPesel(Gender givenGender) { /* * Given */ - final LocalDate givenBirthDate = new Faker().date().birthday(0, 100).toInstant() + final LocalDate givenBirthDate = new BaseFaker().date().birthday(0, 100).toInstant() .atZone(ZoneId.systemDefault()).toLocalDate(); /* * When diff --git a/src/test/java/net/datafaker/idnumbers/PtNifIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/PtNifIdNumberTest.java index aa0bc4346..e7a75334d 100644 --- a/src/test/java/net/datafaker/idnumbers/PtNifIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/PtNifIdNumberTest.java @@ -1,7 +1,7 @@ package net.datafaker.idnumbers; import net.datafaker.AbstractFakerTest; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.RepeatedTest; @@ -11,11 +11,11 @@ class PtNifIdNumberTest extends AbstractFakerTest { - private Faker ptFaker; + private BaseFaker ptFaker; @BeforeEach public void before() { - ptFaker = new Faker(new Locale("pt")); + ptFaker = new BaseFaker(new Locale("pt")); } @RepeatedTest(100) diff --git a/src/test/java/net/datafaker/idnumbers/ZhCNIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/ZhCNIdNumberTest.java index e8810a58f..d03507a94 100644 --- a/src/test/java/net/datafaker/idnumbers/ZhCNIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/ZhCNIdNumberTest.java @@ -1,7 +1,7 @@ package net.datafaker.idnumbers; import net.datafaker.AbstractFakerTest; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import org.junit.jupiter.api.RepeatedTest; import java.util.Locale; @@ -12,7 +12,7 @@ class ZhCNIdNumberTest extends AbstractFakerTest { @RepeatedTest(10) void testValidChineseIdNumber() { - Faker faker = new Faker(new Locale("zh_CN")); + BaseFaker faker = new BaseFaker(new Locale("zh_CN")); String idNumber = faker.idNumber().valid(); boolean isSatisfied = idNumber.length() == 18; for (int j = 0; j < idNumber.length(); j++) { @@ -34,7 +34,7 @@ void testValidChineseIdNumber() { @RepeatedTest(10) void testChecksumOfChineseIdNumber() { - Faker faker = new Faker(new Locale("zh_CN")); + BaseFaker faker = new BaseFaker(new Locale("zh_CN")); String s = faker.idNumber().valid(); boolean isSatisfied = true; int count = 0; diff --git a/src/test/java/net/datafaker/integration/FakerIntegrationTest.java b/src/test/java/net/datafaker/integration/FakerIntegrationTest.java index 46006e1fe..9febbfdc6 100644 --- a/src/test/java/net/datafaker/integration/FakerIntegrationTest.java +++ b/src/test/java/net/datafaker/integration/FakerIntegrationTest.java @@ -2,6 +2,7 @@ import net.datafaker.AbstractProvider; import net.datafaker.Address; +import net.datafaker.BaseFaker; import net.datafaker.Faker; import net.datafaker.Name; import org.apache.commons.lang3.StringUtils; @@ -224,10 +225,10 @@ void testAllFakerMethodsThatReturnStrings(Locale locale, Random random) throws E private void testAllMethodsThatReturnStringsActuallyReturnStrings(Object object) throws Exception { final Locale locale; - if (object instanceof Faker) { - locale = ((Faker) object).getLocale(); + if (object instanceof BaseFaker) { + locale = ((BaseFaker) object).getContext().getLocale(); } else { - locale = ((AbstractProvider) object).getFaker().getLocale(); + locale = ((AbstractProvider) object).getFaker().getContext().getLocale(); } @SuppressWarnings("unchecked") Set methodsThatReturnStrings = getAllMethods(object.getClass(), @@ -256,7 +257,7 @@ private boolean isExcepted(Object object, Method method, Locale locale) { @ParameterizedTest @MethodSource("dataParameters") void testExceptionsNotCoveredInAboveTest(Locale locale, Random random) { - final Faker faker = init(locale, random); + final BaseFaker faker = init(locale, random); assertThat(faker.bothify("####???")).isNotNull(); assertThat(faker.letterify("????")).isNotNull(); assertThat(faker.numerify("####")).isNotNull(); diff --git a/src/test/java/net/datafaker/integration/Issue194SlashFormatRegexTest.java b/src/test/java/net/datafaker/integration/Issue194SlashFormatRegexTest.java index 6e67e15a8..38ca787dc 100644 --- a/src/test/java/net/datafaker/integration/Issue194SlashFormatRegexTest.java +++ b/src/test/java/net/datafaker/integration/Issue194SlashFormatRegexTest.java @@ -1,6 +1,6 @@ package net.datafaker.integration; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import org.junit.jupiter.api.Test; import java.util.Locale; @@ -13,7 +13,7 @@ class Issue194SlashFormatRegexTest { void enGBZipCodeReturnsProperRegexifiedValue() { final Locale uk = new Locale("en", "GB"); - final String postalCode = new Faker(uk).address().zipCode(); + final String postalCode = new BaseFaker(uk).address().zipCode(); assertThat(postalCode).matches("[A-PR-UWYZ]([A-HK-Y][0-9][ABEHMNPRVWXY0-9]?|[0-9][ABCDEFGHJKPSTUW0-9]?) [0-9][ABD-HJLNP-UW-Z]{2}"); } @@ -22,7 +22,7 @@ void enGBZipCodeReturnsProperRegexifiedValue() { void enCAZipCodeReturnsProperRegexifiedValue() { final Locale uk = new Locale("en", "CA"); - final String postalCode = new Faker(uk).address().zipCode(); + final String postalCode = new BaseFaker(uk).address().zipCode(); assertThat(postalCode).matches("[A-CEJ-NPR-TVXY][0-9][A-CEJ-NPR-TV-Z] ?[0-9][A-CEJ-NPR-TV-Z][0-9]"); } @@ -31,7 +31,7 @@ void enCAZipCodeReturnsProperRegexifiedValue() { void viZipCodeReturnsProperRegexifiedValue() { final Locale uk = new Locale("vi"); - final String postalCode = new Faker(uk).address().zipCode(); + final String postalCode = new BaseFaker(uk).address().zipCode(); assertThat(postalCode).matches("[A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}"); } diff --git a/src/test/java/net/datafaker/integration/UkLocalDirectivesTest.java b/src/test/java/net/datafaker/integration/UkLocalDirectivesTest.java index 68b5d800f..9f872f6d0 100644 --- a/src/test/java/net/datafaker/integration/UkLocalDirectivesTest.java +++ b/src/test/java/net/datafaker/integration/UkLocalDirectivesTest.java @@ -1,6 +1,6 @@ package net.datafaker.integration; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import org.junit.jupiter.api.Test; import java.util.Arrays; @@ -19,14 +19,14 @@ class UkLocalDirectivesTest { /** * uk is interesting in that it has feminine and masculine prefixes for street names. the feminine * and masculine prefixes are NOT methods on Address though as they only make sense for this locale (and possibly - * others). This test shows we can resolve within the yml file without reaching out to any of the {@link Faker} + * others). This test shows we can resolve within the yml file without reaching out to any of the {@link BaseFaker} * child objects. */ @Test void resolvesDirectivesOnlyInYmlFile() { final Locale uk = new Locale("uk"); - final String streetName = new Faker(uk).address().streetName(); + final String streetName = new BaseFaker(uk).address().streetName(); final List masc = Arrays.asList("пр.", "проспект", "пров.", "провулок"); final List fem = Arrays.asList("вул.", "вулиця", "пл.", "площа"); diff --git a/src/test/java/net/datafaker/script/ProviderGenerator.java b/src/test/java/net/datafaker/script/ProviderGenerator.java index eab5f5c47..d23031009 100644 --- a/src/test/java/net/datafaker/script/ProviderGenerator.java +++ b/src/test/java/net/datafaker/script/ProviderGenerator.java @@ -62,7 +62,7 @@ private void createCreator(File file, String key, Set strings) { System.out.println("/**"); System.out.println(" * @since 1.6.0"); System.out.println(" */"); - System.out.println("public class " + className + " extends AbstractProvider {"); + System.out.println("public class " + className + " extends AbstractProvider {"); System.out.println(); System.out.println(" protected " + className + "(Faker faker) {"); System.out.println(" super(faker);"); @@ -92,7 +92,7 @@ private void createTest(File file, String key, Set strings) { System.out.println("import static org.assertj.core.api.AssertionsForClassTypes.assertThat;"); System.out.println(); - System.out.println("class " + className + "Test extends AbstractFakerTest {"); + System.out.println("class " + className + "Test extends net.datafaker.AbstractFakerTest {"); System.out.println(); for (String string : strings) { diff --git a/src/test/java/net/datafaker/service/FakeValuesServiceTest.java b/src/test/java/net/datafaker/service/FakeValuesServiceTest.java index 82ab7df04..f21f6c006 100644 --- a/src/test/java/net/datafaker/service/FakeValuesServiceTest.java +++ b/src/test/java/net/datafaker/service/FakeValuesServiceTest.java @@ -1,7 +1,7 @@ package net.datafaker.service; import net.datafaker.AbstractFakerTest; -import net.datafaker.Faker; +import net.datafaker.BaseFaker; import net.datafaker.Superhero; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.RepeatedTest; @@ -39,7 +39,7 @@ class FakeValuesServiceTest extends AbstractFakerTest { private static final Long MILLIS_IN_A_DAY = MILLIS_IN_AN_HOUR * 24; @Spy - private Faker mockedFaker; + private BaseFaker mockedFaker; @Mock private RandomService randomService; @@ -99,7 +99,7 @@ void safeFetchShouldReturnEmptyStringWhenPropertyDoesntExist() { void bothify2Args() { final DummyService dummy = mock(DummyService.class); - Faker f = new Faker(); + BaseFaker f = new BaseFaker(); String value = fakeValuesService.resolve("property.bothify_2", dummy, f, context); assertThat(value).matches("[A-Z]{2}\\d{2}"); diff --git a/src/test/java/net/datafaker/sport/AbstractSportFakerTest.java b/src/test/java/net/datafaker/sport/AbstractSportFakerTest.java new file mode 100644 index 000000000..4cd17f5f3 --- /dev/null +++ b/src/test/java/net/datafaker/sport/AbstractSportFakerTest.java @@ -0,0 +1,10 @@ +package net.datafaker.sport; + +import net.datafaker.AbstractBaseFakerTest; + +public class AbstractSportFakerTest extends AbstractBaseFakerTest { + @Override + protected SportFaker getFaker() { + return new SportFaker(); + } +}