I am doing some prototyping with the event processing framework Esper
(http://esper.codehaus.org/) and I'm running up against my ignorance
of clojure/java interop. I would like to create a java bean in clojure
that is visible to the Esper runtime; I found some sample Java code
that I clojurized as follows:

(ns cepdemo.core
  (:import [com.espertech.esper.client
            Configuration UpdateListener
            EPServiceProviderManager EPRuntime]))

(defrecord Tick [symbol price timestamp])

(defn generate-random-tick [runtime]
  (let [price (rand-int 10)
        timestamp (java.util.Date.)
        symbol "AAPL"
        tick (Tick. symbol price timestamp)]
    (print "Sending tick: " tick)
    (.sendEvent runtime tick)))

(defn cep-listener []
  (proxy [UpdateListener] []
    (update [new-data old-data]
            (print "event received: " new-data))))

(defn config []
  (let [cep-config (Configuration.)]
    (.addEventType cep-config "StockTick" (.getName Tick))
    (let [cep-sp (EPServiceProviderManager/getProvider "myCEPEngine"
cep-config)
          cep-rt (.getEPRuntime cep-sp)
          cep-admin (.getEPAdministrator cep-sp)
          cep-statement
          (.createEPL cep-admin
                      "select * from
StockTick(symbol='AAPL').win:length(2) having avg(price) > 6.0")]
      (.addListener cep-statement cep-listener)
      (doseq [i (range 10)]
        (generate-random-tick cep-rt)))))

The error I get is:
Property named 'symbol' is not valid in any stream [select * from
StockTick(symbol='AAPL').win:length(2) having avg(price) > 6.0]

from which I conclude that defrecord may not be the way to create a
java bean. Do I need to use gen-class?

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to