package riddle; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringWriter; import java.util.Random; import java.util.logging.Logger; import javax.annotation.PostConstruct; import javax.ejb.Stateless; @Stateless public class RiddleBean { private static final Logger logger = Logger.getLogger(RiddleBean.class.getName()); //copied from /usr/share/games/fortunes/riddles private static final String RESOURCE_FILE = "/riddles.txt"; private static final String DELIM = "%"; private final Random rand = new Random(); private String[] riddleData; public Riddle getRiddle() { String data = riddleData[rand.nextInt(riddleData.length)]; return new Riddle(data); } @PostConstruct private void postConstruct() { InputStreamReader ir = null; try { ir = new InputStreamReader( getClass().getResourceAsStream(RESOURCE_FILE)); char[] buffer = new char[1024]; StringWriter sw = new StringWriter(); int count = -1; while (ir.read(buffer) != -1) { sw.write(buffer); } riddleData = sw.toString().split(DELIM); } catch (IOException e) { throw new IllegalStateException("Failed to retrieve riddle data.", e); } logger.info("Retrieved riddles from " + RESOURCE_FILE); } }