class EsperStatement implements EsperStatementOperations {

	public <T> List<T> concurrentSafeQuery(ParameterizedEsperRowMapper<T> rm) {
		LOG.info("Concurrent safe query being executed");

		if (epStatement.isStopped() || epStatement.isDestroyed()) {
			LOG
					.error("Concurrent safe query was attempted when the statement was stopped or destroyed");
			throw new EsperStatementInvalidStateException(
					"Attempted to execute a concurrent safe query when esper statement resource had state of "
							+ epStatement.getState());
		}

		SafeIterator<EventBean> safeIter = this.epStatement.safeIterator();

		List<T> objectList = new ArrayList<T>();
		try {
			for (; safeIter.hasNext();) {
				EventBean event = safeIter.next();
				objectList.add(rm.mapRow(event));
			}
		} finally {
			safeIter.close();
		}

		LOG.info("Concurrent safe query was completed");
		return objectList;
	}

	public  EsperStatement(String epl);
	public  EsperStatement(String id, String epl);

}