mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 16:07:15 +02:00
Use string keys for the multimap of pricing engines for TLDs
This is better than the previous way of using the canonical name of the class, because the previous way did not allow for refactoring, and also required the PremiumPricingEngine to live in the model package lest there be circular dependencies, which does not seem ideal. Note that, for reasons of backwards compatibility with existing persisted data, the name of the static premium pricing engine has been set to its canonical class name, but the class can now be refactored going forward so long as this string remains unchanged, and any new pricing engine implementations can use whatever string key they want (it doesn't have to be a canonical class name). ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=129215185
This commit is contained in:
parent
7cc7dc4af2
commit
ea24f6ca31
9 changed files with 26 additions and 48 deletions
|
@ -18,9 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
|
|||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static google.registry.util.DomainNameUtils.getTldFromDomainName;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Maps;
|
||||
import google.registry.model.pricing.PremiumPricingEngine;
|
||||
import google.registry.model.pricing.PremiumPricingEngine.DomainPrices;
|
||||
import google.registry.model.registry.Registry;
|
||||
|
@ -34,20 +31,8 @@ import org.joda.time.DateTime;
|
|||
*/
|
||||
public final class PricingEngineProxy {
|
||||
|
||||
private static final Map<Class<? extends PremiumPricingEngine>, PremiumPricingEngine>
|
||||
premiumPricingEngineClasses = DaggerPricingComponent.create().premiumPricingEngines();
|
||||
|
||||
// Dagger map keys have to be provided with constant values that are known at compile time, so it
|
||||
// can't be done using clazz.getCanonicalName(). So we construct the map by canonical name here,
|
||||
// at runtime.
|
||||
private static final ImmutableMap<String, PremiumPricingEngine> premiumPricingEngines =
|
||||
Maps.uniqueIndex(
|
||||
premiumPricingEngineClasses.values(),
|
||||
new Function<PremiumPricingEngine, String>() {
|
||||
@Override
|
||||
public String apply(PremiumPricingEngine pricingEngine) {
|
||||
return pricingEngine.getClass().getCanonicalName();
|
||||
}});
|
||||
private static final Map<String, PremiumPricingEngine>
|
||||
premiumPricingEngines = DaggerPricingComponent.create().premiumPricingEngines();
|
||||
|
||||
/** Returns the billing cost for registering the specified domain name for this many years. */
|
||||
public static Money getDomainCreateCost(String domainName, DateTime priceTime, int years) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue