// Path: cdi-properties-main/src/main/java/com/byteslounge/cdi/resolver/bean/ResolverBean.java
// public interface ResolverBean<T> {
// 
//     /**
//      * Processes a CDI managed bean and checks if it defines an extension's resolver method
//      * 
//      * @param at the CDI managed bean to check for an extension's resolver method
//      */
//     void process(AnnotatedType<?> at);
// 
//     /**
//      * Initializes the extension's resolver method
//      * 
//      * @param beanManager the CDI container Bean Manager
//      */
//     void initialize(BeanManager beanManager);
//     
//     /**
//      * Invokes the extension's resolver method represented by this bean
//      * 
//      * @param resolverContext the Resolver Context
//      * @param ctx The CDI creational context
//      * 
//      * @return the value returned by this extension's resolver method
//      */
//     T invoke(ResolverContext resolverContext, CreationalContext<?> ctx);
// 
// }
// 
// Path: cdi-properties-main/src/main/java/com/byteslounge/cdi/resolver/context/ResolverContext.java
// public class ResolverContext {
// 
//     private final String key;
//     private final String bundleName;
//     private Bean<?> resolverBean;
//     private BeanManager beanManager;
// 
//     private ResolverContext(String key, String bundleName) {
//         this.key = key;
//         this.bundleName = bundleName;
//     }
// 
//     /**
//      * Creates a {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance.
//      * 
//      * @param key the property key to be associated with the created context
//      * @param bundleName the resource bundle name to be associated with the created context
//      * 
//      * @return the newly created {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      */
//     public static ResolverContext create(String key, String bundleName) {
//         return new ResolverContext(key, bundleName);
//     }
// 
//     /**
//      * Gets the key associated with this {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      * 
//      * @return the key associated with this {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      */
//     public String getKey() {
//         return key;
//     }
// 
//     /**
//      * Gets the resource bundle name associated with this {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      * 
//      * @return the resource bundle name associated with this {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      */
//     public String getBundleName() {
//         return bundleName;
//     }
// 
//     /**
//      * Sets the resolver bean associated with the current resolving execution
//      * 
//      * @param resolverBean the property key to be associated with the created context
//      */
//     public void setResolverBean(Bean<?> resolverBean) {
//         this.resolverBean = resolverBean;
//     }
// 
//     /**
//      * Gets the resolver bean associated with the current resolving execution
//      * 
//      * @return the resolver bean associated with the current resolving execution
//      */
//     public Bean<?> getResolverBean() {
//         return resolverBean;
//     }
// 
//     /**
//      * Gets the bean manager associated with the current resolving execution
//      * 
//      * @return the bean manager associated with the current resolving execution
//      */
//     public BeanManager getBeanManager() {
//         return beanManager;
//     }
// 
//     /**
//      * Sets the bean manager associated with the current resolving execution
//      * 
//      * @param beanManager the bean manager associated with the current resolving execution
//      */
//     public void setBeanManager(BeanManager beanManager) {
//         this.beanManager = beanManager;
//     }
// 
// }


import javax.enterprise.context.spi.CreationalContext;
import com.byteslounge.cdi.resolver.bean.ResolverBean;
import com.byteslounge.cdi.resolver.context.ResolverContext;
import java.util.Locale;
/*
 * Copyright 2014 byteslounge.com (Gonçalo Marques).
 *
 * 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.byteslounge.cdi.extension.param;




/**
 * Represents a resolver that will be used to evaluate a 
 * parameter of the property resolver method of type Locale
 * 
 * @author Gonçalo Marques
 * @since 1.1.0
 */
public class LocalePropertyResolverParameter implements ResolverParameter<Locale> {

    private final ResolverBean<Locale> localeResolverBean;

    public LocalePropertyResolverParameter(ResolverBean<Locale> localResolverBean) {
        this.localeResolverBean = localResolverBean;
    }

