/**
* Copyright (c) 2000-2017 Liferay, Inc. All rights reserved.
*
* 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.
*/
package com.liferay.faces.util.product.internal;
import java.util.Collections;
import java.util.EnumMap;
import java.util.Map;
import com.liferay.faces.util.product.Product;
import com.liferay.faces.util.product.ProductFactory;
/**
* @author Neil Griffin
* @author Kyle Stiemann
*/
public class ProductFactoryImpl extends ProductFactory {
private static final Map<Product.Name, Product> PRODUCTS;
static {
Map<Product.Name, Product> productMap = new EnumMap<Product.Name, Product>(Product.Name.class);
productMap.put(Product.Name.ANGULARBEANS, new ProductAngularBeansImpl());
productMap.put(Product.Name.ANGULARFACES, new ProductAngularFacesImpl());
productMap.put(Product.Name.BOOTSFACES, new ProductBootsFacesImpl());
productMap.put(Product.Name.BUTTERFACES, new ProductButterFacesImpl());
Product cdiApi = new ProductCDIApiImpl();
productMap.put(Product.Name.CDI_API, cdiApi);
productMap.put(Product.Name.CLOSURE_TEMPLATES, new ProductClosureTemplatesImpl());
productMap.put(Product.Name.DELTASPIKE, new ProductDeltaSpikeImpl());
Product glassfish = new ProductGlassfishImpl();
productMap.put(Product.Name.GLASSFISH, glassfish);
productMap.put(Product.Name.HIGHFACES, new ProductHighFacesImpl());
productMap.put(Product.Name.ICEFACES, new ProductICEfacesImpl());
Product jetty = new ProductJettyImpl();
productMap.put(Product.Name.JETTY, jetty);
productMap.put(Product.Name.LIFERAY_FACES_ALLOY, new ProductLiferayFacesAlloyImpl());
productMap.put(Product.Name.LIFERAY_FACES_BRIDGE, new ProductLiferayFacesBridgeImpl());
productMap.put(Product.Name.LIFERAY_FACES_BRIDGE_EXT, new ProductLiferayFacesBridgeExtImpl());
productMap.put(Product.Name.LIFERAY_FACES_METAL, new ProductLiferayFacesMetalImpl());
productMap.put(Product.Name.LIFERAY_FACES_PORTAL, new ProductLiferayFacesPortalImpl());
productMap.put(Product.Name.LIFERAY_FACES_SHOWCASE, new ProductLiferayFacesShowcaseImpl());
productMap.put(Product.Name.LIFERAY_FACES_UTIL, new ProductLiferayFacesUtilImpl());
Product liferayPortal = new ProductLiferayPortalImpl();
productMap.put(Product.Name.LIFERAY_PORTAL, liferayPortal);
Product mojarra = new ProductMojarraImpl();
productMap.put(Product.Name.MOJARRA, mojarra);
Product myFaces = new ProductMyfacesImpl();
productMap.put(Product.Name.MYFACES, myFaces);
Product jsfApi = new ProductJSFApiImpl(mojarra, myFaces);
productMap.put(Product.Name.JSF_API, jsfApi);
productMap.put(Product.Name.JSF, new ProductSpecImpl("JSF", mojarra, myFaces, jsfApi));
productMap.put(Product.Name.OMNIFACES, new ProductOmniFacesImpl());
Product openWebBeans = new ProductOpenWebBeansImpl();
productMap.put(Product.Name.OPEN_WEB_BEANS, openWebBeans);
Product pluto = new ProductPlutoImpl();
productMap.put(Product.Name.PLUTO, pluto);
Product portletApi = new ProductPortletApiImpl(liferayPortal, pluto);
productMap.put(Product.Name.PORTLET_API, portletApi);
productMap.put(Product.Name.PORTLET_CONTAINER, new ProductSpecImpl("Portlet", liferayPortal, pluto));
productMap.put(Product.Name.PRIMEFACES, new ProductPrimeFacesImpl());
productMap.put(Product.Name.PRIMEFACES_EXTENSIONS, new ProductPrimeFacesExtensionsImpl());
Product resin = new ProductResinImpl();
productMap.put(Product.Name.RESIN, resin);
productMap.put(Product.Name.RICHFACES, new ProductRichFacesImpl());
Product servletApi = new ProductServletApiImpl();
productMap.put(Product.Name.SERVLET_API, servletApi);
productMap.put(Product.Name.SPRING_FRAMEWORK, new ProductSpringFrameworkImpl());
Product tomcat = new ProductTomcatImpl();
productMap.put(Product.Name.TOMCAT, tomcat);
Product weld = new ProductWeldImpl();
productMap.put(Product.Name.WELD, weld);
productMap.put(Product.Name.CDI, new ProductSpecImpl("CDI", weld, openWebBeans));
Product weblogic = new ProductWebLogicImpl();
productMap.put(Product.Name.WEBLOGIC, weblogic);
Product websphere = new ProductWebSphereImpl();
productMap.put(Product.Name.WEBSPHERE, websphere);
Product wildfly = new ProductWildFlyImpl();
productMap.put(Product.Name.WILDFLY, wildfly);
productMap.put(Product.Name.SERVLET_CONTAINER,
new ProductSpecImpl("Servlet", tomcat, wildfly, resin, glassfish, weblogic, websphere, jetty));
PRODUCTS = Collections.unmodifiableMap(productMap);
}
@Override
public Product getProductImplementation(Product.Name productId) {
return PRODUCTS.get(productId);
}
}