All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.octo.captcha.module.config.CaptchaModuleConfig Maven / Gradle / Ivy

/*
 * JCaptcha, the open source java framework for captcha definition and integration
 * Copyright (c)  2007 jcaptcha.net. All Rights Reserved.
 * See the LICENSE.txt file distributed with this package.
 */

package com.octo.captcha.module.config;

import com.octo.captcha.module.CaptchaModuleException;

import java.util.ResourceBundle;

/**
 * Configuration base class for modules.
 *
 * @author Marc-Antoine Garrigue
 * @version 1.0
 */
public class CaptchaModuleConfig {


    private static CaptchaModuleConfig instance = new CaptchaModuleConfig();

    public static CaptchaModuleConfig getInstance() {
        return instance;
    }

    /**
     * Set the message type to be a bundle
     */
    public static final String MESSAGE_TYPE_BUNDLE = "bundle";

    /**
     * Set the id to be generated
     */
    public static final String ID_GENERATED = "generated";
    /**
     * Set the message type to be a text
     */
    public static final String MESSAGE_TYPE_TEXT = "text";
    /**
     * Set the id to be retrieved from session id
     */
    public static final String ID_SESSION = "session";
    /**
     * Set the default JMX registration name
     */
    public static final String JMX_REGISTERING_NAME =
            "com.octo.captcha.module.struts:object=CaptchaServicePlugin";


    private CaptchaModuleConfig() {
    }

    private Boolean registerToMbean = Boolean.FALSE;

    private String responseKey = "jcaptcha_response";

    private String serviceClass = "com.octo.captcha.service.image.DefaultManageableImageCaptchaService";

    private String messageType = com.octo.captcha.module.config.CaptchaModuleConfig.MESSAGE_TYPE_TEXT;

    private String messageValue = "You failed the jcaptcha test";

    private String messageKey = "jcaptcha_fail";

    private String idType = com.octo.captcha.module.config.CaptchaModuleConfig.ID_SESSION;

    private String idKey = "jcaptcha_id";

    /**
     * @return The key parameter name, default jcatpcha_id
     */
    public String getIdKey() {
        return idKey;
    }

    public void setIdKey(String idKey) {
        this.idKey = idKey;
    }

    /**
     * @return The message type parameter value, default text
     */

    public String getMessageType() {
        return messageType;
    }

    public void setMessageType(String messageType) {
        this.messageType = messageType;
    }

    /**
     * @return The message parameter value, default "you failed the captcha test"
     */
    public String getMessageValue() {
        return messageValue;
    }

    public void setMessageValue(String messageValue) {
        this.messageValue = messageValue;
    }

    /**
     * @return The message parameter key, default "jcaptcha_fail"
     */
    public String getMessageKey() {
        return messageKey;
    }

    public void setMessageKey(String messageKey) {
        this.messageKey = messageKey;
    }

    /**
     * @return The id generation type, default "session"
     */
    public String getIdType() {
        return idType;
    }

    public void setIdType(String idType) {
        this.idType = idType;
    }

    /**
     * @return The jcaptcha service class name, default "jcaptcha_fail"
     */
    public String getServiceClass() {
        return serviceClass;
    }

    public void setServiceClass(String serviceClass) {
        this.serviceClass = serviceClass;
    }

    public String getResponseKey() {
        return responseKey;
    }

    public void setResponseKey(String responseKey) {
        this.responseKey = responseKey;
    }

    public Boolean getRegisterToMbean() {
        return registerToMbean;
    }

    public void setRegisterToMbean(Boolean registerToMbean) {
        this.registerToMbean = registerToMbean;
    }


    public void validate() {

        //verify values
        if (!(com.octo.captcha.module.config.CaptchaModuleConfig.MESSAGE_TYPE_TEXT.equals(messageType) || com.octo.captcha.module.config.CaptchaModuleConfig.MESSAGE_TYPE_BUNDLE.equals(messageType)))
            throw new com.octo.captcha.service.CaptchaServiceException("messageType can " +
                    "only be set to '" + com.octo.captcha.module.config.CaptchaModuleConfig.MESSAGE_TYPE_TEXT + "' or '" + com.octo.captcha.module.config.CaptchaModuleConfig.MESSAGE_TYPE_BUNDLE + "'");

        if (!(com.octo.captcha.module.config.CaptchaModuleConfig.ID_SESSION.equals(idType) || com.octo.captcha.module.config.CaptchaModuleConfig.ID_GENERATED.equals(idType)))
            throw new com.octo.captcha.service.CaptchaServiceException("idType can " +
                    "only be set to '" + com.octo.captcha.module.config.CaptchaModuleConfig.ID_SESSION + "' or '" + com.octo.captcha.module.config.CaptchaModuleConfig.ID_GENERATED + "'");

        if (messageValue == null) throw new CaptchaModuleException("messageValue cannot be null");

        if (messageKey == null || "".equals(messageKey))
            throw new CaptchaModuleException("messageKey cannot be null or empty");

        if (responseKey == null || "".equals(responseKey))
            throw new CaptchaModuleException("responseKey cannot be null or empty");

        if ((idType.equals(com.octo.captcha.module.config.CaptchaModuleConfig.ID_GENERATED)) && (idKey == null || "".equals(idKey)))
            throw new com.octo.captcha.service.CaptchaServiceException("idKey cannot be null or empty when id is generated (ie idType='" + com.octo.captcha.module.config.CaptchaModuleConfig.ID_GENERATED + "'");

        //if message is in a bundle, try to load it
        if (this.messageType.equals(com.octo.captcha.module.config.CaptchaModuleConfig.MESSAGE_TYPE_BUNDLE)) {
            ResourceBundle bundle = ResourceBundle.getBundle(getMessageValue());
            if (bundle == null) {
                throw new CaptchaModuleException("can't initialize module config with a unfound bundle : "
                        + "resource bundle " + getMessageValue() + " has  not been found");
            } else {
                if (bundle.getString(getMessageKey()) == null) {
                    throw new CaptchaModuleException("can't initialize module config with a unfound message : "
                            + "resource bundle " + getMessageValue() + " has  no key named :" + getMessageKey());
                }
            }

        }

        // try to create the CaptchaService
        try {
            Class.forName(serviceClass).newInstance();
        } catch (Throwable e) {
            e.printStackTrace();
            throw new CaptchaModuleException("Error during Service Class initialization", e);
        }


    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy