Skip to content

Commit

Permalink
Changes to support EAP.
Browse files Browse the repository at this point in the history
This is mainly adjusting to artifact name changes (wildfly ->
as-support), and preventing undertow classes from being loaded unless
needed.
  • Loading branch information
tobias committed Jul 20, 2015
1 parent 072e80d commit baa5e70
Show file tree
Hide file tree
Showing 13 changed files with 41 additions and 31 deletions.
3 changes: 3 additions & 0 deletions integration-tests/eap-resources/WEB-INF/jboss-web.xml
@@ -0,0 +1,3 @@
<jboss-web>
<enable-websockets>true</enable-websockets>
</jboss-web>
5 changes: 3 additions & 2 deletions integration-tests/project.clj
Expand Up @@ -19,7 +19,7 @@
[org.immutant/wildfly _]]
:aliases {"all" ^:replace ["do" "clean," "test"]}
:modules {:parent nil}
:profiles {:integ-base {:plugins [[lein-immutant "2.0.0"]]
:profiles {:integ-base {:plugins [[lein-immutant "2.0.1-SNAPSHOT"]]
:aliases {"test" ^:displace ["immutant" "test"]}
:modules {:parent ".."}}
:integ-messaging {:test-paths ["../messaging/test"]}
Expand Down Expand Up @@ -55,4 +55,5 @@
:main integs.cluster
:dependencies [[org.immutant/fntest _]
[clj-http _]]
:test-paths ^:replace ["test-clustering"]}})
:test-paths ^:replace ["test-clustering"]}
:eap {:immutant {:war {:resource-paths ["eap-resources"]}}}})
2 changes: 1 addition & 1 deletion messaging/src/immutant/messaging/hornetq.clj
Expand Up @@ -19,7 +19,7 @@
[immutant.util :as pu]
[immutant.messaging.internal :refer [broker]])
(:import [org.projectodd.wunderboss.messaging Destination Queue]
org.projectodd.wunderboss.messaging.jms2.JMSDestination
org.projectodd.wunderboss.messaging.jms.JMSDestination
org.projectodd.wunderboss.messaging.hornetq.HQMessaging
org.hornetq.api.core.SimpleString
org.hornetq.jms.server.JMSServerManager))
Expand Down
6 changes: 3 additions & 3 deletions project.clj
Expand Up @@ -91,11 +91,11 @@
clj-http "1.0.1"

;; org.projectodd.wunderboss "0.8.1"
org.projectodd.wunderboss "1.x.incremental.247"
;; org.projectodd.wunderboss "0.8.2-SNAPSHOT"
;; org.projectodd.wunderboss "1.x.incremental.247"
org.projectodd.wunderboss "0.8.2-SNAPSHOT"

org.immutant :version
fntest "2.0.3"}}
fntest "2.0.6-SNAPSHOT"}}

:release-tasks [["vcs" "assert-committed"]

Expand Down
1 change: 1 addition & 0 deletions web/project.clj
Expand Up @@ -20,6 +20,7 @@
:dependencies [[org.immutant/core _]
[potemkin _]
[org.projectodd.wunderboss/wunderboss-web _]
[org.projectodd.wunderboss/wunderboss-web-undertow _]
[ring/ring-core _]]

:profiles {:dev
Expand Down
14 changes: 8 additions & 6 deletions web/src/immutant/web.clj
Expand Up @@ -16,9 +16,8 @@
"Serve web requests using Ring handlers, Servlets, or Undertow HttpHandlers"
(:require [immutant.internal.options :refer [boolify opts->set set-valid-options!
validate-options extract-options]]
[immutant.internal.util :refer [kwargs-or-map->map]]
[immutant.web.internal.wunderboss :as wboss]
[immutant.web.undertow :as undertow])
[immutant.internal.util :refer [kwargs-or-map->map try-resolve]]
[immutant.web.internal.wunderboss :as wboss])
(:import [org.projectodd.wunderboss.web Web Web$CreateOption Web$RegisterOption]))

(defn run
Expand Down Expand Up @@ -83,11 +82,12 @@
invocations of `run` must be within the initialization function for
your application, i.e. your `-main`."
[handler & options]
(let [options (-> options
(let [undertow-options-maybe (try-resolve 'immutant.web.undertow/options-maybe)
options (-> options
kwargs-or-map->map
(validate-options run)
wboss/available-port
undertow/options-maybe
(cond-> undertow-options-maybe undertow-options-maybe)
(->> (merge wboss/create-defaults wboss/register-defaults)))]
(let [server (wboss/server options)]
(wboss/mount server handler options)
Expand All @@ -96,7 +96,9 @@
(set-valid-options! run (-> (opts->set Web$CreateOption Web$RegisterOption)
(conj :contexts)
(boolify :dispatch)
(clojure.set/union (-> #'undertow/options meta :valid-options))))
(clojure.set/union (-> (try-resolve 'immutant.web.undertow/options)
meta
:valid-options))))

(defn stop
"Stops a running handler.
Expand Down
2 changes: 1 addition & 1 deletion web/src/immutant/web/internal/servlet.clj
Expand Up @@ -18,7 +18,7 @@
[immutant.web.async :as async])
(:import [org.projectodd.wunderboss.web.async Channel
Channel$OnOpen Channel$OnClose Channel$OnError
ServletHttpChannel Util]
ServletHttpChannel WebsocketUtil]
[org.projectodd.wunderboss.web.async.websocket DelegatingJavaxEndpoint
JavaxWebsocketChannel WebSocketHelpyHelpertonFilter
WebsocketChannel WebsocketChannel$OnMessage]
Expand Down
15 changes: 10 additions & 5 deletions web/src/immutant/web/internal/undertow.clj
Expand Up @@ -24,11 +24,15 @@
[io.undertow.websockets.core CloseMessage WebSocketChannel]
[io.undertow.websockets.spi WebSocketHttpExchange]
[org.projectodd.wunderboss.web.async Channel
Channel$OnOpen Channel$OnClose Channel$OnError
Channel$OnOpen Channel$OnClose Channel$OnError]
[org.projectodd.wunderboss.web.async.websocket WebsocketChannel
WebsocketChannel$OnMessage]
[org.projectodd.wunderboss.web.undertow.async
UndertowHttpChannel]
[org.projectodd.wunderboss.web.async.websocket UndertowWebsocket
[org.projectodd.wunderboss.web.undertow.async.websocket
UndertowWebsocket
UndertowWebsocketChannel
WebsocketChannel WebsocketChannel$OnMessage WebsocketInitHandler]))
WebsocketInitHandler]))

(def ^{:tag SessionCookieConfig :private true} set-cookie-config!
(memoize
Expand Down Expand Up @@ -174,8 +178,9 @@
(when on-message
(on-message ch message))))))

(defn ^:internal create-websocket-init-handler [handler-fn downstream-handler request-map-fn]
(let [http-exchange-tl (ThreadLocal.)]
(defn ^:internal create-websocket-init-handler [handler-fn request-map-fn]
(let [http-exchange-tl (ThreadLocal.)
downstream-handler (create-http-handler handler-fn)]
(UndertowWebsocket/createHandler
http-exchange-tl
(reify WebsocketInitHandler
Expand Down
11 changes: 4 additions & 7 deletions web/src/immutant/web/internal/wunderboss.clj
Expand Up @@ -13,8 +13,7 @@
;; limitations under the License.

(ns ^:no-doc ^:internal immutant.web.internal.wunderboss
(:require [immutant.web.internal.undertow :refer [create-http-handler create-websocket-init-handler]]
[immutant.web.internal.servlet :refer [create-servlet websocket-servlet-filter-map]]
(:require [immutant.web.internal.servlet :refer [create-servlet websocket-servlet-filter-map]]
[immutant.web.internal.ring :refer [ring-request-map]]
[immutant.internal.options :refer [boolify extract-options opts->set
opts->defaults-map opts->map keywordize]]
Expand All @@ -23,7 +22,6 @@
[immutant.web.middleware :refer [wrap-development]]
[clojure.java.browse :refer [browse-url]])
(:import org.projectodd.wunderboss.WunderBoss
io.undertow.server.HttpHandler
[org.projectodd.wunderboss.web Web Web$CreateOption Web$RegisterOption]
javax.servlet.Servlet
[java.net ServerSocket InetSocketAddress]))
Expand Down Expand Up @@ -55,9 +53,8 @@
(var? handler))
(if (in-container?)
(create-servlet handler)
(create-websocket-init-handler
handler (create-http-handler handler)
ring-request-map))
((u/try-resolve 'immutant.web.internal.undertow/create-websocket-init-handler)
handler ring-request-map))
handler)
opts (extract-options
(if (in-container?)
Expand All @@ -68,7 +65,7 @@
(try
(.registerServlet server hdlr opts)
(catch IllegalStateException e
(if (re-find #"^UT010041" (.getMessage e))
(if (re-find #"after servlet init" (.getMessage e))
(throw (IllegalStateException.
"You can't call immutant.web/run outside of -main inside the container."
e))
Expand Down
6 changes: 3 additions & 3 deletions web/src/immutant/web/middleware.clj
Expand Up @@ -17,8 +17,7 @@
(:require [immutant.internal.util :refer [try-resolve]]
[immutant.util :refer [in-container?]]
[immutant.web.async :refer [as-channel]]
[immutant.web.internal.servlet :refer [wrap-servlet-session]]
[immutant.web.internal.undertow :refer [wrap-undertow-session]]))
[immutant.web.internal.servlet :refer [wrap-servlet-session]]))

(defn wrap-development
"Wraps stacktrace and reload middleware with the correct :dirs
Expand Down Expand Up @@ -75,7 +74,8 @@
(let [options (merge {:timeout (* 30 60)} options)]
(if (in-container?)
(wrap-servlet-session handler options)
(wrap-undertow-session handler options)))))
((try-resolve 'immutant.web.internal.undertow/wrap-undertow-session)
handler options)))))

(defn wrap-websocket
"Middleware to attach websocket callbacks to a Ring handler.
Expand Down
3 changes: 2 additions & 1 deletion web/test/immutant/web_test.clj
Expand Up @@ -25,7 +25,8 @@
[ring.middleware.resource :refer [wrap-resource]]
[ring.util.response :refer (charset)]
[clj-http.client :as http]
[immutant.web.undertow :as undertow])
[immutant.web.undertow :as undertow]
immutant.web.internal.undertow)
(:import clojure.lang.ExceptionInfo
java.net.ConnectException))

Expand Down
2 changes: 1 addition & 1 deletion wildfly/project.clj
Expand Up @@ -19,6 +19,6 @@

:dependencies [[org.immutant/core _]
[org.clojure/tools.nrepl "_"]
[org.projectodd.wunderboss/wunderboss-wildfly _]]
[org.projectodd.wunderboss/wunderboss-as-support _]]

:profiles {:base {:dependencies []}})
2 changes: 1 addition & 1 deletion wildfly/src/immutant/wildfly.clj
Expand Up @@ -22,7 +22,7 @@

(def ^:no-doc ^Class module-class-loader-class (memoize #(u/try-import 'org.jboss.modules.ModuleClassLoader)))

(def ^:no-doc in-cluster (delay (-> ^Class (u/try-import 'org.projectodd.wunderboss.wildfly.ClusterUtils)
(def ^:no-doc in-cluster (delay (-> ^Class (u/try-import 'org.projectodd.wunderboss.as.ClusterUtils)
(.getMethod "inCluster" nil)
(.invoke nil nil))))

Expand Down

0 comments on commit baa5e70

Please sign in to comment.