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

org.jboss.weld.context.beanstore.AbstractNamingScheme Maven / Gradle / Ivy

package org.jboss.weld.context.beanstore;

import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;

import java.util.ArrayList;
import java.util.Collection;

import static com.google.common.collect.Collections2.filter;

public abstract class AbstractNamingScheme implements NamingScheme {

    class PrefixPredicate implements Predicate {

        public boolean apply(String input) {
            return AbstractNamingScheme.this.accept(input);
        }

    }

    class DeprefixerFunction implements Function {

        public String apply(String from) {
            return AbstractNamingScheme.this.deprefix(from);
        }

    }

    class PrefixerFunction implements Function {

        public String apply(String from) {
            return AbstractNamingScheme.this.prefix(from);
        }

    }

    private final String delimiter;
    private final PrefixPredicate predicate;
    private final DeprefixerFunction deprefixerFunction;
    private final PrefixerFunction prefixerFunction;

    /**
     * Create a new Prefixer.
     *
     * @param prefix    The prefix
     * @param delimiter The delimiter to use between the prefix and the
     *                  identifier.
     */
    public AbstractNamingScheme(String delimiter) {
        this.delimiter = delimiter;
        this.predicate = new PrefixPredicate();
        this.deprefixerFunction = new DeprefixerFunction();
        this.prefixerFunction = new PrefixerFunction();
    }

    public boolean accept(String id) {
        return id.startsWith(getPrefix() + delimiter);
    }

    public String deprefix(String id) {
        return id.substring(getPrefix().length() + delimiter.length());
    }

    public String prefix(String id) {
        return getPrefix() + delimiter + id;
    }

    public Collection filterIds(Collection ids) {
        return new ArrayList(filter(ids, predicate));
    }

    public Collection deprefix(Collection ids) {
        return new ArrayList(Collections2.transform(ids, deprefixerFunction));
    }

    public Collection prefix(Collection ids) {
        return new ArrayList(Collections2.transform(ids, prefixerFunction));
    }

    protected abstract String getPrefix();

    protected String getDelimiter() {
        return delimiter;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy