// Path: src/main/java/br/com/six2six/fixturefactory/function/impl/IdentityFunction.java
// public class IdentityFunction implements AtomicFunction {
//     
//     private Object value;
//     
//     public IdentityFunction(Object value) {
//         this.value = value;
//     }
//     
//     @Override
//     @SuppressWarnings("unchecked")
// 	public <T> T generateValue() {
// 		return (T) this.value;
// 	}
// }
// 
// Path: src/main/java/br/com/six2six/fixturefactory/processor/Processor.java
// public interface Processor {
// 
//     void execute(Object result);
// }


import br.com.six2six.fixturefactory.function.AtomicFunction;
import br.com.six2six.fixturefactory.function.Function;
import br.com.six2six.fixturefactory.function.RelationFunction;
import br.com.six2six.fixturefactory.function.impl.IdentityFunction;
import br.com.six2six.fixturefactory.processor.Processor;

package br.com.six2six.fixturefactory;


public class Property {

	private String name;
	
	private Function function;

	public Property(String name, Function function) {
	    if (name == null) {
	        throw new IllegalArgumentException("name must not be null");
	    }
	    
	    if (function == null) {
            throw new IllegalArgumentException("function must not be null");
        }
	    
		this.name = name;
		this.function = function;
	}

	public Property(String name, Object value) {

// Path: src/main/java/br/com/six2six/fixturefactory/function/impl/IdentityFunction.java
// public class IdentityFunction implements AtomicFunction {
//     
//     private Object value;
//     
//     public IdentityFunction(Object value) {
//         this.value = value;
//     }
//     
//     @Override
//     @SuppressWarnings("unchecked")
// 	public <T> T generateValue() {
// 		return (T) this.value;
// 	}
// }
// 
// Path: src/main/java/br/com/six2six/fixturefactory/processor/Processor.java
// public interface Processor {
// 
//     void execute(Object result);
// }


// Path: src/main/java/br/com/six2six/fixturefactory/Property.java
import br.com.six2six.fixturefactory.function.AtomicFunction;
import br.com.six2six.fixturefactory.function.Function;
import br.com.six2six.fixturefactory.function.RelationFunction;
import br.com.six2six.fixturefactory.function.impl.IdentityFunction;
import br.com.six2six.fixturefactory.processor.Processor;

package br.com.six2six.fixturefactory;


public class Property {

	private String name;
	
	private Function function;

	public Property(String name, Function function) {
	    if (name == null) {
	        throw new IllegalArgumentException("name must not be null");
	    }
	    
	    if (function == null) {
            throw new IllegalArgumentException("function must not be null");
        }
	    
		this.name = name;
		this.function = function;
	}

	public Property(String name, Object value) {

	    this(name, new IdentityFunction(value));
