57
57
(str " in " in)))))
58
58
(str/join " \n " )))
59
59
60
- (defn- ensure-valid-desc [desc fx-type]
61
- (when-let [explain-data (s/explain-data :cljfx/desc (assoc desc :fx/type fx-type))]
62
- (throw (ex-info (str " Invalid cljfx description of " (type->string fx-type) " type:\n "
63
- (explain-str explain-data))
64
- explain-data))))
60
+ (defn- ensure-valid-desc [desc fx-type type->lifecycle]
61
+ (binding [*type->lifecycle* type->lifecycle]
62
+ (when-let [explain-data (s/explain-data :cljfx/desc (assoc desc :fx/type fx-type))]
63
+ (throw (ex-info (str " Invalid cljfx description of " (type->string fx-type) " type:\n "
64
+ (explain-str explain-data))
65
+ explain-data)))))
65
66
66
- (defn- wrap-lifecycle [fx-type lifecycle]
67
- (reify lifecycle/Lifecycle
68
- (create [_ desc opts]
69
- (let [stack (conj (::stack opts) fx-type)
70
- opts (assoc opts ::stack stack)]
71
- (try
72
- (ensure-valid-desc desc fx-type)
73
- (lifecycle/create lifecycle desc opts)
74
- (catch Exception ex (re-throw-with-stack ex stack)))))
75
- (advance [_ component desc opts]
76
- (let [stack (conj (::stack opts) fx-type)
77
- opts (assoc opts ::stack stack)]
78
- (try
79
- (ensure-valid-desc desc fx-type)
80
- (lifecycle/advance lifecycle component desc opts)
81
- (catch Exception ex (re-throw-with-stack ex stack)))))
82
- (delete [_ component opts]
83
- (let [stack (conj (::stack opts) fx-type)
84
- opts (assoc opts ::stack stack)]
85
- (try
86
- (lifecycle/delete lifecycle component opts)
87
- (catch Exception ex (re-throw-with-stack ex stack))))
88
- (lifecycle/delete lifecycle component opts))))
67
+ (defn- wrap-lifecycle [fx-type type->lifecycle]
68
+ (let [lifecycle (or (type->lifecycle fx-type) fx-type)]
69
+ (reify lifecycle/Lifecycle
70
+ (create [_ desc opts]
71
+ (let [stack (conj (::stack opts) fx-type)
72
+ opts (assoc opts ::stack stack)]
73
+ (try
74
+ (ensure-valid-desc desc fx-type type->lifecycle)
75
+ (lifecycle/create lifecycle desc opts)
76
+ (catch Exception ex (re-throw-with-stack ex stack)))))
77
+ (advance [_ component desc opts]
78
+ (let [stack (conj (::stack opts) fx-type)
79
+ opts (assoc opts ::stack stack)]
80
+ (try
81
+ (ensure-valid-desc desc fx-type type->lifecycle)
82
+ (lifecycle/advance lifecycle component desc opts)
83
+ (catch Exception ex (re-throw-with-stack ex stack)))))
84
+ (delete [_ component opts]
85
+ (let [stack (conj (::stack opts) fx-type)
86
+ opts (assoc opts ::stack stack)]
87
+ (try
88
+ (lifecycle/delete lifecycle component opts)
89
+ (catch Exception ex (re-throw-with-stack ex stack))))
90
+ (lifecycle/delete lifecycle component opts)))))
0 commit comments