/** * Builds a new {@code DynamoDBMapperConfig} object. * * @return the new, immutable config object */ public DynamoDBMapperConfig build() { return new DynamoDBMapperConfig(this); } }
/** * Creates a new builder, optionally initialized with the defaults. */ private Builder(final boolean defaults) { if (defaults == true) { saveBehavior = DEFAULT.getSaveBehavior(); consistentReads = DEFAULT.getConsistentReads(); paginationLoadingStrategy = DEFAULT.getPaginationLoadingStrategy(); conversionSchema = DEFAULT.getConversionSchema(); batchWriteRetryStrategy = DEFAULT.getBatchWriteRetryStrategy(); batchLoadRetryStrategy = DEFAULT.getBatchLoadRetryStrategy(); } }
/** * Constructs a new configuration object from two others: a set of defaults * and a set of overrides. Any non-null overrides will be applied to the * defaults. * <p> * Used internally to merge the {@link DynamoDBMapperConfig} provided at * construction with an overriding object for a particular operation. * * @param defaults * The default mapper configuration values. * @param overrides * The overridden mapper configuration values. Any non-null * config settings will be applied to the returned object. * @see DynamoDBMapperConfig#builder() */ @Deprecated public DynamoDBMapperConfig( DynamoDBMapperConfig defaults, DynamoDBMapperConfig overrides) { this(builder().merge(defaults).merge(overrides)); }
/** * Constructs a new configuration object with the table name override given. * @see TableNameOverride#config */ @Deprecated public DynamoDBMapperConfig(TableNameOverride tableNameOverride) { this(null, null, tableNameOverride, null, null, null, null, DEFAULT.getConversionSchema(), DEFAULT.getBatchWriteRetryStrategy(), DEFAULT.getBatchLoadRetryStrategy()); }
@Override public <T> PaginatedParallelScanList<T> parallelScan(Class<T> clazz, DynamoDBScanExpression scanExpression, int totalSegments, DynamoDBMapperConfig config) { config = mergeConfig(config); // Create hard copies of the original scan request with difference segment number. List<ScanRequest> parallelScanRequests = createParallelScanRequestsFromExpression(clazz, scanExpression, totalSegments, config); ParallelScanTask parallelScanTask = new ParallelScanTask(db, parallelScanRequests); return new PaginatedParallelScanList<T>(this, clazz, db, parallelScanTask, config.getPaginationLoadingStrategy(), config); }
DynamoDBMapperConfig.Builder emptyBuilder = DynamoDBMapperConfig.builder(); // empty (!) builder if (dynamoDBMapperConfig.getConversionSchema() == null) { LOGGER.warn( "No ConversionSchema set in the provided dynamoDBMapperConfig! Merging with DynamoDBMapperConfig.DEFAULT - Please see https://git.io/DynamoDBMapperConfig"); emptyBuilder.withConversionSchema(DynamoDBMapperConfig.DEFAULT.getConversionSchema()); if (dynamoDBMapperConfig.getTypeConverterFactory() == null) { LOGGER.warn( "No TypeConverterFactory set in the provided dynamoDBMapperConfig! Merging with DynamoDBMapperConfig.DEFAULT - Please see https://git.io/DynamoDBMapperConfig"); emptyBuilder.withTypeConverterFactory(DynamoDBMapperConfig.DEFAULT.getTypeConverterFactory());
@Override public <T> String getOverriddenTableName(Class<T> domainClass, String tableName) { if (dynamoDBMapperConfig.getTableNameOverride() != null) { if (dynamoDBMapperConfig.getTableNameOverride().getTableName() != null) { tableName = dynamoDBMapperConfig.getTableNameOverride().getTableName(); } else { tableName = dynamoDBMapperConfig.getTableNameOverride().getTableNamePrefix() + tableName; } } else if (dynamoDBMapperConfig.getTableNameResolver() != null) { tableName = dynamoDBMapperConfig.getTableNameResolver().getTableName(domainClass, dynamoDBMapperConfig); } return tableName; }
/** * Creates a new set of conversion rules based on the configuration. */ private static final <T> RuleFactory<T> rulesOf(DynamoDBMapperConfig config, S3Link.Factory s3Links, DynamoDBMapperModelFactory models) { final boolean ver1 = (config.getConversionSchema() == ConversionSchemas.V1); final boolean ver2 = (config.getConversionSchema() == ConversionSchemas.V2); final boolean v2Compatible = (config.getConversionSchema() == ConversionSchemas.V2_COMPATIBLE); final DynamoDBTypeConverterFactory.Builder scalars = config.getTypeConverterFactory().override(); scalars.with(String.class, S3Link.class, s3Links); final Rules<T> factory = new Rules<T>(scalars.build()); factory.add(factory.new NativeType(!ver1)); factory.add(factory.new V2CompatibleBool(v2Compatible)); factory.add(factory.new NativeBool(ver2)); factory.add(factory.new StringScalar(true)); factory.add(factory.new DateToEpochRule(true)); factory.add(factory.new NumberScalar(true)); factory.add(factory.new BinaryScalar(true)); factory.add(factory.new NativeBoolSet(ver2)); factory.add(factory.new StringScalarSet(true)); factory.add(factory.new NumberScalarSet(true)); factory.add(factory.new BinaryScalarSet(true)); factory.add(factory.new ObjectSet(ver2)); factory.add(factory.new ObjectStringSet(!ver2)); factory.add(factory.new ObjectList(!ver1)); factory.add(factory.new ObjectMap(!ver1)); factory.add(factory.new ObjectDocumentMap(!ver1, models, config)); return factory; }
@Override public String getTableName(Class<?> clazz, DynamoDBMapperConfig config) { final TableNameOverride override = config.getTableNameOverride(); if (override != null) { final String tableName = override.getTableName(); if (tableName != null) { return tableName; } } final StandardBeanProperties.Beans<?> beans = StandardBeanProperties.of(clazz); if (beans.properties().tableName() == null) { throw new DynamoDBMappingException(clazz + " not annotated with @DynamoDBTable"); } final String prefix = override == null ? null : override.getTableNamePrefix(); return prefix == null ? beans.properties().tableName() : prefix + beans.properties().tableName(); }
@Override public TableFactory getTableFactory(DynamoDBMapperConfig config) { final ConversionSchema schema = config.getConversionSchema(); if (!cache.containsKey(schema)) { RuleFactory<Object> rules = rulesOf(config, s3Links, this); rules = new ConversionSchemas.ItemConverterRuleFactory<Object>(config, s3Links, rules); cache.putIfAbsent(schema, new StandardTableFactory(rules)); } return cache.get(schema); } }
protected final String getTableName(Class<?> clazz, DynamoDBMapperConfig config) { if (config.getTableNameResolver() == null) { return DynamoDBMapperConfig.DefaultTableNameResolver.INSTANCE.getTableName(clazz, config); } return config.getTableNameResolver().getTableName(clazz, config); }
/** * Constructs a new configuration object with the table name resolver strategy given. * @see DynamoDBMapperConfig#builder() */ @Deprecated public DynamoDBMapperConfig(TableNameResolver tableNameResolver) { this(null, null, null, tableNameResolver, null, null, null, DEFAULT.getConversionSchema(), DEFAULT.getBatchWriteRetryStrategy(), DEFAULT.getBatchLoadRetryStrategy()); }
@Override public <T> PaginatedQueryList<T> query(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression, DynamoDBMapperConfig config) { config = mergeConfig(config); QueryRequest queryRequest = createQueryRequestFromExpression(clazz, queryExpression, config); QueryResult queryResult = db.query(applyUserAgent(queryRequest)); return new PaginatedQueryList<T>(this, clazz, db, queryRequest, queryResult, config.getPaginationLoadingStrategy(), config); }
/** * Creates a new set of conversion rules based on the configuration. */ private static final <T> RuleFactory<T> rulesOf(DynamoDBMapperConfig config, S3Link.Factory s3Links, DynamoDBMapperModelFactory models) { final boolean ver1 = (config.getConversionSchema() == ConversionSchemas.V1); final boolean ver2 = (config.getConversionSchema() == ConversionSchemas.V2); final boolean v2Compatible = (config.getConversionSchema() == ConversionSchemas.V2_COMPATIBLE); final DynamoDBTypeConverterFactory.Builder scalars = config.getTypeConverterFactory().override(); scalars.with(String.class, S3Link.class, s3Links); final Rules<T> factory = new Rules<T>(scalars.build()); factory.add(factory.new NativeType(!ver1)); factory.add(factory.new V2CompatibleBool(v2Compatible)); factory.add(factory.new NativeBool(ver2)); factory.add(factory.new StringScalar(true)); factory.add(factory.new DateToEpochRule(true)); factory.add(factory.new NumberScalar(true)); factory.add(factory.new BinaryScalar(true)); factory.add(factory.new NativeBoolSet(ver2)); factory.add(factory.new StringScalarSet(true)); factory.add(factory.new NumberScalarSet(true)); factory.add(factory.new BinaryScalarSet(true)); factory.add(factory.new ObjectSet(ver2)); factory.add(factory.new ObjectStringSet(!ver2)); factory.add(factory.new ObjectList(!ver1)); factory.add(factory.new ObjectMap(!ver1)); factory.add(factory.new ObjectDocumentMap(!ver1, models, config)); return factory; }
@Override public String getOverriddenTableName(String tableName) { if (dynamoDBMapperConfig.getTableNameOverride() != null) { if (dynamoDBMapperConfig.getTableNameOverride().getTableName() != null) { tableName = dynamoDBMapperConfig.getTableNameOverride().getTableName(); } else { tableName = dynamoDBMapperConfig.getTableNameOverride().getTableNamePrefix() + tableName; } } return tableName; }
private ItemConverterRule(final ConvertibleType<V> type) { this.type = type; } @Override
protected final String getTableName(Class<?> clazz, DynamoDBMapperConfig config) { if (config.getTableNameResolver() == null) { return DynamoDBMapperConfig.DefaultTableNameResolver.INSTANCE.getTableName(clazz, config); } return config.getTableNameResolver().getTableName(clazz, config); }
/** * Constructs a new configuration object with the table name resolver strategies given. * @see DynamoDBMapperConfig#builder() */ @Deprecated public DynamoDBMapperConfig(TableNameResolver tableNameResolver, ObjectTableNameResolver objectTableNameResolver) { this(null, null, null, tableNameResolver, objectTableNameResolver, null, null, DEFAULT.getConversionSchema(), DEFAULT.getBatchWriteRetryStrategy(), DEFAULT.getBatchLoadRetryStrategy()); }
/** * Creates a new builder, optionally initialized with the defaults. */ private Builder(final boolean defaults) { if (defaults == true) { saveBehavior = DEFAULT.getSaveBehavior(); consistentReads = DEFAULT.getConsistentReads(); paginationLoadingStrategy = DEFAULT.getPaginationLoadingStrategy(); conversionSchema = DEFAULT.getConversionSchema(); batchWriteRetryStrategy = DEFAULT.getBatchWriteRetryStrategy(); batchLoadRetryStrategy = DEFAULT.getBatchLoadRetryStrategy(); } }
/** * Builds a new {@code DynamoDBMapperConfig} object. * * @return the new, immutable config object */ public DynamoDBMapperConfig build() { return new DynamoDBMapperConfig(this); } }