package jetbrains.mps.debugger.java.runtime.state.customViewers;
/*Generated by MPS */
import jetbrains.mps.debugger.java.api.state.proxy.ValueWrapperFactory;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.debugger.java.api.evaluation.proxies.IValueProxy;
import jetbrains.mps.debugger.java.api.evaluation.proxies.IObjectValueProxy;
import com.sun.jdi.StringReference;
import jetbrains.mps.debugger.java.api.state.proxy.ValueWrapper;
import com.sun.jdi.ThreadReference;
import java.util.List;
import jetbrains.mps.debug.api.programState.IWatchable;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.ArrayList;
public class StringWrapperFactory extends ValueWrapperFactory {
@Override
public boolean canWrapValue(@NotNull IValueProxy value) {
return value instanceof IObjectValueProxy && value.getJDIValue() instanceof StringReference;
}
@Override
public String getWrappedType() {
return "Ljava/lang/String;";
}
@Override
public String getName() {
return "String";
}
public ValueWrapper createValueWrapper(IValueProxy value, ThreadReference threadReference) {
return new StringWrapperFactory.JavaStringValue(((IObjectValueProxy) value), threadReference);
}
private static class JavaStringValue extends ObjectWrapperFactory.JavaObjectValue {
public JavaStringValue(IObjectValueProxy value, ThreadReference threadReference) {
super(value, threadReference);
}
@Override
public boolean isStructure() {
return false;
}
@Override
public List<IWatchable> getSubvaluesImpl() {
return ListSequence.fromList(new ArrayList<IWatchable>());
}
}
}