betfair / cougar

Cougar is a framework for making building network exposed service interfaces easy.
http://betfair.github.io/cougar
Apache License 2.0
27 stars 18 forks source link

Per interface protocol toggles #40

Open eswdd opened 10 years ago

eswdd commented 10 years ago

So that a particular interface's exposure on a protocol can be enabled/disabled by config params. Related to #32.

eswdd commented 10 years ago

Doco to go with the above required to describe:

         <property name="bindingDescriptors">
-            <util:set>
-                <bean class="com.betfair.cougar.blah.service.v1.rescript.BlahRescriptServiceBindingDescriptor"/>
-                <bean class="com.betfair.cougar.blah.service.v1.soap.BlahSoapServiceBindingDescriptor"/>
-                <bean class="com.betfair.cougar.blah.service.v1.jsonrpc.BlahJsonRpcServiceBindingDescriptor"/>
-            </util:set>
+            <bean class="com.betfair.cougar.util.configuration.Sets" factory-method="fromMap">
+                <constructor-arg>
+                    <util:map id="allEnvironmentServiceBindings">
+                        <entry key="RESCRIPT">
+                            <bean class="com.betfair.cougar.blah.service.v1.rescript.BlahRescriptServiceBindingDescriptor"/>
+                        </entry>
+                        <entry key="SOAP">
+                            <bean class="com.betfair.cougar.blah.service.v1.soap.BlahSoapServiceBindingDescriptor"/>
+                        </entry>
+                        <entry key="JSON-RPC">
+                            <bean class="com.betfair.cougar.blah.service.v1.jsonrpc.BlahJsonRpcServiceBindingDescriptor"/>
+                        </entry>
+                    </util:map>
+                </constructor-arg>
+                <constructor-arg>
+                    <bean class="com.betfair.cougar.util.configuration.Sets" factory-method="fromCommaSeparatedValues">
+                        <constructor-arg value="$BLAH-SERVICE{cougar.cluster.service.registered.binding.descriptors.csv}"/>
+                    </bean>
+                </constructor-arg>
+            </bean>
         </property> 

==== service-defaults.properties#2 (text) ====

@@ -1,2 +1,5 @@
+# Which binding descriptors to register for the blah service 
+(comma-separated list) 
+cougar.cluster.service.registered.binding.descriptors.csv=RESCRIPT,SOAP,JSON-RPC