| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 */  | 
 | 
 | 
 | 
/*  | 
 | 
 * This source code is provided to illustrate the usage of a given feature  | 
 | 
 * or technique and has been deliberately simplified. Additional steps  | 
 | 
 * required for a production-quality application, such as security checks,  | 
 | 
 * input validation and proper error handling, might not be present in  | 
 | 
 * this sample code.  | 
 | 
 */  | 
 | 
 | 
 | 
 | 
 | 
package com.sun.tools.example.debug.bdi;  | 
 | 
 | 
 | 
public abstract class WatchpointSpec extends EventRequestSpec { | 
 | 
    final String fieldId;  | 
 | 
 | 
 | 
    WatchpointSpec(EventRequestSpecList specs,  | 
 | 
                   ReferenceTypeSpec refSpec, String fieldId) { | 
 | 
        super(specs, refSpec);  | 
 | 
        this.fieldId = fieldId;  | 
 | 
//        if (!isJavaIdentifier(fieldId)) { | 
 | 
//            throw new MalformedMemberNameException(fieldId);  | 
 | 
//        }  | 
 | 
    }  | 
 | 
 | 
 | 
    @Override  | 
 | 
    void notifySet(SpecListener listener, SpecEvent evt) { | 
 | 
        listener.watchpointSet(evt);  | 
 | 
    }  | 
 | 
 | 
 | 
    @Override  | 
 | 
    void notifyDeferred(SpecListener listener, SpecEvent evt) { | 
 | 
        listener.watchpointDeferred(evt);  | 
 | 
    }  | 
 | 
 | 
 | 
    @Override  | 
 | 
    void notifyResolved(SpecListener listener, SpecEvent evt) { | 
 | 
        listener.watchpointResolved(evt);  | 
 | 
    }  | 
 | 
 | 
 | 
    @Override  | 
 | 
    void notifyDeleted(SpecListener listener, SpecEvent evt) { | 
 | 
        listener.watchpointDeleted(evt);  | 
 | 
    }  | 
 | 
 | 
 | 
    @Override  | 
 | 
    void notifyError(SpecListener listener, SpecErrorEvent evt) { | 
 | 
        listener.watchpointError(evt);  | 
 | 
    }  | 
 | 
 | 
 | 
    @Override  | 
 | 
    public int hashCode() { | 
 | 
        return refSpec.hashCode() + fieldId.hashCode() +  | 
 | 
            getClass().hashCode();  | 
 | 
    }  | 
 | 
 | 
 | 
    @Override  | 
 | 
    public boolean equals(Object obj) { | 
 | 
        if (obj instanceof WatchpointSpec) { | 
 | 
            WatchpointSpec watchpoint = (WatchpointSpec)obj;  | 
 | 
 | 
 | 
            return fieldId.equals(watchpoint.fieldId) &&  | 
 | 
                   refSpec.equals(watchpoint.refSpec) &&  | 
 | 
                   getClass().equals(watchpoint.getClass());  | 
 | 
        } else { | 
 | 
            return false;  | 
 | 
        }  | 
 | 
    }  | 
 | 
 | 
 | 
    @Override  | 
 | 
    public String errorMessageFor(Exception e) { | 
 | 
        if (e instanceof NoSuchFieldException) { | 
 | 
            return ("No field " + fieldId + " in " + refSpec); | 
 | 
        } else { | 
 | 
            return super.errorMessageFor(e);  | 
 | 
        }  | 
 | 
    }  | 
 | 
}  |