@Namespace(ChronoSphereConfiguration.NAMESPACE) public class ChronoSphereConfigurationImpl extends AbstractConfiguration implements ChronoSphereConfiguration { // ===================================================================================================================== // FIELDS // ===================================================================================================================== @Parameter(key = BATCH_INSERT__BATCH_SIZE, optional = true) private int batchInsertBatchSize = 10_000; // ===================================================================================================================== // GETTERS & SETTERS // ===================================================================================================================== @Override public int getBatchInsertBatchSize() { return this.batchInsertBatchSize; } }
public Condition(final RequiredIf requiredIf) { checkNotNull(requiredIf, "Precondition violation - argument 'requiredIf' must not be NULL!"); this.field = requiredIf.field(); this.comparison = requiredIf.comparison(); this.value = requiredIf.compareValue(); }
public Condition(final IgnoredIf ignoredIf) { checkNotNull(ignoredIf, "Precondition violation - argument 'ignoredIf' must not be NULL!"); this.field = ignoredIf.field(); this.comparison = ignoredIf.comparison(); this.value = ignoredIf.compareValue(); }
@Namespace(ChronoDBConfiguration.NAMESPACE) public class ChronoDBConfigurationImpl extends AbstractConfiguration implements ChronoDBConfiguration { @Parameter(key = DEBUG) private boolean debugModeEnabled = false; @EnumFactoryMethod("fromString") @Parameter(key = STORAGE_BACKEND) private ChronosBackend backendType; @Parameter(key = STORAGE_BACKEND_CACHE) @IgnoredIf(field = "backendType", comparison = Comparison.IS_SET_TO, compareValue = "JDBC") @IgnoredIf(field = "backendType", comparison = Comparison.IS_SET_TO, compareValue = "FILE") @IgnoredIf(field = "backendType", comparison = Comparison.IS_SET_TO, compareValue = "INMEMORY") private long storageBackendCacheMaxSize = DEFAULT__STORAGE_BACKEND_CACHE; @Parameter(key = CACHING_ENABLED) private boolean cachingEnabled = false; @Parameter(key = CACHE_MAX_SIZE) @RequiredIf(field = "cachingEnabled", comparison = Comparison.IS_SET_TO, compareValue = "true") private Integer cacheMaxSize; @Parameter(key = QUERY_CACHE_ENABLED) private boolean indexQueryCachingEnabled = false; @Parameter(key = QUERY_CACHE_MAX_SIZE) @RequiredIf(field = "indexQueryCachingEnabled", comparison = Comparison.IS_SET_TO, compareValue = "true") private Integer indexQueryCacheMaxSize;
@Namespace("org.chronos.common.test") public class BooleanDependentConfiguration extends AbstractConfiguration { @Parameter private Boolean bool; @Parameter @RequiredIf(field = "bool", comparison = Comparison.IS_SET_TO, compareValue = "true") private String string; public Boolean getBool() { return this.bool; } public String getString() { return this.string; } }
public Map<String, String> getValueAliases() { ValueAlias[] aliases = this.field.getAnnotationsByType(ValueAlias.class); Map<String, String> resultMap = Maps.newHashMap(); if (aliases == null || aliases.length <= 0) { return Collections.unmodifiableMap(resultMap); } for (ValueAlias alias : aliases) { String aliasString = alias.alias(); String mapToString = alias.mapTo(); if (resultMap.containsKey(aliasString) && resultMap.get(aliasString).equals(mapToString) == false) { throw new IllegalStateException("Defined multiple different aliases for value '" + aliasString + "' on field '" + this.field.getDeclaringClass() + "#" + this.field.getName() + "'!"); } resultMap.put(aliasString, mapToString); } return Collections.unmodifiableMap(resultMap); }
private static String getNamespace(final AbstractConfiguration configuration) { Namespace annotation = ReflectionUtils.getClassAnnotationRecursively(configuration.getClass(), Namespace.class); if (annotation == null) { return null; } String namespace = annotation.value().trim(); if (namespace == null || namespace.isEmpty()) { return null; } return namespace; } }
public boolean isOptional() { return this.getParameterAnnotation().optional(); }
public ParameterValueConverter getValueParser() { ValueConverter annotation = this.field.getAnnotation(ValueConverter.class); if (annotation == null) { return null; } Class<? extends ParameterValueConverter> parserClass = annotation.value(); try { Constructor<? extends ParameterValueConverter> constructor = parserClass.getConstructor(); return constructor.newInstance(); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { throw new IllegalStateException( "Unable to instantiate ParameterValueParser class '" + parserClass.getName() + "'!", e); } }
public String getKey() { String namespace = this.getNamespace(); String key = this.getParameterAnnotation().key().trim(); if (key == null || key.isEmpty()) { key = this.field.getName(); } if (namespace == null) { return key; } if (key.startsWith(namespace + '.') && key.length() > namespace.length() + 1) { return key; } return namespace + '.' + key; }
String factoryMethodName = annotation.value(); try { Method method = this.getType().getMethod(factoryMethodName, String.class);
@Namespace("org.chronos.common.test") public class MyConfiguration extends AbstractConfiguration { @Parameter private String name; @Parameter(key = "integer", optional = false) private int intValue = 42; @ValueAlias(alias = "mon", mapTo = "MONDAY") @ValueAlias(alias = "tue", mapTo = "TUESDAY") @ValueAlias(alias = "wed", mapTo = "WEDNESDAY") @ValueAlias(alias = "thu", mapTo = "THURSDAY") @ValueAlias(alias = "fri", mapTo = "FRIDAY") @ValueAlias(alias = "sat", mapTo = "SATURDAY") @ValueAlias(alias = "sun", mapTo = "SUNDAY") @Parameter(key = "org.chronos.common.test.day", optional = true) private DayOfWeek dayOfWeek; @Parameter @IgnoredIf(field = "dayOfWeek", comparison = Comparison.IS_SET_TO, compareValue = "SATURDAY") @IgnoredIf(field = "dayOfWeek", comparison = Comparison.IS_SET_TO, compareValue = "SUNDAY") private Double motivation; @Parameter() @RequiredIf(field = "dayOfWeek", comparison = Comparison.IS_SET_TO, compareValue = "MONDAY") private Boolean hangover; @Parameter(optional = true) @ValueConverter(CoordinateParser.class)
@Namespace(ChronosBuildConfiguration.NAMESPACE) public class ChronosBuildConfigurationImpl extends AbstractConfiguration implements ChronosBuildConfiguration { // ===================================================================================================================== // PROPERTIES // ===================================================================================================================== @Parameter(key = ChronosBuildConfiguration.BUILD_VERSION, optional = false) private String chronosVersion; // ===================================================================================================================== // GETTERS // ===================================================================================================================== @Override public String getBuildVersion() { return this.chronosVersion; } }
public String getNamespace() { Class<?> configClass = this.getConfigurationClass(); Namespace namespace = ReflectionUtils.getClassAnnotationRecursively(configClass, Namespace.class); if (namespace == null) { return null; } String value = namespace.value(); if (value == null || value.trim().isEmpty()) { return value; } return value.trim(); }
@Namespace(ChronoGraphConfiguration.NAMESPACE) public class ChronoGraphConfigurationImpl extends AbstractConfiguration implements ChronoGraphConfiguration { // ================================================================================================================= // FIELDS // ================================================================================================================= @Parameter(key = ChronoGraphConfiguration.TRANSACTION_CHECK_ID_EXISTENCE_ON_ADD) private boolean checkIdExistenceOnAdd = true; @Parameter(key = ChronoGraphConfiguration.TRANSACTION_AUTO_OPEN) private boolean txAutoOpenEnabled = true; // ================================================================================================================= // GETTERS // ================================================================================================================= @Override public boolean isCheckIdExistenceOnAddEnabled() { return this.checkIdExistenceOnAdd; } @Override public boolean isTransactionAutoOpenEnabled() { return this.txAutoOpenEnabled; } }