gateway abstract layer written in java