Skip to content

Commit

Permalink
Added ClassContext method to set a base rule that is built from a cla…
Browse files Browse the repository at this point in the history
…ss (preparation for ocpsoft#60)
  • Loading branch information
chkal committed Jul 28, 2012
1 parent ae3d641 commit bab828a
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import org.ocpsoft.rewrite.annotation.spi.AnnotationHandler;
import org.ocpsoft.rewrite.config.ConfigurationBuilder;
import org.ocpsoft.rewrite.config.Rule;
import org.ocpsoft.rewrite.config.RuleBuilder;
import org.ocpsoft.rewrite.context.Context;

Expand All @@ -33,7 +34,15 @@ public interface ClassContext extends Context
ConfigurationBuilder getConfigurationBuilder();

/**
* Get the {@link RuleBuilder} for the current class visit.
* Get the {@link RuleBuilder} for the current class visit. If no base rule has been set by calling
* {@link #setBaseRule(Rule)}, the method will return a new {@link RuleBuilder} instance.
*/
RuleBuilder getRuleBuilder();

/**
* Sets the basic rule that is built from the class. Subsequent calls of {@link #getRuleBuilder()} will return
* builder initialized with this rule.
*/
void setBaseRule(Rule rule);

}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
import org.ocpsoft.rewrite.config.Configuration;
import org.ocpsoft.rewrite.config.ConfigurationBuilder;
import org.ocpsoft.rewrite.config.Rule;
import org.ocpsoft.rewrite.config.RuleBuilder;

public class ClassVisitorImpl implements ClassVisitor, Configuration
{
Expand Down Expand Up @@ -84,8 +83,7 @@ public ClassVisitorImpl(List<AnnotationHandler<Annotation>> handlers)
public void visit(Class<?> clazz)
{

RuleBuilder ruleBuilder = RuleBuilder.define();
ClassContext context = new ClassContextImpl(builder, ruleBuilder);
ClassContext context = new ClassContextImpl(builder);

if (log.isTraceEnabled()) {
log.trace("Scanning class: {}", clazz.getName());
Expand All @@ -111,11 +109,6 @@ public void visit(Class<?> clazz)
}
}

if (ruleBuilder.getOperationBuilder() != null || ruleBuilder.getConditionBuilder() != null)
{
builder.addRule(ruleBuilder);
}

}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,41 @@

import org.ocpsoft.rewrite.annotation.api.ClassContext;
import org.ocpsoft.rewrite.config.ConfigurationBuilder;
import org.ocpsoft.rewrite.config.ConfigurationRuleBuilder;
import org.ocpsoft.rewrite.config.Rule;
import org.ocpsoft.rewrite.config.RuleBuilder;
import org.ocpsoft.rewrite.context.ContextBase;

public class ClassContextImpl extends ContextBase implements ClassContext
{
private final ConfigurationBuilder config;
private final RuleBuilder rule;

public ClassContextImpl(ConfigurationBuilder config, RuleBuilder rule)
private ConfigurationRuleBuilder configurationRuleBuilder;

public ClassContextImpl(ConfigurationBuilder config)
{
this.config = config;
this.rule = rule;
}

@Override
public ConfigurationBuilder getConfigurationBuilder()
public void setBaseRule(Rule rule)
{
return config;
configurationRuleBuilder = config.addRule(rule);
}

@Override
public RuleBuilder getRuleBuilder()
{
return rule;
if (configurationRuleBuilder == null) {
configurationRuleBuilder = config.addRule();
}
return configurationRuleBuilder.getRuleBuilder();
}

@Override
public ConfigurationBuilder getConfigurationBuilder()
{
return config;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@
import org.ocpsoft.rewrite.annotation.api.FieldContext;
import org.ocpsoft.rewrite.bind.BindingBuilder;
import org.ocpsoft.rewrite.config.ConfigurationBuilder;
import org.ocpsoft.rewrite.config.Rule;
import org.ocpsoft.rewrite.config.RuleBuilder;
import org.ocpsoft.rewrite.context.ContextBase;

/**
* Default implementation of {@link FieldContext}
*
*
* @author Christian Kaltepoth
*/
@SuppressWarnings("rawtypes")
Expand Down Expand Up @@ -70,4 +71,10 @@ public BindingBuilder getBindingBuilder()
return bindingBuilder;
}

@Override
public void setBaseRule(Rule rule)
{
classContext.setBaseRule(rule);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@
import org.ocpsoft.rewrite.annotation.api.MethodContext;
import org.ocpsoft.rewrite.bind.BindingBuilder;
import org.ocpsoft.rewrite.config.ConfigurationBuilder;
import org.ocpsoft.rewrite.config.Rule;
import org.ocpsoft.rewrite.config.RuleBuilder;
import org.ocpsoft.rewrite.context.ContextBase;

/**
* Default implementation of {@link MethodContext}
*
*
* @author Christian Kaltepoth
*/
@SuppressWarnings("rawtypes")
Expand Down Expand Up @@ -70,4 +71,10 @@ public BindingBuilder getBindingBuilder()
return bindingBuilder;
}

@Override
public void setBaseRule(Rule rule)
{
classContext.setBaseRule(rule);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@
import org.ocpsoft.rewrite.annotation.api.ParameterContext;
import org.ocpsoft.rewrite.bind.BindingBuilder;
import org.ocpsoft.rewrite.config.ConfigurationBuilder;
import org.ocpsoft.rewrite.config.Rule;
import org.ocpsoft.rewrite.config.RuleBuilder;
import org.ocpsoft.rewrite.context.ContextBase;

/**
* Default implementation of {@link ParameterContext}
*
*
* @author <a href="mailto:[email protected]">Lincoln Baxter, III</a>
*/
@SuppressWarnings("rawtypes")
Expand Down Expand Up @@ -76,4 +77,10 @@ public BindingBuilder getBindingBuilder()
return bindingBuilder;
}

@Override
public void setBaseRule(Rule rule)
{
methodContext.setBaseRule(rule);
}

}

0 comments on commit bab828a

Please sign in to comment.