org.ocpsoft.rewrite.AbstractRewrite Maven / Gradle / Ivy
/*
* Copyright 2014 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.ocpsoft.rewrite;
import java.util.ArrayList;
import java.util.List;
import org.ocpsoft.logging.Logger;
import org.ocpsoft.logging.Logger.Level;
import org.ocpsoft.rewrite.config.Rule;
import org.ocpsoft.rewrite.config.RuleMetadata;
import org.ocpsoft.rewrite.context.Context;
import org.ocpsoft.rewrite.context.ContextBase;
import org.ocpsoft.rewrite.event.Rewrite;
/**
* @author Lincoln Baxter, III
*
*/
public abstract class AbstractRewrite implements Rewrite
{
private static final Logger log = Logger.getLogger(AbstractRewrite.class);
private Context context = new ContextBase() {};
@Override
public Context getRewriteContext()
{
return context;
}
@Override
@SuppressWarnings("unchecked")
public List getEvaluatedRules()
{
List evaluated = (List) this.getRewriteContext().get(
AbstractRewrite.class.getName() + "_EVALUATED_RULES");
if (evaluated == null)
{
evaluated = new ArrayList();
this.getRewriteContext().put(AbstractRewrite.class.getName() + "_EVALUATED_RULES", evaluated);
}
return evaluated;
}
/**
* Print a log of all {@link Rule} instances evaluated during the given {@link Rewrite} event. This method is a no-op
* if the selected logging {@link Level} is disabled.
*/
public static void logEvaluatedRules(Rewrite event, Level level)
{
switch (level)
{
case INFO:
if (log.isInfoEnabled())
log.info(buildLogOutput(event).toString());
break;
case WARN:
if (log.isWarnEnabled())
log.warn(buildLogOutput(event).toString());
break;
case ERROR:
if (log.isErrorEnabled())
log.error(buildLogOutput(event).toString());
break;
case DEBUG:
if (log.isDebugEnabled())
log.debug(buildLogOutput(event).toString());
break;
case TRACE:
if (log.isTraceEnabled())
log.trace(buildLogOutput(event).toString());
break;
default:
break;
}
}
private static StringBuilder buildLogOutput(Rewrite event)
{
StringBuilder builder = new StringBuilder();
builder.append("Rewrite rule evaluation for event [" + event + "]\n");
int i = 0;
for (Rule rule : event.getEvaluatedRules()) {
builder.append("\tRule " + i + ": " + rule);
if (rule instanceof Context)
{
builder.append(" defined at "
+ ((Context) rule).get(RuleMetadata.PROVIDER_LOCATION) + "\n");
}
i++;
}
return builder;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy