/* * #%L * BroadleafCommerce Framework * %% * Copyright (C) 2009 - 2013 Broadleaf Commerce * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ package org.broadleafcommerce.core.catalog.service.dynamic; import org.broadleafcommerce.common.classloader.release.ThreadLocalManager; import org.broadleafcommerce.core.catalog.domain.SkuImpl; import java.util.HashMap; /** * Convenient place to store the pricing considerations context and the pricing service on thread local. This class is * usually filled out by a {@link org.broadleafcommerce.core.web.catalog.DynamicSkuPricingFilter}. The default * implementation of this is {@link org.broadleafcommerce.core.web.catalog.DefaultDynamicSkuPricingFilter}. * * @author jfischer * @see {@link SkuImpl#getRetailPrice} * @see {@link SkuImpl#getSalePrice} * @see {@link org.broadleafcommerce.core.web.catalog.DynamicSkuPricingFilter} */ public class SkuPricingConsiderationContext { private static final ThreadLocal<SkuPricingConsiderationContext> skuPricingConsiderationContext = ThreadLocalManager.createThreadLocal(SkuPricingConsiderationContext.class); public static HashMap getSkuPricingConsiderationContext() { return SkuPricingConsiderationContext.skuPricingConsiderationContext.get().considerations; } public static void setSkuPricingConsiderationContext(HashMap skuPricingConsiderations) { SkuPricingConsiderationContext.skuPricingConsiderationContext.get().considerations = skuPricingConsiderations; } public static DynamicSkuPricingService getSkuPricingService() { return SkuPricingConsiderationContext.skuPricingConsiderationContext.get().pricingService; } public static void setSkuPricingService(DynamicSkuPricingService skuPricingService) { SkuPricingConsiderationContext.skuPricingConsiderationContext.get().pricingService = skuPricingService; } public static boolean hasDynamicPricing() { return ( getSkuPricingConsiderationContext() != null && getSkuPricingConsiderationContext().size() >= 0 && getSkuPricingService() != null ); } protected DynamicSkuPricingService pricingService; protected HashMap considerations; }