Package br.com.six2six.fixturefactory.function

Source Code of br.com.six2six.fixturefactory.function.FixtureFunction

package br.com.six2six.fixturefactory.function;

import br.com.six2six.fixturefactory.Fixture;
import br.com.six2six.fixturefactory.ObjectFactory;
import br.com.six2six.fixturefactory.processor.Processor;

public class FixtureFunction implements AtomicFunction, RelationFunction {

  private Class<?> clazz;

  private String label;
 
  private Integer quantity;

  public FixtureFunction(Class<?> clazz, String label) {
    this.clazz = clazz;
    this.label = label;
  }

  public FixtureFunction(Class<?> clazz, String label, Integer quantity) {
    this(clazz, label);
    this.quantity = quantity;
  }

  @Override
  public <T> T generateValue() {
    return generate(Fixture.from(clazz));
  }
 
  @Override
  public <T> T generateValue(Processor processor) {
    return generate(Fixture.from(clazz).uses(processor));
  }
 
  @Override
  public <T> T generateValue(Object owner) {
    return generate(new ObjectFactory(Fixture.of(clazz), owner));
  }

  @Override
  public <T> T generateValue(Object owner, Processor processor) {
      return generate(Fixture.from(clazz).uses(processor));
  }

  @SuppressWarnings("unchecked")
  private <T> T generate(ObjectFactory objectFactory) {
    return (T) (quantity != null ? objectFactory.gimme(quantity, label) : objectFactory.gimme(label));
  }
}
TOP

Related Classes of br.com.six2six.fixturefactory.function.FixtureFunction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.