    /**
     * see {@link ResolverParameter#resolve(String, String, CreationalContext)}
     */
// Path: cdi-properties-main/src/main/java/com/byteslounge/cdi/resolver/bean/ResolverBean.java
// public interface ResolverBean<T> {
// 
//     /**
//      * Processes a CDI managed bean and checks if it defines an extension's resolver method
//      * 
//      * @param at the CDI managed bean to check for an extension's resolver method
//      */
//     void process(AnnotatedType<?> at);
// 
//     /**
//      * Initializes the extension's resolver method
//      * 
//      * @param beanManager the CDI container Bean Manager
//      */
//     void initialize(BeanManager beanManager);
//     
//     /**
//      * Invokes the extension's resolver method represented by this bean
//      * 
//      * @param resolverContext the Resolver Context
//      * @param ctx The CDI creational context
//      * 
//      * @return the value returned by this extension's resolver method
//      */
//     T invoke(ResolverContext resolverContext, CreationalContext<?> ctx);
// 
// }
// 
// Path: cdi-properties-main/src/main/java/com/byteslounge/cdi/resolver/context/ResolverContext.java
// public class ResolverContext {
// 
//     private final String key;
//     private final String bundleName;
//     private Bean<?> resolverBean;
//     private BeanManager beanManager;
// 
//     private ResolverContext(String key, String bundleName) {
//         this.key = key;
//         this.bundleName = bundleName;
//     }
// 
//     /**
//      * Creates a {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance.
//      * 
//      * @param key the property key to be associated with the created context
//      * @param bundleName the resource bundle name to be associated with the created context
//      * 
//      * @return the newly created {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      */
//     public static ResolverContext create(String key, String bundleName) {
//         return new ResolverContext(key, bundleName);
//     }
// 
//     /**
//      * Gets the key associated with this {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      * 
//      * @return the key associated with this {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      */
//     public String getKey() {
//         return key;
//     }
// 
//     /**
//      * Gets the resource bundle name associated with this {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      * 
//      * @return the resource bundle name associated with this {@link com.byteslounge.cdi.resolver.context.ResolverContext} instance
//      */
//     public String getBundleName() {
//         return bundleName;
//     }
// 
//     /**
//      * Sets the resolver bean associated with the current resolving execution
//      * 
//      * @param resolverBean the property key to be associated with the created context
//      */
//     public void setResolverBean(Bean<?> resolverBean) {
//         this.resolverBean = resolverBean;
//     }
// 
//     /**
//      * Gets the resolver bean associated with the current resolving execution
//      * 
//      * @return the resolver bean associated with the current resolving execution
//      */
//     public Bean<?> getResolverBean() {
//         return resolverBean;
//     }
// 
//     /**
//      * Gets the bean manager associated with the current resolving execution
//      * 
//      * @return the bean manager associated with the current resolving execution
//      */
//     public BeanManager getBeanManager() {
//         return beanManager;
//     }
// 
//     /**
//      * Sets the bean manager associated with the current resolving execution
//      * 
//      * @param beanManager the bean manager associated with the current resolving execution
//      */
//     public void setBeanManager(BeanManager beanManager) {
//         this.beanManager = beanManager;
//     }
// 
// }


// Path: cdi-properties-main/src/main/java/com/byteslounge/cdi/extension/param/LocalePropertyResolverParameter.java
import javax.enterprise.context.spi.CreationalContext;
import com.byteslounge.cdi.resolver.bean.ResolverBean;
import com.byteslounge.cdi.resolver.context.ResolverContext;
import java.util.Locale;

/*
 * Copyright 2014 byteslounge.com (Gonçalo Marques).
 *
 * 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.byteslounge.cdi.extension.param;




/**
 * Represents a resolver that will be used to evaluate a 
 * parameter of the property resolver method of type Locale
 * 
 * @author Gonçalo Marques
 * @since 1.1.0
 */
public class LocalePropertyResolverParameter implements ResolverParameter<Locale> {

    private final ResolverBean<Locale> localeResolverBean;

    public LocalePropertyResolverParameter(ResolverBean<Locale> localResolverBean) {
        this.localeResolverBean = localResolverBean;
    }

    /**
     * see {@link ResolverParameter#resolve(String, String, CreationalContext)}
     */
    @Override