more clear breakpoint serialization format

This commit is contained in:
Egor.Ushakov
2014-02-27 20:54:49 +04:00
parent 3391b3bce4
commit c388cfadf6
4 changed files with 27 additions and 3 deletions
@@ -20,6 +20,8 @@ import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMExternalizable;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.ui.classFilter.ClassFilter;
import com.intellij.util.xmlb.annotations.Attribute;
import com.intellij.util.xmlb.annotations.Tag;
import com.intellij.util.xmlb.annotations.Transient;
import org.jdom.Element;
@@ -28,10 +30,13 @@ import org.jdom.Element;
* Date: Aug 29, 2003
* Time: 2:49:27 PM
*/
@Tag("instance-filter")
public class InstanceFilter implements JDOMExternalizable{
public static final InstanceFilter[] EMPTY_ARRAY = new InstanceFilter[0];
@Attribute("id")
public long ID = 0;
@Attribute("enabled")
public boolean ENABLED = true;
public InstanceFilter() {
@@ -47,6 +52,7 @@ public class InstanceFilter implements JDOMExternalizable{
return ID;
}
@Transient
public boolean isEnabled() {
return ENABLED;
}
@@ -17,6 +17,9 @@ package org.jetbrains.java.debugger.breakpoints.properties;
import com.intellij.debugger.InstanceFilter;
import com.intellij.ui.classFilter.ClassFilter;
import com.intellij.util.xmlb.annotations.AbstractCollection;
import com.intellij.util.xmlb.annotations.OptionTag;
import com.intellij.util.xmlb.annotations.Tag;
import com.intellij.xdebugger.breakpoints.XBreakpointProperties;
import org.jetbrains.annotations.Nullable;
@@ -24,16 +27,22 @@ import org.jetbrains.annotations.Nullable;
* @author egor
*/
public class JavaBreakpointProperties<T extends JavaBreakpointProperties> extends XBreakpointProperties<T> {
@OptionTag("count-filter-enabled")
public boolean COUNT_FILTER_ENABLED = false;
@OptionTag("count-filter")
public int COUNT_FILTER = 0;
@OptionTag("class-filters-enabled")
public boolean CLASS_FILTERS_ENABLED = false;
private ClassFilter[] myClassFilters;
private ClassFilter[] myClassExclusionFilters;
@OptionTag("instance-filters-enabled")
public boolean INSTANCE_FILTERS_ENABLED = false;
private InstanceFilter[] myInstanceFilters;
@Tag("instance-filters")
@AbstractCollection(surroundWithTag = false)
public InstanceFilter[] getInstanceFilters() {
return myInstanceFilters != null ? myInstanceFilters : InstanceFilter.EMPTY_ARRAY;
}
@@ -49,6 +58,8 @@ public class JavaBreakpointProperties<T extends JavaBreakpointProperties> extend
myInstanceFilters = filters;
}
@Tag("class-filters")
@AbstractCollection(surroundWithTag = false)
public final ClassFilter[] getClassFilters() {
return myClassFilters != null ? myClassFilters : ClassFilter.EMPTY_ARRAY;
}
@@ -57,6 +68,8 @@ public class JavaBreakpointProperties<T extends JavaBreakpointProperties> extend
myClassFilters = classFilters;
}
@Tag("class-exclusion-filters")
@AbstractCollection(surroundWithTag = false)
public ClassFilter[] getClassExclusionFilters() {
return myClassExclusionFilters != null ? myClassExclusionFilters : ClassFilter.EMPTY_ARRAY;
}
@@ -25,10 +25,10 @@ public class JavaFieldBreakpointProperties extends JavaBreakpointProperties<Java
public boolean WATCH_MODIFICATION = true;
public boolean WATCH_ACCESS = false;
@Attribute("field_name")
@Attribute("field")
public String myFieldName;
@Attribute("class_name")
@Attribute("class")
public String myClassName;
public JavaFieldBreakpointProperties(String fieldName, String className) {
@@ -21,17 +21,22 @@ import com.intellij.openapi.util.DefaultJDOMExternalizer;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMExternalizable;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.util.xmlb.annotations.Attribute;
import com.intellij.util.xmlb.annotations.Tag;
import com.intellij.util.xmlb.annotations.Transient;
import org.jdom.Element;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Tag("class-filter")
public class ClassFilter implements JDOMExternalizable, Cloneable{
private static final Logger LOG = Logger.getInstance("#com.intellij.ui.classFilter.ClassFilter");
public static final ClassFilter[] EMPTY_ARRAY = new ClassFilter[0];
@Attribute("pattern")
public String PATTERN = "";
@Attribute("enabled")
public boolean ENABLED = true;
private Matcher myMatcher; // to speedup matching