TestRoots/watchdog

View on GitHub
intellij/src/nl/tudelft/watchdog/intellij/logic/breakpoint/BreakpointCreator.java

Summary

Maintainability
A
0 mins
Test Coverage
package nl.tudelft.watchdog.intellij.logic.breakpoint;

import com.intellij.xdebugger.XExpression;
import com.intellij.xdebugger.breakpoints.XBreakpoint;
import nl.tudelft.watchdog.core.logic.breakpoint.Breakpoint;
import org.jetbrains.java.debugger.breakpoints.properties.JavaBreakpointProperties;

/**
 * A factory for creating {@link Breakpoint}s from a supplied
 * {@link XBreakpoint}.
 */
public class BreakpointCreator {

    /**
     * Factory method that creates and returns a {@link Breakpoint} from a given
     * {@link XBreakpoint}.
     */
    public static Breakpoint createBreakpoint(XBreakpoint breakpoint) {
        Breakpoint result = new Breakpoint(breakpoint.hashCode(),
                BreakpointClassifier.classify(breakpoint));

        // Initialize enabled and SuspendPolicy fields.
        result.setEnabled(breakpoint.isEnabled());
        result.setSuspendPolicy(breakpoint.getSuspendPolicy().ordinal());

        // Initialize hit count field.
        result.setHitCount(-1);
        if (breakpoint.getProperties() instanceof JavaBreakpointProperties) {
            JavaBreakpointProperties properties = (JavaBreakpointProperties) breakpoint.getProperties();
            if (properties.isCOUNT_FILTER_ENABLED()) {
                result.setHitCount(properties.getCOUNT_FILTER());
            }
        }

        // Initialize condition fields if available.
        XExpression condition = breakpoint.getConditionExpression();
        if (condition != null) {
            result.setCondition(condition.getExpression());
            result.setConditionEnabled(true);
        }
        return result;
    }
}