
com.adobe.aemds.guide.service.internal.GuideCaptchaValidatorProvider Maven / Gradle / Ivy
/*************************************************************************
*
* ADOBE CONFIDENTIAL
* __________________
*
* Copyright 2016 Adobe Systems Incorporated
* All Rights Reserved.
*
* NOTICE: All information contained herein is, and remains
* the property of Adobe Systems Incorporated and its suppliers,
* if any. The intellectual and technical concepts contained
* herein are proprietary to Adobe Systems Incorporated and its
* suppliers and may be covered by U.S. and Foreign Patents,
* patents in process, and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from Adobe Systems Incorporated.
**************************************************************************/
package com.adobe.aemds.guide.service.internal;
import com.adobe.aemds.guide.service.GuideCaptchaValidator;
import com.adobe.aemds.guide.service.GuideException;
import org.apache.commons.lang.StringUtils;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.sling.commons.osgi.ServiceUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;
/**
* @pad.exclude Exclude from Published API.
* @class GuideCaptchaValidatorProvider
* Service to identify captcha validator and provide GuideCaptchaValidator Impl class object.
*/
@Component(immediate = true, metatype = false, label = "Adaptive Form Captcha validator provider Service", description = "Service to provide GuideCaptchaValidator impl class object.")
@Service(GuideCaptchaValidatorProvider.class)
public class GuideCaptchaValidatorProvider {
private static final Logger logger = LoggerFactory.getLogger(GuideCaptchaValidatorProvider.class);
@Reference(referenceInterface = GuideCaptchaValidator.class,
policy = ReferencePolicy.DYNAMIC,
cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE,
bind = "bindCaptchaValidatorProviderMap",
unbind = "unbindCaptchaValidatorProviderMap")
private Map,GuideCaptchaValidator>> captchaValidatorProviderMap = new ConcurrentHashMap,GuideCaptchaValidator>>();
/**
* @pad.exclude
*/
protected void bindCaptchaValidatorProviderMap(final GuideCaptchaValidator validator, Map config){
String validatorName = validator.getCaptchaValidatorName();
if (captchaValidatorProviderMap.containsKey(validatorName)) {
ConcurrentSkipListMap, GuideCaptchaValidator> innerMap = (ConcurrentSkipListMap, GuideCaptchaValidator>) captchaValidatorProviderMap.get(validatorName);
innerMap.put( ServiceUtil.getComparableForServiceRanking(config), validator);
} else {
Map,GuideCaptchaValidator> innerMap = new ConcurrentSkipListMap, GuideCaptchaValidator>();
innerMap.put( ServiceUtil.getComparableForServiceRanking(config), validator);
captchaValidatorProviderMap.put(validatorName, innerMap);
}
}
/**
* @pad.exclude
*/
protected void unbindCaptchaValidatorProviderMap(final GuideCaptchaValidator validator, Map config) {
String validatorName = validator.getCaptchaValidatorName();
if (captchaValidatorProviderMap.containsKey(validatorName)) {
ConcurrentSkipListMap, GuideCaptchaValidator> innerMap = (ConcurrentSkipListMap, GuideCaptchaValidator>) captchaValidatorProviderMap.get(validatorName);
innerMap.remove( ServiceUtil.getComparableForServiceRanking(config) );
}
}
/**
* @pad.exclude
*/
public GuideCaptchaValidator getGuideCaptchaValidator(String validatorName) throws GuideException {
if (StringUtils.isEmpty(validatorName)) {
throw new GuideException("captcha validator name is required");
}
GuideCaptchaValidator captchaValidator = null;
if (!StringUtils.isEmpty(validatorName)) {
ConcurrentSkipListMap, GuideCaptchaValidator> innerMap = (ConcurrentSkipListMap, GuideCaptchaValidator>) captchaValidatorProviderMap.get(validatorName);
if(innerMap != null && innerMap.firstEntry() != null){
captchaValidator = innerMap.firstEntry().getValue();
}else {
logger.error("Captcha validator impl object not found.");
}
} else {
logger.error("Captcha service provider name is required to validate the captcha");
}
if (captchaValidator == null) {
throw new GuideException("No validator is available for given validator name : " + validatorName);
}
return captchaValidator;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy