Advertisement
Guest User

Untitled

a guest
Dec 21st, 2016
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.29 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <mule xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:smtp="http://www.mulesoft.org/schema/mule/smtp" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
  4. xmlns:spring="http://www.springframework.org/schema/beans"
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
  7. http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
  8. http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
  9. http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd
  10. http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
  11. http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
  12. http://www.mulesoft.org/schema/mule/smtp http://www.mulesoft.org/schema/mule/smtp/current/mule-smtp.xsd">
  13. <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
  14. <smtp:gmail-connector name="Gmail" validateConnections="true" doc:name="Gmail"/>
  15. <db:mysql-config name="MySQL_Configuration" url="jdbc:mysql://localhost:3306/proj3?user=root&amp;password=hugo" doc:name="MySQL Configuration"/>
  16. <http:request-config name="HTTP_Request_Configuration" host="All Interfaces [0.0.0.0] (Default)" port="8081" doc:name="HTTP Request Configuration"/>
  17. <cxf:configuration name="CXF_Configuration" enableMuleSoapHeaders="true" initializeStaticBusInstance="true" doc:name="CXF Configuration"/>
  18. <flow name="Main_Flow">
  19. <http:listener config-ref="HTTP_Listener_Configuration" path="/soap" doc:name="HTTP"/>
  20. <cxf:jaxws-service serviceClass="webpackage.MyWebService" doc:name="CXF"/>
  21. <logger message="SOAP - invoked method: #[method.name]" level="INFO" doc:name="Logger"/>
  22. <flow-ref name="Choices-Sub_Flow" doc:name="Choices-Sub_Flow"/>
  23. </flow>
  24. <sub-flow name="Choices-Sub_Flow">
  25. <choice doc:name="method name">
  26. <when expression="#[method.name=='subscribe']">
  27. <flow-ref name="Make_Subscription" doc:name="Make_Subscription"/>
  28. </when>
  29. <when expression="#[method.name=='unsubscribe']">
  30. <flow-ref name="Remove_Subscription" doc:name="Remove_Subscription"/>
  31. </when>
  32. <when expression="#[method.name=='listSubscribers']">
  33. <flow-ref name="List-Sub_Flow" doc:name="List-Sub_Flow"/>
  34. </when>
  35. <otherwise>
  36. <set-payload value="#[payload] tem #[payload.length()] letras" doc:name="Set Payload"/>
  37. </otherwise>
  38. </choice>
  39. </sub-flow>
  40. <sub-flow name="Make_Subscription">
  41. <logger message="New subscription request from SOAP Client: PAYLOAD: #[payload]" level="INFO" doc:name="Logger"/>
  42. <set-variable variableName="email" value="hugofilipe95@hotmail.com" doc:name="Set Email"/>
  43. <set-variable variableName="address" value="coimbra" doc:name="Set Address"/>
  44. <set-variable variableName="course" value="1" doc:name="Set Course"/>
  45. <flow-ref name="create_subscription-Sub_Flow" doc:name="create_subscription-Sub_Flow"/>
  46. <set-payload value="#[flowVars.result]" doc:name="Set Payload"/>
  47. </sub-flow>
  48. <sub-flow name="create_subscription-Sub_Flow">
  49. <logger message="New request to subscription from #[flowVars.email] - Address: #[flowVars.address]; Course: #[flowVars.course]" level="INFO" doc:name="Logger"/>
  50. <flow-ref name="search_subscriptions-Sub_Flow" doc:name="search_subscriptions-Sub_Flow"/>
  51. <choice doc:name="Choice">
  52. <when expression="#[payload.size() == 0]">
  53. <logger level="INFO" doc:name="Logger"/>
  54. <flow-ref name="add_subscription_DB-Sub_Flow" doc:name="add_subscription_DB-Sub_Flow"/>
  55. <flow-ref name="send_confirmation_email-Sub_Flow" doc:name="send_confirmation_email-Sub_Flow"/>
  56. <set-variable variableName="result" value="success" doc:name="Variable"/>
  57. </when>
  58. <otherwise>
  59. <logger message="Already exist" level="INFO" doc:name="Logger"/>
  60. <set-variable variableName="result" value="error" doc:name="Variable"/>
  61. </otherwise>
  62. </choice>
  63. </sub-flow>
  64. <sub-flow name="add_subscription_DB-Sub_Flow">
  65. <set-variable variableName="token" value="#[java.util.UUID.randomUUID().toString()]" doc:name="Create Token"/>
  66. <db:insert config-ref="MySQL_Configuration" doc:name="Insert_subscription">
  67. <db:parameterized-query><![CDATA[INSERT INTO Subscricao(email, address, course, token)
  68. VALUES (#[flowVars.email], #[flowVars.address], #[flowVars.course], #[flowVars.token]);]]></db:parameterized-query>
  69. </db:insert>
  70. <logger message="Subscription for #[flowVars.email] added to DB" level="INFO" doc:name="Logger"/>
  71. </sub-flow>
  72. <sub-flow name="send_confirmation_email-Sub_Flow">
  73. <set-payload value="Confirm your subscription: http://localhost:8081/confirm_subscription?token=#[flowVars.token]" doc:name="Set Payload"/>
  74. <smtp:outbound-endpoint host="smtp.gmail.com" port="587" user="test.proj3.is%40gmail.com" password="proj2016is" connector-ref="Gmail" to="#[flowVars.email]" from="test.proj3.is@gmail.com" subject="Confirm account subscription" responseTimeout="10000" doc:name="SMTP"/>
  75. <db:update config-ref="MySQL_Configuration" doc:name="Update number of emails-daily">
  76. <db:parameterized-query><![CDATA[UPDATE Statistcs
  77. SET counter = counter + 1
  78. WHERE name = 'daily_mails';]]></db:parameterized-query>
  79. </db:update>
  80. <db:update config-ref="MySQL_Configuration" doc:name="Update number os emails-all">
  81. <db:parameterized-query><![CDATA[UPDATE Statistcs
  82. SET counter = counter + 1
  83. WHERE name = 'all_mails';]]></db:parameterized-query>
  84. </db:update>
  85. <logger message="Confirmation e-mail sent to #[flowVars.email]" level="INFO" doc:name="Logger"/>
  86. </sub-flow>
  87. <sub-flow name="search_subscriptions-Sub_Flow">
  88. <db:select config-ref="MySQL_Configuration" doc:name="Search">
  89. <db:parameterized-query><![CDATA[SELECT * FROM Subscricao s WHERE s.email=#[flowVars.email] AND s.course=#[flowVars.course] AND s.address=#[flowVars.address];]]></db:parameterized-query>
  90. </db:select>
  91. <logger message="Subscriptions found in DB: #[payload.size()]" level="INFO" doc:name="Logger"/>
  92. </sub-flow>
  93. <flow name="subscription-confirmation-Sub_Flow">
  94. <http:listener config-ref="HTTP_Listener_Configuration" path="/confirm_subscription/" doc:name="HTTP"/>
  95. <logger message="Logger-Token: #[message.inboundProperties.'http.query.params'.get('token')]" level="INFO" doc:name="Logger"/>
  96. <set-variable doc:name="Set token" value="#[message.inboundProperties.'http.query.params'.get('token')]" variableName="token "/>
  97. <logger level="INFO" doc:name="Logger" message="Searching for token '#[message.inboundProperties.'http.query.params'.get('token')]'"/>
  98. <db:select config-ref="MySQL_Configuration" doc:name="Confirm Subscription">
  99. <db:parameterized-query><![CDATA[SELECT * FROM Subscricao WHERE token=#[message.inboundProperties.'http.query.params'.get('token')];]]></db:parameterized-query>
  100. </db:select>
  101. <logger level="INFO" doc:name="Logger" message="Subscriptions found: #[payload.size()]"/>
  102. <choice doc:name="Subscription found">
  103. <when expression="#[payload.size() == 1]">
  104. <logger message="Subscription found. Updating token..." level="INFO" doc:name="Logger"/>
  105. <db:update config-ref="MySQL_Configuration" doc:name="Update token value">
  106. <db:parameterized-query><![CDATA[UPDATE Subscricao
  107. SET token='Confirmed'
  108. WHERE token=#[message.inboundProperties.'http.query.params'.get('token')];]]></db:parameterized-query>
  109. </db:update>
  110. <logger message="Token updated" level="INFO" doc:name="Logger"/>
  111. <set-variable variableName="result" value="success" doc:name="Variable"/>
  112. </when>
  113. <otherwise>
  114. <logger message="Subscription not found" level="INFO" doc:name="Logger"/>
  115. <set-variable variableName="result" value="error" doc:name="Variable"/>
  116. </otherwise>
  117. </choice>
  118. </flow>
  119. <sub-flow name="Remove_Subscription">
  120. <logger message="Unsubscription from SOAP" level="INFO" doc:name="Logger"/>
  121. <set-variable variableName="email" value="hugofilipe95@hotmail.com" doc:name="Email"/>
  122. <set-variable variableName="address" value="coimbra" doc:name="Address"/>
  123. <set-variable variableName="course" value="1" doc:name="Course"/>
  124. <flow-ref name="unsubscribe-Sub_Flow" doc:name="unsubscribe-Sub_Flow"/>
  125. <set-payload value="#[flowVars.result]" doc:name="Set Payload"/>
  126. </sub-flow>
  127. <sub-flow name="unsubscribe-Sub_Flow">
  128. <logger message="unsubscribing" level="INFO" doc:name="Logger"/>
  129. <db:select config-ref="MySQL_Configuration" doc:name="Fetch subscription">
  130. <db:parameterized-query><![CDATA[SELECT * FROM Subscricao
  131. WHERE email=#[flowVars.email] and course=#[flowVars.course] and token='Confirmed';]]></db:parameterized-query>
  132. </db:select>
  133. <choice doc:name="Subscription exists?">
  134. <when expression="#[payload.size() == 1]">
  135. <logger message="Subscription found" level="INFO" doc:name="Logger"/>
  136. <set-variable variableName="token" value="#[java.util.UUID.randomUUID().toString()]" doc:name="Create new token"/>
  137. <db:update config-ref="MySQL_Configuration" doc:name="Update Token DB">
  138. <db:parameterized-query><![CDATA[UPDATE Subscricao
  139. SET token=#[flowVars.token]
  140. WHERE email=#[flowVars.email] and course=#[flowVars.course] and address=#[flowVars.address];]]></db:parameterized-query>
  141. </db:update>
  142. <set-payload value="Confirm unsubscribe: http://localhost:8081/confirm_unsubscribe?token=#[flowVars.token]" doc:name="Set Payload"/>
  143. <smtp:outbound-endpoint host="smtp.gmail.com" port="587" user="test.proj3.is%40gmail.com" password="proj2016is" connector-ref="Gmail" to="#[flowVars.email]" subject="Confirm unsubscribe" responseTimeout="10000" doc:name="SMTP" from="test.proj3.is@gmail.com"/>
  144. <db:update config-ref="MySQL_Configuration" doc:name="Update daily-mails">
  145. <db:parameterized-query><![CDATA[UPDATE Statistcs
  146. SET counter = counter + 1
  147. WHERE name = 'daily_mails';]]></db:parameterized-query>
  148. </db:update>
  149. <db:update config-ref="MySQL_Configuration" doc:name="Update all-mails">
  150. <db:parameterized-query><![CDATA[UPDATE Statistcs
  151. SET counter = counter + 1
  152. WHERE name = 'all_mails';]]></db:parameterized-query>
  153. </db:update>
  154. <logger message="Unsubscription confirmation sent to e-mail" level="INFO" doc:name="Logger"/>
  155. <set-variable variableName="result" value="success" doc:name="Variable"/>
  156. </when>
  157. <otherwise>
  158. <logger message="Subscription not found" level="INFO" doc:name="Logger"/>
  159. <set-variable variableName="result" value="error" doc:name="Variable"/>
  160. </otherwise>
  161. </choice>
  162. </sub-flow>
  163. <flow name="unsubscribe_confirmation-Sub_Flow">
  164. <http:listener config-ref="HTTP_Listener_Configuration" path="/confirm_unsubscribe/" doc:name="HTTP"/>
  165. <logger message="Unsubscribe confirmation" level="INFO" doc:name="Logger"/>
  166. <set-variable variableName="token" value="#[message.inboundProperties.'http.query.params'.get('token')]" doc:name="Token"/>
  167. <logger message="Searching for token '#[message.inboundProperties.'http.query.params'.get('token')]'" level="INFO" doc:name="Logger"/>
  168. <db:select config-ref="MySQL_Configuration" doc:name="Database">
  169. <db:parameterized-query><![CDATA[SELECT * FROM Subscricao WHERE token=#[message.inboundProperties.'http.query.params'.get('token')];]]></db:parameterized-query>
  170. </db:select>
  171. <choice doc:name="Subscription found">
  172. <when expression="#[payload.size() == 1]">
  173. <logger message="Subscription found. Deleting." level="INFO" doc:name="Logger"/>
  174. <db:delete config-ref="MySQL_Configuration" doc:name="Delete subscription">
  175. <db:parameterized-query><![CDATA[DELETE FROM Subscricao WHERE token=#[flowVars.token];]]></db:parameterized-query>
  176. </db:delete>
  177. <set-variable variableName="result" value="success" doc:name="Variable"/>
  178. </when>
  179. <otherwise>
  180. <logger message="Subscription not found" level="INFO" doc:name="Logger"/>
  181. <set-variable variableName="result" value="error" doc:name="Variable"/>
  182. </otherwise>
  183. </choice>
  184. </flow>
  185. <sub-flow name="List-Sub_Flow">
  186. <logger message="List subscribers" level="INFO" doc:name="Logger"/>
  187. <set-variable variableName="course" value="1" doc:name="Variable"/>
  188. <db:select config-ref="MySQL_Configuration" doc:name="Database">
  189. <db:parameterized-query><![CDATA[SELECT * FROM Subscricao WHERE course=#[flowVars.course] and token ='Confirmed';]]></db:parameterized-query>
  190. </db:select>
  191. <choice doc:name="Course found">
  192. <when expression="#[payload.size() &gt; 0]">
  193. <logger level="INFO" doc:name="Logger" message="Course found!"/>
  194. <set-payload value="#[payload]" doc:name="Set Payload"/>
  195. </when>
  196. <otherwise>
  197. <logger level="INFO" doc:name="Logger" message="Course not found!"/>
  198. </otherwise>
  199. </choice>
  200. </sub-flow>
  201. </mule>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement