A Framework for Engineering Interactions in Java-based Component Systems