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

com.khs.sherpa.util.SherpaPredicates Maven / Gradle / Ivy

There is a newer version: 1.3.2
Show newest version
package com.khs.sherpa.util;

/*
 * Copyright 2012 the original author or authors.
 *
 * 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.
 */

import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.annotation.Nullable;

import com.google.common.base.Predicate;
import com.khs.sherpa.annotation.Action;

public class SherpaPredicates {

	public static  Predicate withActionAnnotationValueEqualTo(final Object value) {
        return new Predicate() {
            public boolean apply(@Nullable T input) {
                return input != null && input.getAnnotation(Action.class).value().equals(value);
            }
        };
    }
	
	public static  Predicate withActionMappingPattern(final String path) {
		final Pattern pattern = Pattern.compile("\\{\\d?\\w+\\}");
		
        return new Predicate() {
            public boolean apply(@Nullable T input) {
            	Matcher matcher = null;
            	if(input != null && input.isAnnotationPresent(Action.class)) {
            		for(String url: input.getAnnotation(Action.class).mapping()) {
            			matcher = pattern.matcher(url);
            			return Pattern.matches(matcher.replaceAll("[^/]*"), path);
            		}
            	}
            	return false;
            }
        };
    }
	
    
    public static Predicate withAssignableFrom(final Class type) {
        return new Predicate() {
            public boolean apply(@Nullable Method input) {
            	return input != null && input.getDeclaringClass().isAssignableFrom(type);
            }
        };
    }
 
    public static Predicate withInterface() {
        return new Predicate() {
            public boolean apply(@Nullable Method input) {
            	System.out.println(input.getName() + " + " + input.isBridge() + " - " + input.getDeclaringClass());
            	return input != null && input.isBridge();
            }
        };
    }
    
    public static Predicate withGeneric() {
        return new Predicate() {
            public boolean apply(@Nullable Method input) {
            	return input != null && input.isBridge();
            }
        };
    }
    
    public static Predicate withSherpaActionDisabled() {
        return new Predicate() {
            public boolean apply(@Nullable Method input) {
            	return input != null 
            			&& input.getAnnotation(Action.class) != null
            			&& input.getAnnotation(Action.class).disabled();
            }
        };
    }
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy