I'll have to start with I've never created a custom component. I noticed the RichTextViewer utilizes this to get the value:
String value = ((BoundComponentInstance)component).getString();
That makes more sense to me. I would try that and if it doesn't work let me know and I can test doing something similar and let you know.