[jboss-cvs] JBossAS SVN: r81879 - in trunk: varia/src/main/org/jboss/services/binding and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sun Nov 30 23:43:06 EST 2008
Author: bstansberry at jboss.com
Date: 2008-11-30 23:43:06 -0500 (Sun, 30 Nov 2008)
New Revision: 81879
Added:
trunk/varia/src/main/org/jboss/services/binding/ServiceBindingMetadata.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingMetadataTestCase.java
Removed:
trunk/varia/src/main/org/jboss/services/binding/ManagedServiceBinding.java
Modified:
trunk/server/src/etc/conf/default/bootstrap/bindings.xml
trunk/varia/src/main/org/jboss/services/binding/ServiceBinding.java
trunk/varia/src/main/org/jboss/services/binding/ServiceBindingManager.java
trunk/varia/src/main/org/jboss/services/binding/ServiceBindingStore.java
trunk/varia/src/main/org/jboss/services/binding/impl/PojoServiceBindingStore.java
trunk/varia/src/main/org/jboss/services/binding/impl/ServiceBindingSet.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/DefaultServiceBindingValueSourceUnitTestCase.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/MockServiceBindingStore.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/PojoServiceBindingStoreUnitTestCase.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingManagerUnitTestCase.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingSetUnitTestCase.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingTestBase.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingUnitTestCase.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/SimpleServiceBindingValueSourceUnitTestCase.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/StringReplacementServiceBindingValueSourceUnitTestCase.java
trunk/varia/src/tests/org/jboss/test/services/binding/test/XSLTServiceBindingValueSourceUnitTestCase.java
Log:
[JBAS-6259] Separate the metadata object from the runtime object
Modified: trunk/server/src/etc/conf/default/bootstrap/bindings.xml
===================================================================
--- trunk/server/src/etc/conf/default/bootstrap/bindings.xml 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/server/src/etc/conf/default/bootstrap/bindings.xml 2008-12-01 04:43:06 UTC (rev 81879)
@@ -20,17 +20,9 @@
<parameter>
<bean name="ServiceBindingStore" class="org.jboss.services.binding.impl.PojoServiceBindingStore">
- <!-- Base bindings that are used to create bindings for each set
- by adding the set's port offset to the base binding's port value -->
- <property name="portOffsetBindings"><inject bean="PortOffsetBindings"/></property>
+ <!-- Base bindings that are used to create bindings for each set -->
+ <property name="standardBindings"><inject bean="StandardBindings"/></property>
- <!-- Base bindings that are used to create bindings for each set
- but without altering the base binding's port value.
- Typically used for multicast socket bindings, which do not
- lead to port conflicts if multiple sockets are opened on
- the same machine.-->
- <property name="fixedBindings"><null/></property>
-
<!-- The sets of bindings -->
<property name="serviceBindingSets">
<set>
@@ -102,160 +94,123 @@
</constructor>
</bean>
- <!-- Base bindings that ServiceBindingStore uses to create bindings for each set
- by adding the set's port offset to the base binding's port value -->
- <bean name="PortOffsetBindings" class="java.util.HashSet"
- elementClass="org.jboss.services.binding.ManagedServiceBinding">
+ <!-- Base binding metadata that ServiceBindingStore uses to create bindings for each set -->
+ <bean name="StandardBindings" class="java.util.HashSet"
+ elementClass="org.jboss.services.binding.ServiceBindingMetadata">
<constructor>
<parameter>
<set>
<!-- ********************* conf/jboss-service.xml ****************** -->
<!-- Naming Service -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=Naming</parameter>
- <parameter>Port</parameter>
- <parameter><null/></parameter>
- <parameter>1099</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=Naming</property>
+ <property name="bindingName">Port</property>
+ <property name="port">1099</property>
</bean>
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=Naming</parameter>
- <parameter>RmiPort</parameter>
- <parameter><null/></parameter>
- <parameter>1098</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=Naming</property>
+ <property name="bindingName">RmiPort</property>
+ <property name="port">1098</property>
</bean>
<!-- Remote classloading service -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=WebService</parameter>
- <parameter>8083</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=WebService</property>
+ <property name="port">8083</property>
</bean>
<!-- Remoting Connector -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>UnifiedInvokerConnector</parameter>
- <parameter>4446</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">UnifiedInvokerConnector</property>
+ <property name="port">4446</property>
</bean>
<!-- Used to create a multihome Remoting server. See -->
<!-- deploy/remoting-jboss-beans.xml for more details. -->
- <!--bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>UnifiedInvokerConnector:bindingHome1</parameter>
- <parameter>192.168.2.2</parameter>
- <parameter>7777</parameter>
- </constructor>
+ <!--bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">UnifiedInvokerConnector:bindingHome1</property>
+ <parameter>192.168.2.2</property>
+ <property name="port">7777</property>
</bean-->
<!-- Used to create a multihome Remoting server. See -->
<!-- deploy/remoting-jboss-beans.xml for more details. -->
- <!--bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>UnifiedInvokerConnector:bindingHome2</parameter>
- <parameter>10.11.12.238</parameter>
- <parameter>8888</parameter>
- </constructor>
+ <!--bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">UnifiedInvokerConnector:bindingHome2</property>
+ <parameter>10.11.12.238</property>
+ <property name="port">8888</property>
</bean-->
<!-- ********************* deploy/remoting-service.xml ****************** -->
<!-- RMI/JRMP invoker -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=invoker,type=jrmp</parameter>
- <parameter>4444</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=invoker,type=jrmp</property>
+ <property name="port">4444</property>
</bean>
<!-- Pooled invoker -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=invoker,type=pooled</parameter>
- <parameter>4445</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=invoker,type=pooled</property>
+ <property name="port">4445</property>
</bean>
<!-- ********************* deploy/cluster/hajndi-service.xml ****************** -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=HAJNDI</parameter>
- <parameter>Port</parameter>
- <parameter><null/></parameter>
- <parameter>1100</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=HAJNDI</property>
+ <property name="bindingName">Port</property>
+ <property name="port">1100</property>
</bean>
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=HAJNDI</parameter>
- <parameter>RmiPort</parameter>
- <parameter><null/></parameter>
- <parameter>1101</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=HAJNDI</property>
+ <property name="bindingName">RmiPort</property>
+ <property name="port">1101</property>
</bean>
<!-- ********************* deploy/cluster/ha-legacy-service.xml ****************** -->
<!-- HA RMI/JRMP invoker -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=invoker,type=jrmpha</parameter>
- <parameter>4447</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=invoker,type=jrmpha</property>
+ <property name="port">4447</property>
</bean>
<!-- HA Pooled invoker -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=invoker,type=pooledha</parameter>
- <parameter>4448</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=invoker,type=pooledha</property>
+ <property name="port">4448</property>
</bean>
<!-- ********************* deploy/iiop-service.xml ****************** -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=CorbaORB</parameter>
- <parameter>3528</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=CorbaORB</property>
+ <property name="port">3528</property>
</bean>
<!-- ********************* deploy/snmp-adaptor.sar **************** -->
<!-- Trap receiver that acts as an SNMP Manager -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss.jmx:name=SnmpAgent,service=trapd,type=logger</parameter>
- <parameter>1162</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss.jmx:name=SnmpAgent,service=trapd,type=logger</property>
+ <property name="port">1162</property>
</bean>
<!-- The SNMP adaptor MBean -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss.jmx:name=SnmpAgent,service=snmp,type=adaptor</parameter>
- <parameter>1161</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss.jmx:name=SnmpAgent,service=snmp,type=adaptor</property>
+ <property name="port">1161</property>
</bean>
<!-- ********************* deploy/jmx-remoting.sar **************** -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss.remoting:service=JMXConnectorServer,protocol=rmi</parameter>
- <parameter>1090</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss.remoting:service=JMXConnectorServer,protocol=rmi</property>
+ <property name="port">1090</property>
</bean>
<!-- ********************* deploy/ejb3-connectors-service.xml **************** -->
@@ -281,11 +236,9 @@
jboss:service=invoker,type=http,target=HAJNDI
jboss.ws:service=ServiceEndpointManager
-->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss.web:service=WebServer</parameter>
- <parameter>8080</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss.web:service=WebServer</property>
+ <property name="port">8080</property>
<!--
Inject a XSLT transform configuration (see below) that describes
@@ -298,56 +251,42 @@
<!-- For services like those listed above that need to know the
port of the HTTPS connector -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss.web:service=WebServer</parameter>
- <parameter>HttpsConnector</parameter>
- <parameter><null/></parameter>
- <parameter>8443</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss.web:service=WebServer</property>
+ <property name="bindingName">HttpsConnector</property>
+ <property name="port">8443</property>
</bean>
<!-- ********************* deploy/messaging/remoting-bisocket-service.xml ********************** -->
<!-- Standard JBM bisocket connector -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss.messaging:service=Connector,transport=bisocket</parameter>
- <parameter>4457</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss.messaging:service=Connector,transport=bisocket</property>
+ <property name="port">4457</property>
</bean>
<!-- ********************* deploy/transaction-jboss-beans.xml ********************** -->
<!-- JBossTS Recovery Manager -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>TransactionManager</parameter>
- <parameter>recoveryManager</parameter>
- <parameter><null/></parameter>
- <parameter>4712</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">TransactionManager</property>
+ <property name="bindingName">recoveryManager</property>
+ <property name="port">4712</property>
</bean>
<!-- JBossTS Transaction Status Manager -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>TransactionManager</parameter>
- <parameter>transactionStatusManager</parameter>
- <parameter><null/></parameter>
- <parameter>4713</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">TransactionManager</property>
+ <property name="bindingName">transactionStatusManager</property>
+ <property name="port">4713</property>
</bean>
<!-- JBossTS SocketProcessId. The address part is ignored,
it will always use localhost/127.0.0.1. -->
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>TransactionManager</parameter>
- <parameter>socketProcessId</parameter>
- <parameter><null/></parameter>
- <parameter>4714</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">TransactionManager</property>
+ <property name="bindingName">socketProcessId</property>
+ <property name="port">4714</property>
</bean>
@@ -355,11 +294,9 @@
<!-- Commented out as tcp/ip access to Hypersonic is not enabled by default -->
<!--
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss:service=Hypersonic</parameter>
- <parameter>1701</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss:service=Hypersonic</property>
+ <property name="port">1701</property>
</bean>
-->
@@ -370,11 +307,9 @@
configure the http invocation layer using the jboss.web:service=WebServer binding above
-->
<!--
- <bean class="org.jboss.services.binding.ManagedServiceBinding">
- <constructor>
- <parameter>jboss.mq:service=InvocationLayer,type=UIL2</parameter>
- <parameter>8093</parameter>
- </constructor>
+ <bean class="org.jboss.services.binding.ServiceBindingMetadata">
+ <property name="serviceName">jboss.mq:service=InvocationLayer,type=UIL2</property>
+ <property name="port">8093</property>
</bean>
-->
</set>
Deleted: trunk/varia/src/main/org/jboss/services/binding/ManagedServiceBinding.java
===================================================================
--- trunk/varia/src/main/org/jboss/services/binding/ManagedServiceBinding.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/main/org/jboss/services/binding/ManagedServiceBinding.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -1,141 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.services.binding;
-
-import java.net.UnknownHostException;
-
-import org.jboss.managed.api.annotation.ManagementComponent;
-import org.jboss.managed.api.annotation.ManagementObject;
-import org.jboss.managed.api.annotation.ManagementProperties;
-import org.jboss.managed.api.annotation.ManagementProperty;
-import org.jboss.managed.api.annotation.ViewUse;
-
-/**
- * {@link ServiceBinding} subclass that exposes an editing interface that
- * management tools can use.
- * @author Brian Stansberry
- */
- at ManagementObject(componentType=@ManagementComponent(type="MCBean", subtype="ManagedServiceBinding"),
- properties=ManagementProperties.EXPLICIT)
-public class ManagedServiceBinding extends ServiceBinding
-{
- // ------------------------------------------------------------ Constructors
-
- /**
- * Create a new ManagedServiceBinding.
- *
- * @param serviceName
- * @param port
- * @throws UnknownHostException
- */
- public ManagedServiceBinding(String serviceName, int port) throws UnknownHostException
- {
- super(serviceName, port);
- }
-
- /**
- * Create a new ManagedServiceBinding.
- *
- * @param serviceName
- * @param hostName
- * @param port
- * @throws UnknownHostException
- */
- public ManagedServiceBinding(String serviceName, String hostName, int port) throws UnknownHostException
- {
- super(serviceName, hostName, port);
- }
-
- /**
- * Create a new ManagedServiceBinding.
- *
- * @param serviceName
- * @param bindingName
- * @param hostName
- * @param port
- * @throws UnknownHostException
- */
- public ManagedServiceBinding(String serviceName, String bindingName, String hostName, int port)
- throws UnknownHostException
- {
- super(serviceName, bindingName, hostName, port);
- }
-
- /**
- * Copy constructor.
- *
- * @param source
- * @throws UnknownHostException
- * @throws NullPointerException if source is null
- */
- public ManagedServiceBinding(ServiceBinding source) throws UnknownHostException
- {
- this(source.getServiceName(), source.getBindingName(), source.getHostName(), source.getPort());
- setServiceBindingValueSource(source.getServiceBindingValueSource());
- setServiceBindingValueSourceConfig(source.getServiceBindingValueSourceConfig());
- }
-
- // ------------------------------------------------------------ Properties
-
- @Override
- @ManagementProperty(description="the host name or " +
- "string notation IP address to use for the binding",
- use={ViewUse.CONFIGURATION}) // overrides superclass annotation's use attribute
- public String getHostName()
- {
- return super.getHostName();
- }
-
- @Override
- @ManagementProperty(description="the port to use for the binding",
- use={ViewUse.CONFIGURATION}) // overrides superclass annotation's use attribute
- public int getPort()
- {
- return super.getPort();
- }
-
- /**
- * {@inheritDoc}
- *
- * Exposes the superclass method as public.
- */
- @Override
- public void setHostName(String hostName)
- {
- // TODO Auto-generated method stub
- super.setHostName(hostName);
- }
-
- /**
- * {@inheritDoc}
- *
- * Exposes the superclass method as public.
- */
- @Override
- public void setPort(int port)
- {
- // TODO Auto-generated method stub
- super.setPort(port);
- }
-
-}
Modified: trunk/varia/src/main/org/jboss/services/binding/ServiceBinding.java
===================================================================
--- trunk/varia/src/main/org/jboss/services/binding/ServiceBinding.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/main/org/jboss/services/binding/ServiceBinding.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -23,10 +23,9 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.security.AccessController;
+import java.security.PrivilegedExceptionAction;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-
import org.jboss.managed.api.annotation.ManagementComponent;
import org.jboss.managed.api.annotation.ManagementObject;
import org.jboss.managed.api.annotation.ManagementObjectID;
@@ -34,7 +33,8 @@
import org.jboss.managed.api.annotation.ManagementProperty;
import org.jboss.managed.api.annotation.ViewUse;
-/** A ServiceBinding is a {name,virtualHost,port,interfaceAddress}
+/**
+ * A ServiceBinding is a {name,virtualHost,port,interfaceAddress}
* quad specifying a named binding for a service.
*
* @author <a href="mailto:bitpushr at rochester.rr.com">Mike Finn</a>.
@@ -42,30 +42,9 @@
* @version $Revision$
*/
@ManagementObject(componentType=@ManagementComponent(type="MCBean", subtype="ServiceBinding"),
- properties=ManagementProperties.EXPLICIT)
-public class ServiceBinding
+ properties=ManagementProperties.EXPLICIT)
+public class ServiceBinding implements Comparable<ServiceBinding>
{
- /**
- * Checks if <code>serviceName</code> can be converted into an
- * ObjectName; if it can, converts it and returns its canonical form.
- *
- * @param serviceName the service name
- * @return the canonicalized form, or <code>serviceName</code> if it
- * cannot be converted into an ObjectName.
- */
- public static String canonicalizeServiceName(String serviceName)
- {
- // If the serviceName looks like an object name, canonicalize it
- try
- {
- ObjectName oname = new ObjectName(serviceName);
- return oname.getCanonicalName();
- }
- catch (MalformedObjectNameException e)
- {
- return serviceName;
- }
- }
// ----------------------------------------------------------------- Fields
@@ -87,109 +66,114 @@
construct the bindAddress value. A null value implies bind on any
interface.
*/
- private String hostName;
+ private final String hostName;
/** The port the service should listen on. A 0 value implies an
anonymous port.
*/
- private int port;
+ private final int port;
/** The interface on which the service should bind its listening port. A
null address implies bind on any interface.
*/
- private InetAddress bindAddress;
+ private final InetAddress bindAddress;
/** The ServiceBindingValueSource implementation class
*/
- private String serviceBindingValueSourceClassName;
+ private final String serviceBindingValueSourceClassName;
/** The ServiceBindingValueSource
*/
- private ServiceBindingValueSource serviceBindingValueSource;
+ private final ServiceBindingValueSource serviceBindingValueSource;
/** An aribtrary object used to configure the behavior of
the ServiceBindingValueSource. An example would be an XML Element.
*/
- private Object serviceBindingValueSourceConfig;
+ private final Object serviceBindingValueSourceConfig;
// ----------------------------------------------------------- Constructors
-
- /**
- * Creates a new instance of ServiceBinding with a host name indicating
- * the loopback interface.
- *
- * @param serviceName the name of the service to which this binding applies.
- * Cannot be <code>null</code>.
- * @param port The port the service should listen on. A 0 value implies an
- * ephemeral port.
- *
- * @throws UnknownHostException if no IP address for the loopback interface could be found
- */
- public ServiceBinding(String serviceName, int port)
- throws UnknownHostException
- {
- this(serviceName, null, port);
- }
-
- /**
- * Creates a new instance of ServiceBinding
- *
- * @param serviceName the name of the service to which this binding applies.
- * Cannot be <code>null</code>.
- * @param hostName The virtual host name. This is the interface name used to
- * construct the bindAddress value. A null value implies bind on the loopback interface.
- * @param port The port the service should listen on. A 0 value implies an
- * ephemeral port.
- *
- * @throws UnknownHostException if no IP address for the <code>hostName</code> could be found
- */
- public ServiceBinding(String serviceName, String hostName, int port)
- throws UnknownHostException
- {
- this(serviceName, null, hostName, port);
- }
-
- /**
- * Creates a new instance of ServiceBinding
- *
- * @param serviceName the name of the service to which this binding applies.
- * Cannot be <code>null</code>.
- * @param bindingName The name qualifier for the binding. A null or empty name
- * implies the default binding for a service.
- * @param hostName The virtual host name. This is the interface name used to
- * construct the bindAddress value. A null value implies bind on the loopback interface.
- * @param port The port the service should listen on. A 0 value implies an
- * ephemeral port.
- *
- * @throws UnknownHostException if no IP address for the <code>hostName</code> could be found
- */
- public ServiceBinding(String serviceName, String bindingName, String hostName, int port)
- throws UnknownHostException
- {
- if (serviceName == null)
- throw new IllegalArgumentException("serviceName is null");
-
- // If the serviceName looks like an object name, canonicalize it
- this.serviceName = canonicalizeServiceName(serviceName);
- this.bindingName = bindingName;
- this.fullyQualifiedName = (bindingName == null) ? serviceName : serviceName + ":" + bindingName;
- this.port = port;
- this.hostName = hostName;
- this.bindAddress = InetAddress.getByName(hostName);
- }
/**
- * Copy constructor.
+ * Build a ServiceBinding from metadata.
*
- * @param source
- * @throws UnknownHostException
- * @throws NullPointerException if source is null
+ * @param metadata the binding metadata. Cannot be <code>null</code>
+ * @param defaultHostName host name to use if the metadata's hostname is not
+ * {@link ServiceBindingMetadata#isFixedHostName() fixed}
+ * @param portOffset offset to apply to the metadata port value if it is not
+ * {@link ServiceBindingMetadata#isFixedPort() fixed}
+ *
+ * @throws UnknownHostException if no IP address for the <code>hostName</code> could be found
+ *
+ * @throws IllegalArgumentException if {@code metadata} is <code>null</code>ll
+ * @throws IllegalStateException if metadata's {@code serviceName} is <code>null</code>
+ * @throws RuntimeException if a {@code serviceBindingValueSourceClassName}
+ * is provided but there is a problem instantiating
+ * an instance of it via {@link Class#newInstance()}
*/
- public ServiceBinding(ServiceBinding source) throws UnknownHostException
+ public ServiceBinding(ServiceBindingMetadata metadata, String defaulHostName, int portOffset)
+ throws UnknownHostException
{
- this(source.getServiceName(), source.getBindingName(), source.getHostName(), source.getPort());
- setServiceBindingValueSource(source.getServiceBindingValueSource());
- setServiceBindingValueSourceConfig(source.getServiceBindingValueSourceConfig());
+ if (metadata == null)
+ {
+ throw new IllegalArgumentException("metadata is null");
+ }
+
+ if (metadata.getServiceName() == null)
+ {
+ throw new IllegalStateException("metadata's serviceName is null");
+ }
+
+ this.serviceName = metadata.getServiceName();
+ this.bindingName = metadata.getBindingName();
+ this.fullyQualifiedName = (bindingName == null) ? serviceName : serviceName + ":" + bindingName;
+ this.port = metadata.isFixedPort() ? metadata.getPort() : metadata.getPort() + portOffset;
+ this.hostName = metadata.isFixedHostName() ? metadata.getHostName() : defaulHostName;
+ this.bindAddress = InetAddress.getByName(this.hostName);
+
+ this.serviceBindingValueSourceConfig = metadata.getServiceBindingValueSourceConfig();
+
+ ServiceBindingValueSource valueSource = metadata.getServiceBindingValueSource();
+ if (valueSource == null)
+ {
+ this.serviceBindingValueSourceClassName = metadata.getServiceBindingValueSourceClassName();
+ if (this.serviceBindingValueSourceClassName != null)
+ {
+ // Try and instantiate the value source
+ try
+ {
+ this.serviceBindingValueSource = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<ServiceBindingValueSource>() {
+
+ public ServiceBindingValueSource run() throws Exception
+ {
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ Class<?> delegateClass = loader.loadClass(serviceBindingValueSourceClassName);
+ return (ServiceBindingValueSource) delegateClass.newInstance();
+ }
+ });
+ }
+ catch (RuntimeException e)
+ {
+ throw e;
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Failed creating ServiceBindingValueSource of type " +
+ serviceBindingValueSourceClassName, e);
+ }
+ }
+ else
+ {
+ // The standard case; just not configured at all
+ this.serviceBindingValueSource = null;
+ }
+ }
+ else
+ {
+ this.serviceBindingValueSource = valueSource;
+ this.serviceBindingValueSourceClassName = valueSource.getClass().getName();
+ }
+
}
// ------------------------------------------------------------- Properties
@@ -273,49 +257,12 @@
* reasonable defaults based on the format requested by the consumer.
*
* @return the ServiceBindingValueSource; may be <code>null</code>
- *
- * @throws ClassNotFoundException
- * @throws InstantiationException
- * @throws IllegalAccessException
*/
public synchronized ServiceBindingValueSource getServiceBindingValueSource()
{
- if (this.serviceBindingValueSource == null && this.serviceBindingValueSourceClassName != null)
- {
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- try
- {
- Class<?> delegateClass = loader.loadClass(serviceBindingValueSourceClassName);
- this.serviceBindingValueSource = (ServiceBindingValueSource) delegateClass.newInstance();
- }
- catch (RuntimeException e)
- {
- throw e;
- }
- catch (Exception e)
- {
- throw new RuntimeException("Failed creating ServiceBindingValueSource of type " +
- serviceBindingValueSourceClassName, e);
- }
- }
return this.serviceBindingValueSource;
}
- /**
- * Sets the object that can return this ServiceBinding's values in formats
- * usable by consumers.
- *
- * @param serviceBindingValueSource the ServiceBindingValueSource; may be <code>null</code>
- */
- public void setServiceBindingValueSource(ServiceBindingValueSource serviceBindingValueSource)
- {
- this.serviceBindingValueSource = serviceBindingValueSource;
- if (serviceBindingValueSource != null)
- {
- setServiceBindingValueSourceClassName(serviceBindingValueSource.getClass().getName());
- }
- }
-
/**
* Gets the fully qualified class name of the {@link #getServiceBindingValueSource() serviceBindingValueSource}.
*
@@ -327,16 +274,6 @@
}
/**
- * Sets the fully qualified class name of the {@link #getServiceBindingValueSource() serviceBindingValueSource}.
- *
- * @param serviceBindingValueSourceClassName the binding value source class, or <code>null</code>
- */
- public void setServiceBindingValueSourceClassName(String serviceBindingValueSourceClassName)
- {
- this.serviceBindingValueSourceClassName = serviceBindingValueSourceClassName;
- }
-
- /**
* Gets the configuration object the {@link #getServiceBindingValueSource() serviceBindingValueSource}
* should use.
*
@@ -346,52 +283,18 @@
{
return serviceBindingValueSourceConfig;
}
-
- /**
- * Sets the configuration object the {@link #getServiceBindingValueSource() serviceBindingValueSource}
- * should use.
- *
- * @param serviceBindingValueSourceConfig the configuration object, or <code>null</code>
- */
- public void setServiceBindingValueSourceConfig(Object serviceBindingValueSourceConfig)
- {
- this.serviceBindingValueSourceConfig = serviceBindingValueSourceConfig;
- }
- // ---------------------------------------------------------------- Public
-
- /**
- * Gets a <code>ServiceBinding</code> that matches this one except the
- * binding port has been adjusted by <code>offset</code>.
- *
- * @param offset amount to adjust the binding port
- */
- public ServiceBinding getOffsetBinding(int offset) throws UnknownHostException
- {
- return getOffsetBinding(offset, this.hostName);
+ // ------------------------------------------------------------- Comparable
+
+ public int compareTo(ServiceBinding o)
+ {
+ return getFullyQualifiedName().compareTo(o.getFullyQualifiedName());
}
-
- /**
- * Gets a <code>ServiceBinding</code> that matches this one except the
- * binding port has been adjusted by <code>offset</code> and the hostname
- * has been changed to defaultHostName if this object's hostName is null.
- *
- * @param offset amount to adjust the binding port
- */
- public ServiceBinding getOffsetBinding(int offset, String defaultHostName) throws UnknownHostException
- {
- String newHost = this.hostName == null ? defaultHostName : this.hostName;
- ServiceBinding result = new ServiceBinding(serviceName, bindingName, newHost, port + offset);
- result.setServiceBindingValueSourceClassName(serviceBindingValueSourceClassName);
- result.setServiceBindingValueSource(serviceBindingValueSource);
- result.setServiceBindingValueSourceConfig(serviceBindingValueSourceConfig);
- return result;
- }
// -------------------------------------------------------------- Overrides
/**
- * Equality is based on our ServiceConfig's serviceName and our bindingName.
+ * Equality is based on our serviceName and our bindingName.
*/
@Override
public boolean equals(Object obj)
@@ -410,7 +313,7 @@
}
/**
- * Hashcode is based on our ServiceConfig's serviceName and our bindingName.
+ * Hashcode is based on our serviceName and our bindingName.
*/
@Override
public int hashCode()
@@ -449,26 +352,6 @@
return sBuf.toString();
}
- // ------------------------------------------------------------ - Protected
-
- protected void setHostName(String hostName)
- {
- this.hostName = hostName;
- try
- {
- this.bindAddress = InetAddress.getByName(hostName);
- }
- catch (UnknownHostException e)
- {
- throw new RuntimeException("Unknown hostName " + hostName, e);
- }
- }
-
- protected void setPort(int port)
- {
- this.port = port;
- }
-
// ---------------------------------------------------------------- Private
private boolean safeEquals(Object a, Object b)
Modified: trunk/varia/src/main/org/jboss/services/binding/ServiceBindingManager.java
===================================================================
--- trunk/varia/src/main/org/jboss/services/binding/ServiceBindingManager.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/main/org/jboss/services/binding/ServiceBindingManager.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -246,13 +246,46 @@
public int getIntBinding(String serviceName, String bindingName,
String hostName, int basePort) throws UnknownHostException, DuplicateServiceException
{
+ return getIntBinding(serviceName, bindingName, hostName, basePort, false, hostName != null);
+ }
+
+ /**
+ * Same as {@link #getIntBinding(String, String)} but, if no matching
+ * service binding is found, creates a new one using the given
+ * <code>hostName</code> and <code>basePort</code>.
+ *
+ * @param serviceName value to match to {@link ServiceBinding#getServiceName()}
+ * to identify the appropriate binding. Cannot be <code>null</code>.
+ * @param bindingName value to match to {@link ServiceBinding#getBindingName()}
+ * to identify the appropriate binding. May be <code>null</code>.
+ * @param hostName Host name to use for new service binding if one is
+ * created.
+ * @param basePort base port to use for the binding; ServiceBindingStore
+ * may adjust this.
+ * @param fixedPort whether runtime @{link ServiceBinding}s created from this
+ * metadata can alter the port value based on the server
+ * on which the binding is running.
+ * @param fixedHostName whether runtime @{link ServiceBinding}s created from
+ * this metadata can alter the hostName value based on
+ * the server on which the binding is running.
+ *
+ * @return the binding value as an <code>int</code>
+ *
+ * @throws DuplicateServiceException in unlikely event of concurrent attempts
+ * to create same binding with different
+ * binding values
+ * @throws UnknownHostException if no IP address for the <code>hostName</code> could be found
+ */
+ public int getIntBinding(String serviceName, String bindingName,
+ String hostName, int basePort, boolean fixedPort, boolean fixedHostName) throws UnknownHostException, DuplicateServiceException
+ {
try
{
return getIntBinding(serviceName, bindingName);
}
catch (NoSuchBindingException e)
{
- createBindingFromDefaults(serviceName, bindingName, hostName, basePort, false);
+ createBindingFromDefaults(serviceName, bindingName, hostName, basePort, fixedPort, fixedHostName);
try
{
@@ -342,13 +375,47 @@
public InetAddress getInetAddressBinding(String serviceName, String bindingName,
String hostName, int basePort) throws UnknownHostException, DuplicateServiceException
{
+ return getInetAddressBinding(serviceName, bindingName, hostName, basePort, false, hostName != null);
+ }
+
+ /**
+ * Same as {@link #getInetAddressBinding(String, String)} but, if no matching
+ * service binding is found, creates a new one using the given
+ * <code>hostName</code> and <code>basePort</code>.
+ *
+ * @param serviceName value to match to {@link ServiceBinding#getServiceName()}
+ * to identify the appropriate binding. Cannot be <code>null</code>.
+ * @param bindingName value to match to {@link ServiceBinding#getBindingName()}
+ * to identify the appropriate binding. May be <code>null</code>.
+ * @param hostName Host name to use for new service binding if one is
+ * created.
+ * @param basePort base port to use for the binding; ServiceBindingStore
+ * may adjust this.
+ * @param fixedPort whether runtime @{link ServiceBinding}s created from this
+ * metadata can alter the port value based on the server
+ * on which the binding is running.
+ * @param fixedHostName whether runtime @{link ServiceBinding}s created from
+ * this metadata can alter the hostName value based on
+ * the server on which the binding is running.
+ *
+ * @return the binding value as an <code>InetAddress</code>
+ *
+ * @throws DuplicateServiceException in unlikely event of concurrent attempts
+ * to create same binding with different
+ * binding values
+ *
+ * @throws UnknownHostException if no IP address for the <code>hostName</code> could be found
+ */
+ public InetAddress getInetAddressBinding(String serviceName, String bindingName,
+ String hostName, int basePort, boolean fixedPort, boolean fixedHostName) throws UnknownHostException, DuplicateServiceException
+ {
try
{
return getInetAddressBinding(serviceName, bindingName);
}
catch (NoSuchBindingException e)
{
- createBindingFromDefaults(serviceName, bindingName, hostName, basePort, false);
+ createBindingFromDefaults(serviceName, bindingName, hostName, basePort, fixedPort, fixedHostName);
try
{
@@ -454,13 +521,51 @@
public String getStringBinding(String serviceName, String bindingName, String input,
String hostName, int basePort) throws UnknownHostException, DuplicateServiceException
{
+ return getStringBinding(serviceName, bindingName, input, hostName, basePort, false, hostName != null);
+ }
+
+ /**
+ * Same as {@link #getStringBinding(String, String, String)} but, if no matching
+ * service binding is found, creates a new one using the given
+ * <code>hostName</code> and <code>basePort</code>.
+ *
+ * @param serviceName value to match to {@link ServiceBinding#getServiceName()}
+ * to identify the appropriate binding. Cannot be <code>null</code>.
+ * @param bindingName value to match to {@link ServiceBinding#getBindingName()}
+ * to identify the appropriate binding. May be <code>null</code>.
+ * @param input string that should be used as a source for transformations
+ * (e.g. string replacement), or <code>null</code> if no
+ * transformation is needed
+ * @param hostName Host name to use for new service binding if one is
+ * created.
+ * @param basePort base port to use for the binding; ServiceBindingStore
+ * may adjust this.
+ * @param fixedPort whether runtime @{link ServiceBinding}s created from this
+ * metadata can alter the port value based on the server
+ * on which the binding is running.
+ * @param fixedHostName whether runtime @{link ServiceBinding}s created from
+ * this metadata can alter the hostName value based on
+ * the server on which the binding is running.
+ *
+ * @return the raw binding value, or a transformed string based on the raw
+ * binding value and <code>input</code>.
+ *
+ * @throws DuplicateServiceException in unlikely event of concurrent attempts
+ * to create same binding with different
+ * binding values
+ *
+ * @throws UnknownHostException if no IP address for the <code>hostName</code> could be found
+ */
+ public String getStringBinding(String serviceName, String bindingName, String input,
+ String hostName, int basePort, boolean fixedPort, boolean fixedHostName) throws UnknownHostException, DuplicateServiceException
+ {
try
{
return getStringBinding(serviceName, bindingName, input);
}
catch (NoSuchBindingException e)
{
- createBindingFromDefaults(serviceName, bindingName, hostName, basePort, false);
+ createBindingFromDefaults(serviceName, bindingName, hostName, basePort, fixedPort, fixedHostName);
try
{
@@ -559,13 +664,50 @@
public Element getElementBinding(String serviceName, String bindingName, Element input,
String hostName, int basePort) throws UnknownHostException, DuplicateServiceException
{
+ return getElementBinding(serviceName, bindingName, input, hostName, basePort, false, hostName != null);
+ }
+
+ /**
+ * Same as {@link #getElementBinding(String, String, Element)} but, if no matching
+ * service binding is found, creates a new one using the given
+ * <code>hostName</code> and <code>basePort</code>.
+ *
+ * @param serviceName value to match to {@link ServiceBinding#getServiceName()}
+ * to identify the appropriate binding. Cannot be <code>null</code>.
+ * @param bindingName value to match to {@link ServiceBinding#getBindingName()}
+ * to identify the appropriate binding. May be <code>null</code>.
+ * @param input string that should be used as a source for transformations
+ * (e.g. string replacement), or <code>null</code> if no
+ * transformation is needed
+ * @param hostName Host name to use for new service binding if one is
+ * created.
+ * @param basePort base port to use for the binding; ServiceBindingStore
+ * may adjust this.
+ * @param fixedPort whether runtime @{link ServiceBinding}s created from this
+ * metadata can alter the port value based on the server
+ * on which the binding is running.
+ * @param fixedHostName whether runtime @{link ServiceBinding}s created from
+ * this metadata can alter the hostName value based on
+ * the server on which the binding is running.
+ *
+ * @return transformed element based on the raw binding value(s) and <code>input</code>.
+ *
+ * @throws DuplicateServiceException in unlikely event of concurrent attempts
+ * to create same binding with different
+ * binding values
+ *
+ * @throws UnknownHostException if no IP address for the <code>hostName</code> could be found
+ */
+ public Element getElementBinding(String serviceName, String bindingName, Element input,
+ String hostName, int basePort, boolean fixedPort, boolean fixedHostName) throws UnknownHostException, DuplicateServiceException
+ {
try
{
return getElementBinding(serviceName, bindingName, input);
}
catch (NoSuchBindingException e)
{
- createBindingFromDefaults(serviceName, bindingName, hostName, basePort, false);
+ createBindingFromDefaults(serviceName, bindingName, hostName, basePort, fixedPort, fixedHostName);
try
{
@@ -668,13 +810,50 @@
public URL getURLBinding(String serviceName, String bindingName, URL input,
String hostName, int basePort) throws UnknownHostException, DuplicateServiceException
{
+ return getURLBinding(serviceName, bindingName, input, hostName, basePort, false, hostName != null);
+ }
+
+ /**
+ * Same as {@link #getURLBinding(String, String, URL)} but, if no matching
+ * service binding is found, creates a new one using the given
+ * <code>hostName</code> and <code>basePort</code>.
+ *
+ * @param serviceName value to match to {@link ServiceBinding#getServiceName()}
+ * to identify the appropriate binding. Cannot be <code>null</code>.
+ * @param bindingName value to match to {@link ServiceBinding#getBindingName()}
+ * to identify the appropriate binding. May be <code>null</code>.
+ * @param input string that should be used as a source for transformations
+ * (e.g. string replacement), or <code>null</code> if no
+ * transformation is needed
+ * @param hostName Host name to use for new service binding if one is
+ * created.
+ * @param basePort base port to use for the binding; ServiceBindingStore
+ * may adjust this.
+ * @param fixedPort whether runtime @{link ServiceBinding}s created from this
+ * metadata can alter the port value based on the server
+ * on which the binding is running.
+ * @param fixedHostName whether runtime @{link ServiceBinding}s created from
+ * this metadata can alter the hostName value based on
+ * the server on which the binding is running.
+ *
+ * @return URL pointing to the output of the transformation.
+ *
+ * @throws DuplicateServiceException in unlikely event of concurrent attempts
+ * to create same binding with different
+ * binding values
+ *
+ * @throws UnknownHostException if no IP address for the <code>hostName</code> could be found
+ */
+ public URL getURLBinding(String serviceName, String bindingName, URL input,
+ String hostName, int basePort, boolean fixedPort, boolean fixedHostName) throws UnknownHostException, DuplicateServiceException
+ {
try
{
return getURLBinding(serviceName, bindingName, input);
}
catch (NoSuchBindingException e)
{
- createBindingFromDefaults(serviceName, bindingName, hostName, basePort, false);
+ createBindingFromDefaults(serviceName, bindingName, hostName, basePort, fixedPort, fixedHostName);
try
{
@@ -786,13 +965,51 @@
public String getResourceBinding(String serviceName, String bindingName, String input,
String hostName, int basePort) throws UnknownHostException, DuplicateServiceException
{
+ return getResourceBinding(serviceName, bindingName, input, hostName, basePort, false, hostName != null);
+ }
+
+ /**
+ * Same as {@link #getResourceBinding(String, String, String)} but, if no matching
+ * service binding is found, creates a new one using the given
+ * <code>hostName</code> and <code>basePort</code>.
+ *
+ * @param serviceName value to match to {@link ServiceBinding#getServiceName()}
+ * to identify the appropriate binding. Cannot be <code>null</code>.
+ * @param bindingName value to match to {@link ServiceBinding#getBindingName()}
+ * to identify the appropriate binding. May be <code>null</code>.
+ * @param input string that should be used as a source for transformations
+ * (e.g. string replacement), or <code>null</code> if no
+ * transformation is needed
+ * @param hostName Host name to use for new service binding if one is
+ * created.
+ * @param basePort base port to use for the binding; ServiceBindingStore
+ * may adjust this.
+ * @param fixedPort whether runtime @{link ServiceBinding}s created from this
+ * metadata can alter the port value based on the server
+ * on which the binding is running.
+ * @param fixedHostName whether runtime @{link ServiceBinding}s created from
+ * this metadata can alter the hostName value based on
+ * the server on which the binding is running.
+ *
+ * @return a filesystem path pointing to the output of the transformation.
+ * May return <code>null</code>.
+ *
+ * @throws DuplicateServiceException in unlikely event of concurrent attempts
+ * to create same binding with different
+ * binding values
+ *
+ * @throws UnknownHostException if no IP address for the <code>hostName</code> could be found
+ */
+ public String getResourceBinding(String serviceName, String bindingName, String input,
+ String hostName, int basePort, boolean fixedPort, boolean fixedHostName) throws UnknownHostException, DuplicateServiceException
+ {
try
{
return getResourceBinding(serviceName, bindingName, input);
}
catch (NoSuchBindingException e)
{
- createBindingFromDefaults(serviceName, bindingName, hostName, basePort, false);
+ createBindingFromDefaults(serviceName, bindingName, hostName, basePort, fixedPort, fixedHostName);
try
{
@@ -857,12 +1074,10 @@
// ----------------------------------------------------------------- Private
private void createBindingFromDefaults(String serviceName, String bindingName,
- String hostName, int basePort, boolean fixedPort) throws UnknownHostException, DuplicateServiceException
+ String hostName, int basePort, boolean fixedPort, boolean fixedHostName) throws UnknownHostException, DuplicateServiceException
{
- String host = hostName == null ? store.getDefaultHostName(getServerName()) : hostName;
- int port = fixedPort ? basePort : basePort + store.getDefaultPortOffset(getServerName());
- ServiceBinding sb = new ServiceBinding(serviceName, bindingName, host, port);
- store.addServiceBinding(getServerName(), sb);
+ ServiceBindingMetadata md = new ServiceBindingMetadata(serviceName, bindingName, hostName, basePort, fixedPort, fixedHostName);
+ store.addServiceBinding(getServerName(), md);
}
}
Copied: trunk/varia/src/main/org/jboss/services/binding/ServiceBindingMetadata.java (from rev 81834, trunk/varia/src/main/org/jboss/services/binding/ManagedServiceBinding.java)
===================================================================
--- trunk/varia/src/main/org/jboss/services/binding/ServiceBindingMetadata.java (rev 0)
+++ trunk/varia/src/main/org/jboss/services/binding/ServiceBindingMetadata.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -0,0 +1,539 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.services.binding;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import org.jboss.managed.api.annotation.ManagementComponent;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementObjectID;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.managed.api.annotation.ManagementProperty;
+import org.jboss.managed.api.annotation.ViewUse;
+
+/**
+ * Metadata about a {@link ServiceBinding} that management tools can use. Does
+ * not represent the runtime binding information, but rather the metadata
+ * used to create the binding.
+ *
+ * @author Brian Stansberry
+ */
+ at ManagementObject(componentType=@ManagementComponent(type="MCBean", subtype="ServiceBindingMetadata"),
+ properties=ManagementProperties.EXPLICIT)
+public class ServiceBindingMetadata implements Comparable<ServiceBindingMetadata>
+{
+ /**
+ * Checks if <code>serviceName</code> can be converted into an
+ * ObjectName; if it can, converts it and returns its canonical form.
+ *
+ * @param serviceName the service name
+ * @return the canonicalized form, or <code>serviceName</code> if it
+ * cannot be converted into an ObjectName.
+ */
+ public static String canonicalizeServiceName(String serviceName)
+ {
+ // If the serviceName looks like an object name, canonicalize it
+ try
+ {
+ ObjectName oname = new ObjectName(serviceName);
+ return oname.getCanonicalName();
+ }
+ catch (MalformedObjectNameException e)
+ {
+ return serviceName;
+ }
+ }
+
+ // ----------------------------------------------------------------- Fields
+
+ /**
+ * The name of the service to which the binding applies.
+ */
+ private String serviceName;
+
+ /**
+ * The name of the binding. A null or empty name implies the default
+ * binding for a service.
+ */
+ private String bindingName;
+
+ /** The virtual host name. This is the interface name used to
+ construct the bindAddress value. A null value implies bind on any
+ interface.
+ */
+ private String hostName;
+
+ /** The port the service should listen on. A 0 value implies an
+ anonymous port.
+ */
+ private int port;
+
+ /** The ServiceBindingValueSource implementation class
+ */
+ private String serviceBindingValueSourceClassName;
+
+ /** The ServiceBindingValueSource
+ */
+ private ServiceBindingValueSource serviceBindingValueSource;
+
+ /** An aribtrary object used to configure the behavior of
+ the ServiceBindingValueSource. An example would be an XML Element.
+ */
+ private Object serviceBindingValueSourceConfig;
+
+ /**
+ * Whether runtime @{link ServiceBinding}s created from this metadata
+ * can alter the port value based on the server on which the binding
+ * is running.
+ */
+ private boolean fixedPort;
+
+ /**
+ * Whether runtime @{link ServiceBinding}s created from this metadata
+ * can alter the hostName value based on the server on which the binding
+ * is running.
+ */
+ private Boolean fixedHostName;
+
+ // ------------------------------------------------------------ Constructors
+
+ /**
+ * Create a new ServiceBindingMetadata.
+ */
+ public ServiceBindingMetadata() {}
+
+ /**
+ * Create a new ServiceBindingMetadata with given service name.
+ *
+ * @param serviceName the name of the service to which this binding applies.
+ * Cannot be <code>null</code>
+ *
+ * @throws IllegalArgumentException if {@code serviceName} is <code>null</code>
+ */
+ public ServiceBindingMetadata(String serviceName)
+ {
+ this(serviceName, null, null, 0, false, false);
+ }
+
+ /**
+ * Create a new ServiceBindingMetadata with given service and binding names.
+ *
+ * @param serviceName the name of the service to which this binding applies.
+ * Cannot be <code>null</code>
+ * @param bindingName qualifier identifying which particular binding within
+ * the service this is. May be <code>null</code>
+ *
+ * @throws IllegalArgumentException if {@code serviceName} is <code>null</code>
+ */
+ public ServiceBindingMetadata(String serviceName, String bindingName)
+ {
+ this(serviceName, bindingName, null, 0, false, false);
+ }
+
+ /**
+ * Create a new ServiceBindingMetadata with given property values and a
+ * non-fixed {@link #isFixedPort() port}. The
+ * {@link #isFixedHostName() hostname is fixed} if the provided {@code hostName}
+ * is not <code>null</code>.
+ *
+ * @param serviceName the name of the service to which this binding applies.
+ * Cannot be <code>null</code>
+ * @param bindingName qualifier identifying which particular binding within
+ * the service this is. May be <code>null</code>
+ * @param hostName the host name or string notation IP address of the
+ * interface to bind to
+ * @param port the port to bind to
+ *
+ * @throws IllegalArgumentException if {@code serviceName} is <code>null</code>
+ */
+ public ServiceBindingMetadata(String serviceName, String bindingName,
+ String hostName, int port)
+ {
+ this(serviceName, bindingName, hostName, port, false, hostName != null);
+ }
+
+ /**
+ * Create a new ServiceBindingMetadata with given property values.
+ *
+ * @param serviceName the name of the service to which this binding applies.
+ * Cannot be <code>null</code>
+ * @param bindingName qualifier identifying which particular binding within
+ * the service this is. May be <code>null</code>
+ * @param hostName the host name or string notation IP address of the
+ * interface to bind to
+ * @param port the port to bind to
+ * @param fixedPort whether runtime @{link ServiceBinding}s created from this
+ * metadata can alter the port value based on the server
+ * on which the binding is running.
+ * @param fixedHostName whether runtime @{link ServiceBinding}s created from
+ * this metadata can alter the hostName value based on
+ * the server on which the binding is running.
+ *
+ * @throws IllegalArgumentException if {@code serviceName} is <code>null</code>
+ */
+ public ServiceBindingMetadata(String serviceName, String bindingName,
+ String hostName, int port, boolean fixedPort, boolean fixedHostName)
+ {
+ setServiceName(serviceName);
+ setBindingName(bindingName);
+ setHostName(hostName);
+ setPort(port);
+ setFixedPort(fixedPort);
+ setFixedHostName(fixedHostName);
+ }
+
+ /**
+ * Create a new ServiceBindingMetadata from a runtime ServiceBinding. The
+ * resulting object has a fixed port and host name.
+ *
+ * @param binding the binding. Cannot be <code>null</code>
+ */
+ public ServiceBindingMetadata(ServiceBinding binding)
+ {
+ this(binding.getServiceName(), binding.getBindingName(),
+ binding.getHostName(), binding.getPort(), true, true);
+ setServiceBindingValueSource(binding.getServiceBindingValueSource());
+ if (this.serviceBindingValueSourceClassName == null)
+ {
+ setServiceBindingValueSourceClassName(binding.getServiceBindingValueSourceClassName());
+ }
+ setServiceBindingValueSourceConfig(binding.getServiceBindingValueSourceConfig());
+ }
+
+ // ------------------------------------------------------------ Properties
+
+ /**
+ * Gets the name of the service to which this binding applies.
+ *
+ * @return the name.
+ */
+ @ManagementProperty(description="the name of the service to which this binding applies")
+ public String getServiceName()
+ {
+ return serviceName;
+ }
+
+ /**
+ * Sets the name of the service to which this binding applies.
+ *
+ * @param serviceName the name. Cannot be <code>null</code>.
+ *
+ * @throws IllegalArgumentException if {@code serviceName} is <code>null</code>
+ */
+ public void setServiceName(String serviceName)
+ {
+ if (serviceName == null)
+ {
+ throw new IllegalArgumentException("serviceName is null");
+ }
+ this.serviceName = canonicalizeServiceName(serviceName);
+ }
+
+ /**
+ * Gets a qualifier identifying which particular binding within
+ * {@link #getServiceName() the service} this is.
+ *
+ * @return the name, or <code>null</code> if this is an unnamed default binding
+ * for the service.
+ */
+ @ManagementProperty(description="a qualifier identifying which particular " +
+ "binding within the service this is")
+ public String getBindingName()
+ {
+ return this.bindingName;
+ }
+
+ /**
+ * Sets a qualifier identifying which particular binding within
+ * {@link #getServiceName() the service} this is.
+ *
+ * @param bindingName the name, or <code>null</code> if this is an unnamed
+ * default binding for the service.
+ */
+ public void setBindingName(String bindingName)
+ {
+ this.bindingName = bindingName;
+ }
+
+ /**
+ * Gets the fully qualified binding name.
+ *
+ * @return the {@link #getServiceName() serviceName}:{@link #getBindingName() bindingName} or
+ * just the service name if the binding name is <code>null</code>.
+ *
+ * @throws IllegalStateException if {@link #getServiceName() serviceName} is <code>null</code>
+ */
+ @ManagementProperty(description="the fully qualified binding name")
+ @ManagementObjectID(type="ServiceBinding")
+ public String getFullyQualifiedName()
+ {
+ if (this.serviceName == null)
+ {
+ throw new IllegalStateException("Must set serviceName");
+ }
+ return (this.bindingName == null ? this.serviceName : (this.serviceName + ":" + this.bindingName));
+ }
+
+ /**
+ * Gets the host name or string notation IP address to use for the binding.
+ *
+ * @return the hostname or address. May be <code>null</code>
+ */
+ @ManagementProperty(description="the host name or " +
+ "string notation IP address to use for the binding",
+ use={ViewUse.CONFIGURATION}) // overrides superclass annotation's use attribute
+ public String getHostName()
+ {
+ return hostName;
+ }
+
+ /**
+ * Sets the host name or string notation IP address to use for the binding.
+ *
+ * @param hostName the hostname or address. May be <code>null</code>
+ */
+ public void setHostName(String hostName)
+ {
+ this.hostName = hostName;
+ // Assume that setting a host name means it's meant to be fixed
+ if (this.fixedHostName == null)
+ {
+ setFixedHostName(hostName == null);
+ }
+ }
+
+ @ManagementProperty(description="the port to use for the binding",
+ use={ViewUse.CONFIGURATION}) // overrides superclass annotation's use attribute
+ public int getPort()
+ {
+ return port;
+ }
+
+ /**
+ * Sets the port to use for the binding.
+ *
+ * @param port the port
+ */
+ public void setPort(int port)
+ {
+ this.port = port;
+ }
+
+ /**
+ * Gets the object that can return this ServiceBinding's values in formats
+ * usable by consumers. If unset (the norm), {@link ServiceBindingManager} will use
+ * reasonable defaults based on the format requested by the consumer.
+ *
+ * @return the ServiceBindingValueSource; may be <code>null</code>
+ */
+ public synchronized ServiceBindingValueSource getServiceBindingValueSource()
+ {
+ return this.serviceBindingValueSource;
+ }
+
+ /**
+ * Sets the object that can return this ServiceBinding's values in formats
+ * usable by consumers.
+ *
+ * @param serviceBindingValueSource the ServiceBindingValueSource; may be <code>null</code>
+ */
+ public void setServiceBindingValueSource(ServiceBindingValueSource serviceBindingValueSource)
+ {
+ this.serviceBindingValueSource = serviceBindingValueSource;
+ if (serviceBindingValueSource != null)
+ {
+ setServiceBindingValueSourceClassName(serviceBindingValueSource.getClass().getName());
+ }
+ }
+
+ /**
+ * Gets the fully qualified class name of the {@link #getServiceBindingValueSource() serviceBindingValueSource}.
+ *
+ * @return the binding value source class, or <code>null</code>
+ */
+ public String getServiceBindingValueSourceClassName()
+ {
+ return serviceBindingValueSourceClassName;
+ }
+
+ /**
+ * Sets the fully qualified class name of the {@link #getServiceBindingValueSource() serviceBindingValueSource}.
+ *
+ * @param serviceBindingValueSourceClassName the binding value source class, or <code>null</code>
+ */
+ public void setServiceBindingValueSourceClassName(String serviceBindingValueSourceClassName)
+ {
+ this.serviceBindingValueSourceClassName = serviceBindingValueSourceClassName;
+ }
+
+ /**
+ * Gets the configuration object the {@link #getServiceBindingValueSource() serviceBindingValueSource}
+ * should use.
+ *
+ * @return the configuration object, or <code>null</code>
+ */
+ public Object getServiceBindingValueSourceConfig()
+ {
+ return serviceBindingValueSourceConfig;
+ }
+
+ /**
+ * Sets the configuration object the {@link #getServiceBindingValueSource() serviceBindingValueSource}
+ * should use.
+ *
+ * @param serviceBindingValueSourceConfig the configuration object, or <code>null</code>
+ */
+ public void setServiceBindingValueSourceConfig(Object serviceBindingValueSourceConfig)
+ {
+ this.serviceBindingValueSourceConfig = serviceBindingValueSourceConfig;
+ }
+
+ /**
+ * Gets whether runtime @{link ServiceBinding}s created from this metadata
+ * can alter the port value based on the server on which the binding
+ * is running.
+ *
+ * @return <code>true</code> if the {@link #getPort()} value from this
+ * object must be respected; <code>false</code> if it can be
+ * altered.
+ */
+ public boolean isFixedPort()
+ {
+ return fixedPort;
+ }
+
+ /**
+ * Sets whether runtime @{link ServiceBinding}s created from this metadata
+ * can alter the port value based on the server on which the binding
+ * is running.
+ *
+ * param fixedPort <code>true</code> if the {@link #getPort()} value from this
+ * object must be respected; <code>false</code> if it can be
+ * altered.
+ */
+ public void setFixedPort(boolean fixedPort)
+ {
+ this.fixedPort = fixedPort;
+ }
+
+ /**
+ * Gets whether runtime @{link ServiceBinding}s created from this metadata
+ * can alter the hostName value based on the server on which the binding
+ * is running.
+ *
+ * @return <code>true</code> if the {@link #getHostName()} value from this
+ * object must be respected; <code>false</code> if it can be
+ * altered.
+ */
+ public boolean isFixedHostName()
+ {
+ return (this.fixedHostName == null ? this.hostName != null : this.fixedHostName.booleanValue());
+ }
+
+ /**
+ * Sets whether runtime @{link ServiceBinding}s created from this metadata
+ * can alter the hostName value based on the server on which the binding
+ * is running.
+ *
+ * param fixedHostName <code>true</code> if the {@link #getHostName()} value
+ * from this object must be respected; <code>false</code>
+ * if it can be altered.
+ */
+ public void setFixedHostName(boolean fixedHostName)
+ {
+ this.fixedHostName = Boolean.valueOf(fixedHostName);
+ }
+
+ // ------------------------------------------------------------- Comparable
+
+ public int compareTo(ServiceBindingMetadata other)
+ {
+ return getFullyQualifiedName().compareTo(other.getFullyQualifiedName());
+ }
+
+ // -------------------------------------------------------------- Overrides
+
+ /**
+ * Equality is based on our serviceName and our bindingName.
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj)
+ return true;
+
+ if (obj instanceof ServiceBindingMetadata)
+ {
+ ServiceBindingMetadata other = (ServiceBindingMetadata) obj;
+ return (safeEquals(this.getFullyQualifiedName(), other.getFullyQualifiedName()));
+ }
+
+ return false;
+ }
+
+ /**
+ * Hashcode is based on our serviceName and our bindingName.
+ */
+ @Override
+ public int hashCode()
+ {
+ int result = 19;
+ result += 29 * this.getFullyQualifiedName().hashCode();
+ return result;
+ }
+
+ /**
+ * Create string representation of the service descriptor
+ *
+ * @return String containing service descriptor properties
+ */
+ public String toString()
+ {
+ StringBuffer sBuf = new StringBuffer("ServiceBindingMetadata [serviceName=");
+ sBuf.append(this.serviceName);
+ sBuf.append(";bindingName=");
+
+ sBuf.append(this.getBindingName());
+ sBuf.append(";hostName=");
+ String host = getHostName();
+
+ if (hostName == null)
+ {
+ host = "<ANY>";
+ }
+ sBuf.append(host);
+ sBuf.append(";port=");
+ sBuf.append(this.getPort());
+ sBuf.append("]");
+ return sBuf.toString();
+ }
+
+ // ---------------------------------------------------------------- Private
+
+ private boolean safeEquals(Object a, Object b)
+ {
+ return (a == b || (a != null && a.equals(b)));
+ }
+
+}
Property changes on: trunk/varia/src/main/org/jboss/services/binding/ServiceBindingMetadata.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: trunk/varia/src/main/org/jboss/services/binding/ServiceBindingStore.java
===================================================================
--- trunk/varia/src/main/org/jboss/services/binding/ServiceBindingStore.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/main/org/jboss/services/binding/ServiceBindingStore.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -21,7 +21,7 @@
*/
package org.jboss.services.binding;
-import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.Set;
@@ -72,27 +72,27 @@
*
* @param serverName the name identifying the JBoss server instance in
* which the service is running.
- * @param serviceName the JMX ObjectName of the service
- * @param serviceConfig the configuration to add
+ * @param binding metadata for the binding to add
*
* @throws DuplicateServiceException thrown if a configuration for the
* <serverName, serviceName> pair already exists.
+ * @throws UnknownHostException if the host specified by the metadata is unknown
*
* @throws IllegalArgumentException if serverName is unknown to the store.
*/
- void addServiceBinding(String serverName, ServiceBinding binding)
- throws DuplicateServiceException;
+ void addServiceBinding(String serverName, ServiceBindingMetadata binding)
+ throws DuplicateServiceException, UnknownHostException;
/**
* Remove a ServiceBinding from the store for the given serverName.
*
* @param serverName the name identifying the JBoss server instance in
* which the service is running.
- * @param serviceBinding the binding
+ * @param binding the binding
*
* @throws IllegalArgumentException if serverName is unknown to the store.
*/
- void removeServiceBinding(String serverName, ServiceBinding binding);
+ void removeServiceBinding(String serverName, ServiceBindingMetadata binding);
/**
* Gets the offset from a base value that by default should be added to
Modified: trunk/varia/src/main/org/jboss/services/binding/impl/PojoServiceBindingStore.java
===================================================================
--- trunk/varia/src/main/org/jboss/services/binding/impl/PojoServiceBindingStore.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/main/org/jboss/services/binding/impl/PojoServiceBindingStore.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -24,7 +24,6 @@
import java.net.UnknownHostException;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -38,9 +37,9 @@
import org.jboss.managed.api.annotation.ManagementProperties;
import org.jboss.managed.api.annotation.ManagementProperty;
import org.jboss.services.binding.DuplicateServiceException;
-import org.jboss.services.binding.ManagedServiceBinding;
import org.jboss.services.binding.NoSuchBindingException;
import org.jboss.services.binding.ServiceBinding;
+import org.jboss.services.binding.ServiceBindingMetadata;
import org.jboss.services.binding.ServiceBindingStore;
/**
@@ -68,13 +67,9 @@
new ConcurrentHashMap<String, ServiceBindingSet>(16, (float) .75, 2);
/** Injected base bindings whose ports are incremented for each set */
- private final Map<ManagedServiceBinding, Object> portOffsetBindings =
- new ConcurrentHashMap<ManagedServiceBinding, Object>(16, (float) .75, 2);
+ private final Map<ServiceBindingMetadata, Object> standardBindings =
+ new ConcurrentHashMap<ServiceBindingMetadata, Object>(16, (float) .75, 2);
- /** Injected base bindings whose ports are fixed for each set */
- private final Map<ManagedServiceBinding, Object> fixedBindings =
- new ConcurrentHashMap<ManagedServiceBinding, Object>(16, (float) .75, 2);
-
private boolean started;
// ------------------------------------------------------------ Constructors
@@ -86,12 +81,13 @@
// ----------------------------------------------------- ServiceBindingStore
- public void addServiceBinding(String serverName, ServiceBinding binding)
- throws DuplicateServiceException
+ public void addServiceBinding(String serverName, ServiceBindingMetadata metadata)
+ throws DuplicateServiceException, UnknownHostException
{
validateServerName(serverName);
- ServiceBinding masked = maskManagedBinding(binding);
- ServiceBinding oldBinding = bindings.putIfAbsent(new ServiceBindingKey(serverName, binding), masked);
+ ServiceBindingSet bindingSet = bindingSets.get(serverName);
+ ServiceBinding binding = new ServiceBinding(metadata, bindingSet.getDefaultHostName(), bindingSet.getPortOffset());
+ ServiceBinding oldBinding = bindings.putIfAbsent(new ServiceBindingKey(serverName, metadata), binding);
if (oldBinding != null &&
(safeEquals(oldBinding.getHostName(), binding.getHostName()) == false
|| oldBinding.getPort() != binding.getPort()))
@@ -100,8 +96,7 @@
}
// For management purposes, treat this as an override
- ServiceBindingSet bindingSet = bindingSets.get(serverName);
- bindingSet.getOverrideBindings().add(getManagedServiceBinding(binding));
+ bindingSet.getOverrideBindings().add(metadata);
}
public ServiceBinding getServiceBinding(String serverName, String serviceName, String bindingName)
@@ -131,14 +126,14 @@
return result;
}
- public void removeServiceBinding(String serverName, ServiceBinding binding)
+ public void removeServiceBinding(String serverName, ServiceBindingMetadata metadata)
{
validateServerName(serverName);
- bindings.remove(new ServiceBindingKey(serverName, binding));
+ bindings.remove(new ServiceBindingKey(serverName, metadata));
// For management purposes, treat this as an override
ServiceBindingSet bindingSet = bindingSets.get(serverName);
- bindingSet.getOverrideBindings().remove(getManagedServiceBinding(binding));
+ bindingSet.getOverrideBindings().remove(metadata);
}
public String getDefaultHostName(String serverName)
@@ -157,56 +152,28 @@
/**
* Sets the base set of bindings that should be associated with each binding set,
- * but with that binding set's {@link ServiceBindingSet#getPortOffset() port offset}
- * applied to the port value.
+ * adjusted to conform to the binding set's defaultHostName and offset.
*
* @param bindings the set of base bindings. May be <code>null</code>
*
* @throws IllegalStateException if invoked after {@link #start()}
*/
- public void setPortOffsetBindings(Set<ManagedServiceBinding> bindings)
+ public void setStandardBindings(Set<ServiceBindingMetadata> bindings)
{
if (started)
{
throw new IllegalStateException("Cannot call setPortOffsetBindings() after start()");
}
- portOffsetBindings.clear();
+ standardBindings.clear();
if (bindings != null)
{
- for (ManagedServiceBinding binding : bindings)
+ for (ServiceBindingMetadata binding : bindings)
{
- portOffsetBindings.put(binding, VALUE);
+ standardBindings.put(binding, VALUE);
}
}
}
- /**
- * Sets the set of bindings that should be associated with each binding set,
- * but whose hostname/port/bindAddress should not vary. Typically used for
- * multicast socket bindings, which do not lead to port conflicts if multiple
- * sockets are opened on the same machine.
- *
- * @param bindings the set of fixed bindings. May be <code>null</code>
- *
- * @throws IllegalStateException if invoked after {@link #start()}
- */
- public void setFixedBindings(Set<ManagedServiceBinding> bindings)
- {
- if (started)
- {
- throw new IllegalStateException("Cannot call setFixedBindings() after start()");
- }
-
- fixedBindings.clear();
- if (bindings != null)
- {
- for (ManagedServiceBinding binding : bindings)
- {
- fixedBindings.put(binding, VALUE);
- }
- }
- }
-
public void setServiceBindingSets(Set<ServiceBindingSet> sets)
{
if (started)
@@ -239,52 +206,29 @@
// fixed and portOffset, we get DuplicateServiceException
for (ServiceBindingSet bindingSet : bindingSets.values())
{
- for (ServiceBinding binding : bindingSet.getOverrideBindings())
+ for (ServiceBindingMetadata binding : bindingSet.getOverrideBindings())
{
addServiceBinding(bindingSet.getName(), binding);
}
}
- // Establish the portOffset bindings
- for (ManagedServiceBinding fixed : portOffsetBindings.keySet())
+ // Establish the standard bindings
+ for (ServiceBindingMetadata metadata : standardBindings.keySet())
{
for (ServiceBindingSet bindingSet : bindingSets.values())
{
- ServiceBinding binding = fixed.getOffsetBinding(bindingSet.getPortOffset(),
- bindingSet.getDefaultHostName());
try
{
- addServiceBinding(bindingSet.getName(), binding);
+ addServiceBinding(bindingSet.getName(), metadata);
}
catch (DuplicateServiceException e)
{
- if (bindingSet.getOverrideBindings().contains(binding) == false)
+ if (bindingSet.getOverrideBindings().contains(metadata) == false)
{
throw e;
}
}
}
- }
-
- // Establish the fixed bindings
- for (ManagedServiceBinding fixed : fixedBindings.keySet())
- {
- for (ServiceBindingSet bindingSet : bindingSets.values())
- {
- // We use getOffsetBinding(0) as a form of copy constructor
- ServiceBinding binding = fixed.getOffsetBinding(0, bindingSet.getDefaultHostName());
- try
- {
- addServiceBinding(bindingSet.getName(), binding);
- }
- catch (DuplicateServiceException e)
- {
- if (bindingSet.getOverrideBindings().contains(binding) == false)
- {
- throw e;
- }
- }
- }
}
this.started = true;
@@ -306,28 +250,12 @@
* @return the set of base bindings
*/
@ManagementProperty(description="the base set of bindings that should be associated " +
- "with each binding set, but with that binding set's port offset applied " +
- "to the port value.")
- public Set<ManagedServiceBinding> getPortOffsetBindings()
+ "with each binding set")
+ public Set<ServiceBindingMetadata> getStandardBindings()
{
- return new HashSet<ManagedServiceBinding>(portOffsetBindings.keySet());
+ return new HashSet<ServiceBindingMetadata>(standardBindings.keySet());
}
- /**
- * Gets the set of bindings that should be associated with each binding set,
- * but whose hostname/port/bindAddress should not vary. Typically used for
- * multicast socket bindings, which do not lead to port conflicts if multiple
- * sockets are opened on the same machine.
- *
- * @return the set of fixed bindings
- */
- @ManagementProperty(description="the set of bindings that should be associated " +
- "with each binding set, whose hostname/port/bindAddress should not vary")
- public Set<ManagedServiceBinding> getFixedBindings()
- {
- return new HashSet<ManagedServiceBinding>(fixedBindings.keySet());
- }
-
@ManagementProperty(description="the named binding sets")
public Set<ServiceBindingSet> getBindingSets()
{
@@ -338,17 +266,14 @@
* Add a ServiceBinding to all binding sets in the store. For each binding
* set, a new ServiceBinding is added whose serviceName and bindingName
* properties match the passed binding. If <the given <code>binding</code>'s
- * <code>hostName</code> property is <code>null</code>, the new binding's
+ * <code>fixeHostName</code> property is <code>false</code>, the new binding's
* hostName matches the target set's {@link #getDefaultHostName(String) default host name}.
- * If <code>fixed</code> is <code>false</code>, the new binding's port is
- * derived by taking the port from the passed binding and incrementing it
- * by the target set's {@link #getDefaultPortOffset(String) default port offset}.
+ * If <code>binding</code>'s <code>fixedPort</code> property is <code>false</code>,
+ * the new binding's port is derived by taking the port from the passed binding
+ * and incrementing it by the target set's
+ * {@link #getDefaultPortOffset(String) default port offset}.
*
- * @param serviceName the JMX ObjectName of the service
- * @param serviceConfig the configuration to add
- * @param fixed <code>true</code> if the binding's port should remain fixed
- * when added to each binding set; <code>false</code> if it
- * should be offset by the binding set's port offset
+ * @param metadata metadata about the binding to add
*
* @throws DuplicateServiceException thrown if a configuration for the
* <serverName, serviceName> pair already exists.
@@ -356,42 +281,36 @@
@ManagementOperation(description="adds a service binding", impact=Impact.WriteOnly,
params={@ManagementParameter(name="binding"),
@ManagementParameter(name="fixed")})
- public void addServiceBinding(ManagedServiceBinding binding, boolean fixed) throws DuplicateServiceException
+ public void addServiceBinding(ServiceBindingMetadata metadata) throws DuplicateServiceException
{
// Add to the runtime objects
- for (String serverName : bindingSets.keySet())
+ for (ServiceBindingSet bindingSet : bindingSets.values())
{
- int port = fixed ? binding.getPort() : binding.getPort() + getDefaultPortOffset(serverName);
- String hostName = binding.getHostName();
- if (hostName == null)
- hostName = getDefaultHostName(serverName);
-
try
{
- addServiceBinding(serverName, new ServiceBinding(binding.getServiceName(), binding.getBindingName(), hostName, port));
+ addServiceBinding(bindingSet.getName(), metadata);
}
catch (UnknownHostException e)
{
+ String hostName = metadata.isFixedHostName() ? metadata.getHostName() : bindingSet.getDefaultHostName();
throw new IllegalStateException("Cannot convert " + hostName + " into an InetAddress");
}
}
// Add to the managed object map
- Map<ManagedServiceBinding, Object> map = fixed ? fixedBindings : portOffsetBindings;
- map.put(getManagedServiceBinding(binding), VALUE);
+ standardBindings.put(metadata, VALUE);
}
/**
- * Adds a ServiceBinding to all binding sets in the store. For each binding
- * set, a new ServiceBinding is added whose serviceName and bindingName
- * properties match the passed values. If <code>hostName</code>
- * is <code>null</code>, the new binding's hostName matches
- * the target set's {@link #getDefaultHostName(String) default host name}.
- * If <code>fixed</code> is false, the new binding's port is derived by
- * taking the given <code>port</code> and incrementing it by the target set's
- * {@link #getDefaultPortOffset(String) default port offset}.
+ * Creates a new {@link ServiceBindingMetadata} from the given params
+ * and calls {@link #addServiceBinding(ServiceBindingMetadata)}.
*
- * @param serviceName the JMX ObjectName of the service
+ * @param serviceName the name of the service. Cannot be <code>null</code>
+ * @param bindingName name qualifier for the binding within the service.
+ * May be <code>null</code>
+ * @param hostName hostname or IP address to which the binding should be
+ * bound. Use <code>null</code> to indicate the host name
+ * should be the default host name for each binding set
* @param serviceConfig the configuration to add
* @param fixed <code>true</code> if the binding's port should remain fixed
* when added to each binding set; <code>false</code> if it
@@ -405,35 +324,36 @@
@ManagementParameter(name="bindingName"),
@ManagementParameter(name="hostName"),
@ManagementParameter(name="port"),
- @ManagementParameter(name="fixed")})
- public void addServiceBinding(String serviceName, String bindingName, String hostName, int port, boolean fixed)
+ @ManagementParameter(name="fixedPort")})
+ public void addServiceBinding(String serviceName, String bindingName, String hostName, int port, boolean fixedPort)
throws DuplicateServiceException, UnknownHostException
{
- addServiceBinding(new ManagedServiceBinding(serviceName, bindingName, hostName, port), fixed);
+ ServiceBindingMetadata metadata = new ServiceBindingMetadata();
+ metadata.setServiceName(serviceName);
+ metadata.setBindingName(bindingName);
+ metadata.setHostName(hostName);
+ metadata.setPort(port);
+ metadata.setFixedPort(fixedPort);
+ addServiceBinding(metadata);
}
/**
* Remove a service configuration from all binding sets in the store.
*
- * @param serviceBinding the binding
+ * @param metadata the binding
*/
@ManagementOperation(description="removes a service binding", impact=Impact.WriteOnly,
params={@ManagementParameter(name="binding")})
- public void removeServiceBinding(ManagedServiceBinding binding)
+ public void removeServiceBinding(ServiceBindingMetadata metadata)
{
// Remove from runtime sets
for (String serverName : bindingSets.keySet())
{
- removeServiceBinding(serverName, binding);
+ removeServiceBinding(serverName, metadata);
}
- // Remove from managed sets
- ManagedServiceBinding msb = getManagedServiceBinding(binding);
- if (fixedBindings.remove(msb) == null)
- {
- portOffsetBindings.remove(msb);
- }
-
+ // Remove from managed set
+ standardBindings.remove(metadata);
}
/**
@@ -446,92 +366,12 @@
@ManagementParameter(name="bindingName")})
public void removeServiceBinding(String serviceName, String bindingName)
{
- try
- {
- ManagedServiceBinding binding = new ManagedServiceBinding(serviceName, bindingName, null, 0);
- removeServiceBinding(binding);
- }
- catch (UnknownHostException e)
- {
- // Do it by hand
- for (ServiceBindingSet bindingSet : bindingSets.values())
- {
- bindings.remove(new ServiceBindingKey(bindingSet.getName(), serviceName, bindingName));
-
- for (Iterator<ManagedServiceBinding> iter = bindingSet.getOverrideBindings().iterator(); iter.hasNext(); )
- {
- ServiceBinding b = iter.next();
- if (b.getServiceName().equals(serviceName) && safeEquals(b.getBindingName(), bindingName))
- {
- iter.remove();
- break;
- }
- }
- }
-
- boolean removed = false;
- for (Iterator<ManagedServiceBinding> iter = fixedBindings.keySet().iterator(); iter.hasNext(); )
- {
- ManagedServiceBinding b = iter.next();
- if (b.getServiceName().equals(serviceName) && safeEquals(b.getBindingName(), bindingName))
- {
- iter.remove();
- removed = true;
- break;
- }
- }
- if (!removed)
- {
- for (Iterator<ManagedServiceBinding> iter = portOffsetBindings.keySet().iterator(); iter.hasNext(); )
- {
- ManagedServiceBinding b = iter.next();
- if (b.getServiceName().equals(serviceName) && safeEquals(b.getBindingName(), bindingName))
- {
- iter.remove();
- break;
- }
- }
- }
- }
+ ServiceBindingMetadata metadata = new ServiceBindingMetadata(serviceName, bindingName);
+ removeServiceBinding(metadata);
}
// ------------------------------------------------------------------ Private
- private static ServiceBinding maskManagedBinding(ServiceBinding toMask)
- {
- ServiceBinding masked = toMask;
- if (toMask instanceof ManagedServiceBinding)
- {
- try
- {
- masked = new ServiceBinding(toMask);
- }
- catch (UnknownHostException e)
- {
- throw new IllegalStateException("Cannot create unmanaged binding from " + toMask, e);
- }
- }
- return masked;
- }
-
- private static ManagedServiceBinding getManagedServiceBinding(ServiceBinding source)
- {
- if (source instanceof ManagedServiceBinding)
- {
- return (ManagedServiceBinding) source;
- }
-
- try
- {
- ManagedServiceBinding managed = new ManagedServiceBinding(source);
- return managed;
- }
- catch (UnknownHostException e)
- {
- throw new IllegalStateException("Cannot create managed binding from " + source, e);
- }
- }
-
private static boolean safeEquals(Object a, Object b)
{
return (a == b || (a != null && a.equals(b)));
@@ -549,18 +389,40 @@
private final String serviceName;
private final String bindingName;
- private ServiceBindingKey(String serverName, ServiceBinding binding)
+ private ServiceBindingKey(String serverName, ServiceBindingMetadata binding)
{
- this(serverName, binding.getServiceName(), binding.getBindingName());
+ if (serverName == null)
+ {
+ throw new IllegalArgumentException("serverName is null");
+ }
+ if (binding == null)
+ {
+ throw new IllegalArgumentException("binding is null");
+ }
+ if (binding.getServiceName() == null)
+ {
+ throw new IllegalStateException("binding's serviceName is null");
+ }
+
+ this.serverName = serverName;
+ this.serviceName = binding.getServiceName();
+ this.bindingName = binding.getBindingName();
}
private ServiceBindingKey(String serverName, String serviceName, String bindingName)
{
- assert serverName != null : "serverName is null";
- assert serviceName != null : "serviceName is null";
+ if (serverName == null)
+ {
+ throw new IllegalArgumentException("serverName is null");
+ }
+
+ if (serviceName == null)
+ {
+ throw new IllegalArgumentException("serviceName is null");
+ }
this.serverName = serverName;
- this.serviceName = ServiceBinding.canonicalizeServiceName(serviceName);
+ this.serviceName = ServiceBindingMetadata.canonicalizeServiceName(serviceName);
this.bindingName = bindingName;
}
Modified: trunk/varia/src/main/org/jboss/services/binding/impl/ServiceBindingSet.java
===================================================================
--- trunk/varia/src/main/org/jboss/services/binding/impl/ServiceBindingSet.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/main/org/jboss/services/binding/impl/ServiceBindingSet.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -31,7 +31,7 @@
import org.jboss.managed.api.annotation.ManagementObjectID;
import org.jboss.managed.api.annotation.ManagementProperties;
import org.jboss.managed.api.annotation.ManagementProperty;
-import org.jboss.services.binding.ManagedServiceBinding;
+import org.jboss.services.binding.ServiceBindingMetadata;
/**
* Encapsulates information used to configure a unique set of bindings.
@@ -49,7 +49,7 @@
private final String bindingSetName;
private String defaultHostName;
private int portOffset;
- private final Set<ManagedServiceBinding> overrides;
+ private final Set<ServiceBindingMetadata> overrides;
// ------------------------------------------------------------ Constructors
@@ -64,7 +64,7 @@
/**
* Same as ServiceBindingSet(name, null, 0, overrides)
*/
- public ServiceBindingSet(String name, Set<ManagedServiceBinding> overrides)
+ public ServiceBindingSet(String name, Set<ServiceBindingMetadata> overrides)
{
this(name, null, 0, overrides);
}
@@ -98,14 +98,14 @@
*/
public ServiceBindingSet(String name, String defaultHostName,
int offset,
- Set<ManagedServiceBinding> overrides)
+ Set<ServiceBindingMetadata> overrides)
{
if (name == null)
{
throw new IllegalArgumentException("name is null");
}
- this.overrides = overrides == null ? new HashSet<ManagedServiceBinding>(0) : overrides;
+ this.overrides = overrides == null ? new HashSet<ServiceBindingMetadata>(0) : overrides;
this.bindingSetName = name;
this.defaultHostName = defaultHostName;
@@ -147,10 +147,10 @@
@ManagementProperty(description="bindings that either override or are additions " +
"to the base bindings configured in the ServiceBindingStore")
- public Set<ManagedServiceBinding> getOverrideBindings()
+ public Set<ServiceBindingMetadata> getOverrideBindings()
{
@SuppressWarnings("unchecked")
- Set<ManagedServiceBinding> result = overrides == null ? Collections.EMPTY_SET : overrides;
+ Set<ServiceBindingMetadata> result = overrides == null ? Collections.EMPTY_SET : overrides;
return result;
}
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/DefaultServiceBindingValueSourceUnitTestCase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/DefaultServiceBindingValueSourceUnitTestCase.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/DefaultServiceBindingValueSourceUnitTestCase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -22,6 +22,7 @@
package org.jboss.test.services.binding.test;
+import org.jboss.services.binding.ServiceBinding;
import org.jboss.services.binding.ServiceBindingManager;
import org.jboss.services.binding.ServiceBindingManager.BindingType;
import org.jboss.services.binding.impl.SimpleServiceBindingValueSourceImpl;
@@ -50,13 +51,15 @@
public void testInjectedSource() throws Exception
{
MockServiceBindingValueSource source = new MockServiceBindingValueSource("test");
- binding.setServiceBindingValueSource(source);
+ bindingMetadata.setServiceBindingValueSource(source);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
assertEquals(source, ServiceBindingManager.getServiceBindingValueSource(binding, BindingType.GENERIC));
}
public void testInjectedSourceClassName() throws Exception
{
- binding.setServiceBindingValueSourceClassName(MockServiceBindingValueSource.class.getName());
+ bindingMetadata.setServiceBindingValueSourceClassName(MockServiceBindingValueSource.class.getName());
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
assertTrue(ServiceBindingManager.getServiceBindingValueSource(binding, BindingType.GENERIC) instanceof MockServiceBindingValueSource);
}
@@ -92,19 +95,22 @@
public void testElementXSLT() throws Exception
{
- binding.setServiceBindingValueSourceConfig(new XSLTServiceBindingValueSourceConfig("test"));
+ bindingMetadata.setServiceBindingValueSourceConfig(new XSLTServiceBindingValueSourceConfig("test"));
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
assertTrue(ServiceBindingManager.getServiceBindingValueSource(binding, BindingType.ELEMENT) instanceof XSLTServiceBindingValueSourceImpl);
}
public void testResourceXSLT() throws Exception
{
- binding.setServiceBindingValueSourceConfig(new XSLTServiceBindingValueSourceConfig("test"));
+ bindingMetadata.setServiceBindingValueSourceConfig(new XSLTServiceBindingValueSourceConfig("test"));
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
assertTrue(ServiceBindingManager.getServiceBindingValueSource(binding, BindingType.RESOURCE) instanceof XSLTServiceBindingValueSourceImpl);
}
public void testURLXSLT() throws Exception
{
- binding.setServiceBindingValueSourceConfig(new XSLTServiceBindingValueSourceConfig("test"));
+ bindingMetadata.setServiceBindingValueSourceConfig(new XSLTServiceBindingValueSourceConfig("test"));
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
assertTrue(ServiceBindingManager.getServiceBindingValueSource(binding, BindingType.URL) instanceof XSLTServiceBindingValueSourceImpl);
}
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/MockServiceBindingStore.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/MockServiceBindingStore.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/MockServiceBindingStore.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -22,12 +22,14 @@
package org.jboss.test.services.binding.test;
+import java.net.UnknownHostException;
import java.util.Collections;
import java.util.Set;
import org.jboss.services.binding.DuplicateServiceException;
import org.jboss.services.binding.NoSuchBindingException;
import org.jboss.services.binding.ServiceBinding;
+import org.jboss.services.binding.ServiceBindingMetadata;
import org.jboss.services.binding.ServiceBindingStore;
/**
@@ -70,24 +72,20 @@
return Collections.singleton(binding);
}
- public void removeServiceBinding(String serverName, ServiceBinding binding)
+ public void removeServiceBinding(String serverName, ServiceBindingMetadata binding)
{
throw new UnsupportedOperationException("unimplemented");
}
- public void removeServiceBinding(String serverName, String serviceName, String bindingName)
+ public void addServiceBinding(String serverName, ServiceBindingMetadata binding)
+ throws DuplicateServiceException, UnknownHostException
{
- throw new UnsupportedOperationException("unimplemented");
- }
-
- public void addServiceBinding(String serverName, ServiceBinding binding) throws DuplicateServiceException
- {
if (this.binding != null)
throw new IllegalStateException("MockServiceBindingStore already has a binding");
if (this.serverName.equals(serverName) == false)
throw new IllegalArgumentException("Invalid serverName " + serverName);
- this.binding = binding;
+ this.binding = new ServiceBinding(binding, getDefaultHostName(serverName), getDefaultPortOffset(serverName));
}
public String getDefaultHostName(String serverName)
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/PojoServiceBindingStoreUnitTestCase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/PojoServiceBindingStoreUnitTestCase.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/PojoServiceBindingStoreUnitTestCase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -23,6 +23,7 @@
package org.jboss.test.services.binding.test;
import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@@ -30,7 +31,7 @@
import junit.framework.TestCase;
import org.jboss.services.binding.DuplicateServiceException;
-import org.jboss.services.binding.ManagedServiceBinding;
+import org.jboss.services.binding.ServiceBindingMetadata;
import org.jboss.services.binding.NoSuchBindingException;
import org.jboss.services.binding.ServiceBinding;
import org.jboss.services.binding.impl.PojoServiceBindingStore;
@@ -49,12 +50,16 @@
private static final String C = "C";
private static final String D = "D";
- private static ManagedServiceBinding AA;
- private static ManagedServiceBinding AB;
- private static ManagedServiceBinding Anull;
- private static ManagedServiceBinding BA;
+ private static ServiceBindingMetadata AA;
+ private static ServiceBindingMetadata AB;
+ private static ServiceBindingMetadata Anull;
+ private static ServiceBindingMetadata BA;
- private Set<ManagedServiceBinding> bindings = new HashSet<ManagedServiceBinding>();
+ private static ServiceBindingSet SET_A;
+ private static ServiceBindingSet SET_B;
+ private static ServiceBindingSet SET_C;
+
+ private Set<ServiceBindingMetadata> bindings = new HashSet<ServiceBindingMetadata>();
private Set<ServiceBindingSet> bindingSets = new HashSet<ServiceBindingSet>();
/**
@@ -72,39 +77,51 @@
{
super.setUp();
- AA = new ManagedServiceBinding(A, A, "localhost", 1);
+ AA = new ServiceBindingMetadata(A, A, null, 1, false, false);
bindings.add(AA);
- AB = new ManagedServiceBinding(A, B, "localhost", 1);
+ AB = new ServiceBindingMetadata(A, B, null, 1, false, false);
bindings.add(AB);
- Anull = new ManagedServiceBinding(A, null, "localhost", 1);
+ Anull = new ServiceBindingMetadata(A, null, null, 1, false, false);
bindings.add(Anull);
// This one doesn't go in the standard bindings set
- BA = new ManagedServiceBinding(B, A, "localhost", 1);
+ BA = new ServiceBindingMetadata(B, A, null, 1, false, false);
- bindingSets.add(new ServiceBindingSet(A));
- bindingSets.add(new ServiceBindingSet(B));
- bindingSets.add(new ServiceBindingSet(C));
+ SET_A = new ServiceBindingSet(A);
+ SET_A.setDefaultHostName("localhost");
+ bindingSets.add(SET_A);
+ SET_B = new ServiceBindingSet(B);
+ SET_B.setDefaultHostName("localhost");
+ bindingSets.add(SET_B);
+ SET_C = new ServiceBindingSet(C);
+ SET_C.setDefaultHostName("localhost");
+ bindingSets.add(SET_C);
}
+ private static ServiceBinding getServiceBinding(ServiceBindingMetadata md, ServiceBindingSet set) throws UnknownHostException
+ {
+ return new ServiceBinding(md, set.getDefaultHostName(), set.getPortOffset());
+ }
+
+
public void testGetServiceBinding() throws Exception
{
PojoServiceBindingStore store = new PojoServiceBindingStore();
store.setServiceBindingSets(bindingSets);
- store.setPortOffsetBindings(bindings);
+ store.setStandardBindings(bindings);
store.start();
- assertEquals(AA, store.getServiceBinding(A, A, A));
- assertEquals(AA, store.getServiceBinding(B, A, A));
- assertEquals(AA, store.getServiceBinding(C, A, A));
+ assertEquals(getServiceBinding(AA, SET_A), store.getServiceBinding(A, A, A));
+ assertEquals(getServiceBinding(AA, SET_B), store.getServiceBinding(B, A, A));
+ assertEquals(getServiceBinding(AA, SET_C), store.getServiceBinding(C, A, A));
- assertEquals(AB, store.getServiceBinding(A, A, B));
- assertEquals(AB, store.getServiceBinding(B, A, B));
- assertEquals(AB, store.getServiceBinding(C, A, B));
+ assertEquals(getServiceBinding(AB, SET_A), store.getServiceBinding(A, A, B));
+ assertEquals(getServiceBinding(AB, SET_B), store.getServiceBinding(B, A, B));
+ assertEquals(getServiceBinding(AB, SET_C), store.getServiceBinding(C, A, B));
- assertEquals(Anull, store.getServiceBinding(A, A, null));
- assertEquals(Anull, store.getServiceBinding(B, A, null));
- assertEquals(Anull, store.getServiceBinding(C, A, null));
+ assertEquals(getServiceBinding(Anull, SET_A), store.getServiceBinding(A, A, null));
+ assertEquals(getServiceBinding(Anull, SET_B), store.getServiceBinding(B, A, null));
+ assertEquals(getServiceBinding(Anull, SET_C), store.getServiceBinding(C, A, null));
try
{
@@ -132,19 +149,19 @@
{
PojoServiceBindingStore store = new PojoServiceBindingStore();
store.setServiceBindingSets(bindingSets);
- store.setPortOffsetBindings(bindings);
+ store.setStandardBindings(bindings);
store.start();
- ServiceBinding new1 = new ServiceBinding(B, A, "localhost", 1);
+ ServiceBindingMetadata new1 = new ServiceBindingMetadata(B, A, "localhost", 1, false, false);
store.addServiceBinding(A, new1);
store.addServiceBinding(B, new1);
store.addServiceBinding(C, new1);
- assertEquals(new1, store.getServiceBinding(A, B, A));
- assertEquals(new1, store.getServiceBinding(B, B, A));
- assertEquals(new1, store.getServiceBinding(C, B, A));
+ assertEquals(getServiceBinding(new1, SET_A), store.getServiceBinding(A, B, A));
+ assertEquals(getServiceBinding(new1, SET_B), store.getServiceBinding(B, B, A));
+ assertEquals(getServiceBinding(new1, SET_C), store.getServiceBinding(C, B, A));
- ServiceBinding new2 = new ServiceBinding(B, A, "localhost", 2);
+ ServiceBindingMetadata new2 = new ServiceBindingMetadata(B, A, "localhost", 2, false, false);
try
{
store.addServiceBinding(D, new2);
@@ -164,7 +181,7 @@
{
PojoServiceBindingStore store = new PojoServiceBindingStore();
store.setServiceBindingSets(bindingSets);
- store.setPortOffsetBindings(bindings);
+ store.setStandardBindings(bindings);
store.start();
store.removeServiceBinding(A, AA);
@@ -203,7 +220,7 @@
}
catch (NoSuchBindingException e) {}
- ServiceBinding new1 = new ServiceBinding(B, A, "localhost", 1);
+ ServiceBindingMetadata new1 = new ServiceBindingMetadata(B, A, "localhost", 1, false, false);
store.removeServiceBinding(A, new1);
store.removeServiceBinding(A, BA);
}
@@ -211,66 +228,69 @@
public void testAddServiceBindingToAll() throws Exception
{
- Set<ManagedServiceBinding> set = new HashSet<ManagedServiceBinding>();
+ Set<ServiceBindingMetadata> set = new HashSet<ServiceBindingMetadata>();
set.addAll(Arrays.asList(AA, AB, Anull));
Set<ServiceBindingSet> ourSets = new HashSet<ServiceBindingSet>();
- ourSets.add(new ServiceBindingSet(A, null, 10, set));
- ourSets.add(new ServiceBindingSet(B, "localhost", 20, set));
- ourSets.add(new ServiceBindingSet(C, "192.168.0.10", 30, set));
+ ServiceBindingSet newSetA = new ServiceBindingSet(A, null, 10, set);
+ ourSets.add(newSetA);
+ ServiceBindingSet newSetB = new ServiceBindingSet(B, "localhost", 20, set);
+ ourSets.add(newSetB);
+ ServiceBindingSet newSetC = new ServiceBindingSet(C, "192.168.0.10", 30, set);
+ ourSets.add(newSetC);
PojoServiceBindingStore store = new PojoServiceBindingStore();
store.setServiceBindingSets(ourSets);
store.start();
- ManagedServiceBinding new1 = new ManagedServiceBinding(B, A, "192.168.0.22", 1);
- store.addServiceBinding(new1, false);
+ ServiceBindingMetadata new1 = new ServiceBindingMetadata(B, A, "192.168.0.22", 1, false, true);
+ store.addServiceBinding(new1);
InetAddress address = InetAddress.getByName("192.168.0.22");
ServiceBinding got = store.getServiceBinding(A, B, A);
- assertEquals(new1, got);
+ assertEquals(getServiceBinding(new1, newSetA), got);
assertEquals(11, got.getPort());
assertEquals("192.168.0.22", got.getHostName());
assertEquals(address, got.getBindAddress());
got = store.getServiceBinding(B, B, A);
- assertEquals(new1, got);
+ assertEquals(getServiceBinding(new1, newSetB), got);
assertEquals(21, got.getPort());
assertEquals("192.168.0.22", got.getHostName());
assertEquals(address, got.getBindAddress());
got = store.getServiceBinding(C, B, A);
- assertEquals(new1, got);
+ assertEquals(getServiceBinding(new1, newSetC), got);
assertEquals(31, got.getPort());
assertEquals("192.168.0.22", got.getHostName());
assertEquals(address, got.getBindAddress());
- ManagedServiceBinding new2 = new ManagedServiceBinding(B, A, "localhost", 2);
+ ServiceBindingMetadata new2 = new ServiceBindingMetadata(B, A, "localhost", 2, false, false);
try
{
- store.addServiceBinding(new2, false);
+ store.addServiceBinding(new2);
fail("duplicate add succeeded");
}
catch (DuplicateServiceException good) {}
- ManagedServiceBinding new3 = new ManagedServiceBinding(C, C, null, 3);
- store.addServiceBinding(new3, false);
+ ServiceBindingMetadata new3 = new ServiceBindingMetadata(C, C, null, 3, false, false);
+ store.addServiceBinding(new3);
got = store.getServiceBinding(A, C, C);
- assertEquals(new3, got);
+ assertEquals(getServiceBinding(new3, newSetA), got);
assertEquals(13, got.getPort());
assertNull(got.getHostName());
assertEquals(InetAddress.getByName(null), got.getBindAddress());
got = store.getServiceBinding(B, C, C);
- assertEquals(new3, got);
+ assertEquals(getServiceBinding(new3, newSetB), got);
assertEquals(23, got.getPort());
assertEquals("localhost", got.getHostName());
assertEquals(InetAddress.getByName("localhost"), got.getBindAddress());
got = store.getServiceBinding(C, C, C);
- assertEquals(new3, got);
+ assertEquals(getServiceBinding(new3, newSetC), got);
assertEquals(33, got.getPort());
assertEquals("192.168.0.10", got.getHostName());
assertEquals(InetAddress.getByName("192.168.0.10"), got.getBindAddress());
@@ -281,7 +301,7 @@
{
PojoServiceBindingStore store = new PojoServiceBindingStore();
store.setServiceBindingSets(bindingSets);
- store.setPortOffsetBindings(bindings);
+ store.setStandardBindings(bindings);
store.start();
store.removeServiceBinding(AA);
@@ -333,7 +353,7 @@
}
catch (NoSuchBindingException e) {}
- ManagedServiceBinding new1 = new ManagedServiceBinding(B, A, "localhost", 1);
+ ServiceBindingMetadata new1 = new ServiceBindingMetadata(B, A, "localhost", 1, false, false);
store.removeServiceBinding(new1);
store.removeServiceBinding(B, A);
}
@@ -342,21 +362,21 @@
{
PojoServiceBindingStore store = new PojoServiceBindingStore();
store.setServiceBindingSets(bindingSets);
- store.setPortOffsetBindings(bindings);
+ store.setStandardBindings(bindings);
store.start();
String[] names = {A, B, C};
for (String name :names)
{
- assertNull(store.getDefaultHostName(name));
+ assertEquals("localhost", store.getDefaultHostName(name));
assertEquals(0, store.getDefaultPortOffset(name));
}
}
public void testDefaults() throws Exception
{
- Set<ManagedServiceBinding> set = new HashSet<ManagedServiceBinding>();
+ Set<ServiceBindingMetadata> set = new HashSet<ServiceBindingMetadata>();
set.addAll(Arrays.asList(AA, AB, Anull));
Set<ServiceBindingSet> sbs = new HashSet<ServiceBindingSet>();
@@ -382,14 +402,19 @@
{
PojoServiceBindingStore store = new PojoServiceBindingStore();
store.setServiceBindingSets(bindingSets);
- store.setPortOffsetBindings(bindings);
+ store.setStandardBindings(bindings);
store.start();
String[] servers = {A, B, C};
for (String server : servers)
{
Set<ServiceBinding> set = store.getServiceBindings(server);
- assertEquals(bindings, set);
+ assertEquals(bindings.size(), set.size());
+ for (ServiceBinding binding : set)
+ {
+ ServiceBindingMetadata metadata = new ServiceBindingMetadata(binding);
+ assertTrue(server + " includes " + metadata, bindings.contains(metadata));
+ }
}
}
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingManagerUnitTestCase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingManagerUnitTestCase.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingManagerUnitTestCase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -31,6 +31,7 @@
import org.jboss.services.binding.ServiceBinding;
import org.jboss.services.binding.ServiceBindingManager;
+import org.jboss.services.binding.ServiceBindingMetadata;
import org.w3c.dom.Element;
/**
@@ -45,6 +46,7 @@
private static final String INPUT = "${host}";
private ServiceBindingManager testee;
+ private ServiceBindingMetadata noNameMetadata;
private ServiceBinding noNameBinding;
private MockServiceBindingStore mockStore;
private InetAddress address;
@@ -65,7 +67,8 @@
mockStore = new MockServiceBindingStore(binding, SERVER);
testee = new ServiceBindingManager(SERVER, mockStore);
- noNameBinding = new ServiceBinding(SVC_NAME, null, HOST, PORT);
+ noNameMetadata = new ServiceBindingMetadata(SVC_NAME, null, null, PORT);
+ noNameBinding = new ServiceBinding(noNameMetadata, HOST, 0);
address = InetAddress.getByName(HOST);
}
@@ -100,7 +103,9 @@
{
Integer result = new Integer(5);
MockServiceBindingValueSource source = new MockServiceBindingValueSource(result);
- binding.setServiceBindingValueSource(source);
+ bindingMetadata.setServiceBindingValueSource(source);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
assertEquals(5, testee.getIntBinding(SVC_NAME, BINDING_NAME));
Object[] params = source.getParams();
assertNull(params);
@@ -112,6 +117,9 @@
assertEquals(binding.getPort() + mockStore.getDefaultPortOffset(SERVER), testee.getIntBinding(SVC_NAME, BINDING_NAME, binding.getHostName(), binding.getPort()));
mockStore.setBinding(null);
assertEquals(binding.getPort() + mockStore.getDefaultPortOffset(SERVER), testee.getIntBinding(SVC_NAME, BINDING_NAME, null, binding.getPort()));
+ mockStore.setBinding(null);
+ assertEquals(binding.getPort(), testee.getIntBinding(SVC_NAME, BINDING_NAME, binding.getHostName(), binding.getPort(), true, true));
+
}
@@ -136,7 +144,9 @@
{
InetAddress result = InetAddress.getByName("localhost");
MockServiceBindingValueSource source = new MockServiceBindingValueSource(result);
- binding.setServiceBindingValueSource(source);
+ bindingMetadata.setServiceBindingValueSource(source);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
assertEquals(result, testee.getInetAddressBinding(SVC_NAME, BINDING_NAME));
Object[] params = source.getParams();
assertNull(params);
@@ -148,6 +158,10 @@
assertEquals(binding.getBindAddress(), testee.getInetAddressBinding(SVC_NAME, BINDING_NAME, binding.getHostName(), binding.getPort()));
mockStore.setBinding(null);
assertEquals(InetAddress.getByName(mockStore.getDefaultHostName(SERVER)), testee.getInetAddressBinding(SVC_NAME, BINDING_NAME, null, binding.getPort()));
+ mockStore.setBinding(null);
+ assertEquals(InetAddress.getByName(mockStore.getDefaultHostName(SERVER)), testee.getInetAddressBinding(SVC_NAME, BINDING_NAME, binding.getHostName(), binding.getPort(), false, false));
+ mockStore.setBinding(null);
+ assertEquals(InetAddress.getByName(null), testee.getInetAddressBinding(SVC_NAME, BINDING_NAME, null, binding.getPort(), true, true));
}
/**
@@ -170,7 +184,9 @@
public void testGetStringBindingViaGeneric() throws Exception
{
MockServiceBindingValueSource source = new MockServiceBindingValueSource(SVC_NAME);
- binding.setServiceBindingValueSource(source);
+ bindingMetadata.setServiceBindingValueSource(source);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
assertEquals(SVC_NAME, testee.getStringBinding(SVC_NAME, BINDING_NAME, INPUT));
Object[] params = source.getParams();
assertNotNull(params);
@@ -184,6 +200,10 @@
assertEquals(binding.getHostName(), testee.getStringBinding(SVC_NAME, BINDING_NAME, INPUT, binding.getHostName(), binding.getPort()));
mockStore.setBinding(null);
assertEquals(InetAddress.getByName(mockStore.getDefaultHostName(SERVER)).getHostName(), testee.getStringBinding(SVC_NAME, BINDING_NAME, INPUT, null, binding.getPort()));
+ mockStore.setBinding(null);
+ assertEquals(InetAddress.getByName(mockStore.getDefaultHostName(SERVER)).getHostName(), testee.getStringBinding(SVC_NAME, BINDING_NAME, INPUT, binding.getHostName(), binding.getPort(), false, false));
+ mockStore.setBinding(null);
+ assertEquals(InetAddress.getByName(null).getHostName(), testee.getStringBinding(SVC_NAME, BINDING_NAME, INPUT, null, binding.getPort(), true, true));
}
/**
@@ -217,7 +237,9 @@
editor.setAsText(ELEMENT_INPUT);
Element result = (Element) editor.getValue();
MockServiceBindingValueSource source = new MockServiceBindingValueSource(result);
- binding.setServiceBindingValueSource(source);
+ bindingMetadata.setServiceBindingValueSource(source);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
assertEquals(result, testee.getElementBinding(SVC_NAME, BINDING_NAME, result));
Object[] params = source.getParams();
assertNotNull(params);
@@ -227,7 +249,9 @@
public void testGetElementBindingViaXSLT() throws Exception
{
- binding.setServiceBindingValueSourceConfig(getXSLTConfig());
+ bindingMetadata.setServiceBindingValueSourceConfig(getXSLTConfig());
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
Element input = getDocumentElementFromClasspath(XSL_INPUT);
Element output = testee.getElementBinding(SVC_NAME, BINDING_NAME, input);
@@ -279,7 +303,9 @@
{
URL result = new File(getFullyQualifiedResourceName("input.xml")).toURL();
MockServiceBindingValueSource source = new MockServiceBindingValueSource(result);
- binding.setServiceBindingValueSource(source);
+ bindingMetadata.setServiceBindingValueSource(source);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
assertEquals(result, testee.getURLBinding(SVC_NAME, BINDING_NAME, result));
Object[] params = source.getParams();
assertNotNull(params);
@@ -289,7 +315,9 @@
public void testGetURLBindingViaXSLT() throws Exception
{
- binding.setServiceBindingValueSourceConfig(getXSLTConfig());
+ bindingMetadata.setServiceBindingValueSourceConfig(getXSLTConfig());
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
URL input = Thread.currentThread().getContextClassLoader().getResource(XSL_INPUT);
URL output = testee.getURLBinding(SVC_NAME, BINDING_NAME, input);
@@ -310,9 +338,14 @@
mockStore.setBinding(null);
output = testee.getURLBinding(SVC_NAME, BINDING_NAME, input, null, binding.getPort());
-
assertNotNull(output);
element = getDocumentElement(output);
+ validateOutputElement(element, true, true);
+
+ mockStore.setBinding(null);
+ output = testee.getURLBinding(SVC_NAME, BINDING_NAME, input, binding.getHostName(), binding.getPort(), false, false);
+ assertNotNull(output);
+ element = getDocumentElement(output);
validateOutputElement(element, true, true);
}
@@ -344,7 +377,9 @@
public void testGetResourceBindingViaGeneric() throws Exception
{
MockServiceBindingValueSource source = new MockServiceBindingValueSource(SVC_NAME);
- binding.setServiceBindingValueSource(source);
+ bindingMetadata.setServiceBindingValueSource(source);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
assertEquals(SVC_NAME, testee.getResourceBinding(SVC_NAME, BINDING_NAME, INPUT));
Object[] params = source.getParams();
assertNotNull(params);
@@ -354,7 +389,9 @@
public void testGetResourceBindingViaXSLT() throws Exception
{
- binding.setServiceBindingValueSourceConfig(getXSLTConfig());
+ bindingMetadata.setServiceBindingValueSourceConfig(getXSLTConfig());
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
String output = testee.getResourceBinding(SVC_NAME, BINDING_NAME, XSL_INPUT);
assertNotNull(output);
@@ -373,9 +410,14 @@
mockStore.setBinding(null);
output = testee.getResourceBinding(SVC_NAME, BINDING_NAME, input, null, binding.getPort());
-
assertNotNull(output);
element = getDocumentElement(output);
+ validateOutputElement(element, true, true);
+
+ mockStore.setBinding(null);
+ output = testee.getResourceBinding(SVC_NAME, BINDING_NAME, input, binding.getHostName(), binding.getPort(), false, false);
+ assertNotNull(output);
+ element = getDocumentElement(output);
validateOutputElement(element, true, true);
}
@@ -384,9 +426,10 @@
*/
public void testGetGenericBindingStringObjectArray() throws Exception
{
+ MockServiceBindingValueSource source = new MockServiceBindingValueSource(SVC_NAME);
+ noNameMetadata.setServiceBindingValueSource(source);
+ noNameBinding = new ServiceBinding(noNameMetadata, HOST, 0);
mockStore.setBinding(noNameBinding);
- MockServiceBindingValueSource source = new MockServiceBindingValueSource(SVC_NAME);
- noNameBinding.setServiceBindingValueSource(source);
assertEquals(SVC_NAME, testee.getGenericBinding(SVC_NAME, null, INPUT));
Object[] params = source.getParams();
assertNotNull(params);
@@ -400,7 +443,9 @@
public void testGetGenericBindingStringStringObjectArray() throws Exception
{
MockServiceBindingValueSource source = new MockServiceBindingValueSource(SVC_NAME);
- binding.setServiceBindingValueSource(source);
+ bindingMetadata.setServiceBindingValueSource(source);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
+ mockStore.setBinding(binding);
assertEquals(SVC_NAME, testee.getGenericBinding(SVC_NAME, BINDING_NAME, INPUT));
Object[] params = source.getParams();
assertNotNull(params);
Added: trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingMetadataTestCase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingMetadataTestCase.java (rev 0)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingMetadataTestCase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -0,0 +1,334 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.test.services.binding.test;
+
+import junit.framework.TestCase;
+
+import org.jboss.services.binding.ServiceBindingMetadata;
+
+/**
+ * @author Brian Stansberry
+ *
+ */
+public class ServiceBindingMetadataTestCase extends TestCase
+{
+ private static final String S = "S";
+ private static final String B = "B";
+ private static final String H = "H";
+ private static final String FQN = S + ":" + B;
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#ServiceBindingMetadata(java.lang.String)}.
+ */
+ public void testServiceBindingMetadataString()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata(S);
+ assertEquals(S, md.getServiceName());
+
+ assertFalse(md.isFixedHostName());
+ assertFalse(md.isFixedPort());
+
+ try
+ {
+ String svcName = null;
+ md = new ServiceBindingMetadata(svcName);
+ fail("null serviceName allowed");
+ }
+ catch (IllegalArgumentException good) {}
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#ServiceBindingMetadata(java.lang.String, java.lang.String)}.
+ */
+ public void testServiceBindingMetadataStringString()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata(S, B);
+ assertEquals(S, md.getServiceName());
+ assertEquals(B, md.getBindingName());
+
+ assertFalse(md.isFixedHostName());
+ assertFalse(md.isFixedPort());
+
+ md = new ServiceBindingMetadata(S, null);
+ assertEquals(S, md.getServiceName());
+ assertEquals(null, md.getBindingName());
+
+ assertFalse(md.isFixedHostName());
+ assertFalse(md.isFixedPort());
+
+ try
+ {
+ md = new ServiceBindingMetadata(null, B);
+ fail("null serviceName allowed");
+ }
+ catch (IllegalArgumentException good) {}
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#ServiceBindingMetadata(java.lang.String, java.lang.String, java.lang.String, int)}.
+ */
+ public void testServiceBindingMetadataStringStringStringInt()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata(S, B, H, 1);
+ assertEquals(S, md.getServiceName());
+ assertEquals(B, md.getBindingName());
+ assertEquals(H, md.getHostName());
+ assertEquals(1, md.getPort());
+ assertFalse(md.isFixedPort());
+ assertTrue(md.isFixedHostName());
+
+ md = new ServiceBindingMetadata(S, null, null, 1);
+ assertEquals(S, md.getServiceName());
+ assertEquals(null, md.getBindingName());
+ assertEquals(null, md.getHostName());
+ assertEquals(1, md.getPort());
+ assertFalse(md.isFixedPort());
+ assertFalse(md.isFixedHostName());
+
+ try
+ {
+ md = new ServiceBindingMetadata(null, B, H, 1);
+ fail("null serviceName allowed");
+ }
+ catch (IllegalArgumentException good) {}
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#ServiceBindingMetadata(java.lang.String, java.lang.String, java.lang.String, int, boolean, boolean)}.
+ */
+ public void testServiceBindingMetadataStringStringStringIntBooleanBoolean()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata(S, B, H, 1, true, true);
+ assertEquals(S, md.getServiceName());
+ assertEquals(B, md.getBindingName());
+ assertEquals(H, md.getHostName());
+ assertEquals(1, md.getPort());
+ assertTrue(md.isFixedPort());
+ assertTrue(md.isFixedHostName());
+
+ md = new ServiceBindingMetadata(S, null, null, 1, true, true);
+ assertEquals(S, md.getServiceName());
+ assertEquals(null, md.getBindingName());
+ assertEquals(null, md.getHostName());
+ assertEquals(1, md.getPort());
+ assertTrue(md.isFixedPort());
+ assertTrue(md.isFixedHostName());
+
+ try
+ {
+ md = new ServiceBindingMetadata(null, B, H, 1, true, true);
+ fail("null serviceName allowed");
+ }
+ catch (IllegalArgumentException good) {}
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#setServiceName(java.lang.String)}.
+ */
+ public void testSetServiceName()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata();
+ md.setServiceName(S);
+ assertEquals(S, md.getServiceName());
+
+ try
+ {
+ md.setServiceName(null);
+ fail("null serviceName allowed");
+ }
+ catch (IllegalArgumentException good) {}
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#setBindingName(java.lang.String)}.
+ */
+ public void testSetBindingName()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata();
+ md.setBindingName(B);
+ assertEquals(B, md.getBindingName());
+ md.setBindingName(null);
+ assertEquals(null, md.getBindingName());
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#getFullyQualifiedName()}.
+ */
+ public void testGetFullyQualifiedName()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata(S, B);
+ assertEquals(FQN, md.getFullyQualifiedName());
+
+ md = new ServiceBindingMetadata(S, null);
+ assertEquals(S,md.getFullyQualifiedName());
+
+ md = new ServiceBindingMetadata();
+ try
+ {
+ md.getFullyQualifiedName();
+ fail("getFullyQualifiedName should fail with no serviceName set");
+ }
+ catch (IllegalStateException good) {}
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#setHostName(java.lang.String)}.
+ */
+ public void testSetHostName()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata();
+ md.setHostName(H);
+ assertEquals(H, md.getHostName());
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#setPort(int)}.
+ */
+ public void testSetPort()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata();
+ md.setPort(2);
+ assertEquals(2, md.getPort());
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#setServiceBindingValueSource(org.jboss.services.binding.ServiceBindingValueSource)}.
+ */
+ public void testSetServiceBindingValueSource()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata();
+ MockServiceBindingValueSource mock = new MockServiceBindingValueSource();
+ md.setServiceBindingValueSource(mock);
+ assertSame(mock, md.getServiceBindingValueSource());
+ assertEquals(mock.getClass().getName(), md.getServiceBindingValueSourceClassName());
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#setServiceBindingValueSourceClassName(java.lang.String)}.
+ */
+ public void testSetServiceBindingValueSourceClassName()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata();
+ md.setServiceBindingValueSourceClassName(S);
+ assertEquals(S, md.getServiceBindingValueSourceClassName());
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#setServiceBindingValueSourceConfig(java.lang.Object)}.
+ */
+ public void testSetServiceBindingValueSourceConfig()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata();
+ Object config = new Object();
+ md.setServiceBindingValueSourceConfig(config);
+ assertSame(config, md.getServiceBindingValueSourceConfig());
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#setFixedPort(boolean)}.
+ */
+ public void testSetFixedPort()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata();
+ assertFalse(md.isFixedPort());
+ md.setFixedPort(true);
+ assertTrue(md.isFixedPort());
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#setFixedHostName(boolean)}.
+ */
+ public void testSetFixedHostName()
+ {
+ ServiceBindingMetadata md = new ServiceBindingMetadata();
+ assertFalse(md.isFixedHostName());
+ md.setFixedHostName(true);
+ assertTrue(md.isFixedHostName());
+ }
+
+ /**
+ * Test method for {@link org.jboss.services.binding.ServiceBindingMetadata#equals(java.lang.Object)}.
+ */
+ public void testEqualsObject()
+ {
+ ServiceBindingMetadata md1 = new ServiceBindingMetadata();
+ ServiceBindingMetadata md2 = new ServiceBindingMetadata();
+ try
+ {
+ md1.equals(md2);
+ fail("equals should fail with unset serviceName");
+ }
+ catch (IllegalStateException good) {}
+
+ md1 = new ServiceBindingMetadata(S, B);
+ md2 = new ServiceBindingMetadata(S, null);
+ assertFalse(md1.equals(md2));
+ assertFalse(md2.equals(md1));
+
+ md2 = new ServiceBindingMetadata(B, B);
+ assertFalse(md1.equals(md2));
+ assertFalse(md2.equals(md1));
+
+ md2 = new ServiceBindingMetadata(S, B);
+ md2.setHostName(H);
+ md2.setPort(10);
+ md2.setServiceBindingValueSource(new MockServiceBindingValueSource());
+ md2.setServiceBindingValueSourceConfig(new Object());
+ assertTrue(md1.equals(md2));
+ assertTrue(md2.equals(md1));
+ }
+
+ /**
+ * Test method for {@link ServiceBindingMetadata#compareTo(ServiceBindingMetadata)}
+ */
+ public void testCompareTo()
+ {
+ ServiceBindingMetadata md1 = new ServiceBindingMetadata();
+ ServiceBindingMetadata md2 = new ServiceBindingMetadata();
+ try
+ {
+ md1.compareTo(md2);
+ fail("compareTo should fail with unset serviceName");
+ }
+ catch (IllegalStateException good) {}
+
+ md1 = new ServiceBindingMetadata(S, B);
+ md2 = new ServiceBindingMetadata(S, null);
+ assertTrue(md1.compareTo(md2) > 0);
+ assertTrue(md2.compareTo(md1) < 0);
+
+ md2 = new ServiceBindingMetadata(B, B);
+ assertTrue(md1.compareTo(md2) > 0);
+ assertTrue(md2.compareTo(md1) < 0);
+
+ md2 = new ServiceBindingMetadata(S, B);
+ md2.setHostName(H);
+ md2.setPort(10);
+ md2.setServiceBindingValueSource(new MockServiceBindingValueSource());
+ md2.setServiceBindingValueSourceConfig(new Object());
+ assertEquals(0, md1.compareTo(md2));
+ assertEquals(0, md2.compareTo(md1));
+
+ }
+
+}
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingSetUnitTestCase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingSetUnitTestCase.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingSetUnitTestCase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -29,8 +29,7 @@
import junit.framework.TestCase;
-import org.jboss.services.binding.ManagedServiceBinding;
-import org.jboss.services.binding.ServiceBinding;
+import org.jboss.services.binding.ServiceBindingMetadata;
import org.jboss.services.binding.impl.ServiceBindingSet;
/**
@@ -44,11 +43,11 @@
private static final String A = "A";
private static final String B = "B";
- private static ManagedServiceBinding AA;
- private static ManagedServiceBinding AB;
- private static ManagedServiceBinding Anull;
+ private static ServiceBindingMetadata AA;
+ private static ServiceBindingMetadata AB;
+ private static ServiceBindingMetadata Anull;
- private Set<ManagedServiceBinding> bindings = new HashSet<ManagedServiceBinding>();
+ private Set<ServiceBindingMetadata> bindings = new HashSet<ServiceBindingMetadata>();
/**
* Create a new ServiceBindingSetUnitTestCase.
@@ -64,20 +63,20 @@
{
super.setUp();
- AA = new ManagedServiceBinding(A, A, "localhost", 1);
- AB = new ManagedServiceBinding(A, B, "localhost", 1);
- Anull = new ManagedServiceBinding(A, null, "localhost", 1);
+ AA = new ServiceBindingMetadata(A, A, "localhost", 1, false, false);
+ AB = new ServiceBindingMetadata(A, B, "localhost", 1, false, false);
+ Anull = new ServiceBindingMetadata(A, null, "localhost", 1, false, false);
bindings.addAll(Arrays.asList(AA, AB, Anull));
}
public void testBasicConstructor() throws UnknownHostException
{
- ServiceBindingSet set = new ServiceBindingSet(A, new HashSet<ManagedServiceBinding>(bindings));
+ ServiceBindingSet set = new ServiceBindingSet(A, new HashSet<ServiceBindingMetadata>(bindings));
assertEquals(A, set.getName());
- for (ServiceBinding binding : set.getOverrideBindings())
+ for (ServiceBindingMetadata binding : set.getOverrideBindings())
{
assertEquals(1, binding.getPort());
assertTrue(bindings.remove(binding));
@@ -107,11 +106,11 @@
public void testOffsetConstructorWithDefaultHost() throws UnknownHostException
{
- ServiceBindingSet set = new ServiceBindingSet(A, "192.168.0.10", 5, new HashSet<ManagedServiceBinding>(bindings));
+ ServiceBindingSet set = new ServiceBindingSet(A, "192.168.0.10", 5, new HashSet<ServiceBindingMetadata>(bindings));
assertEquals(A, set.getName());
- for (ServiceBinding binding : set.getOverrideBindings())
+ for (ServiceBindingMetadata binding : set.getOverrideBindings())
{
assertEquals(1, binding.getPort());
assertTrue(bindings.remove(binding));
@@ -129,8 +128,8 @@
*/
public void testOverrideConstructor() throws UnknownHostException
{
- ServiceBindingSet set = new ServiceBindingSet(A, new HashSet<ManagedServiceBinding>(bindings));
- for (ServiceBinding binding : set.getOverrideBindings())
+ ServiceBindingSet set = new ServiceBindingSet(A, new HashSet<ServiceBindingMetadata>(bindings));
+ for (ServiceBindingMetadata binding : set.getOverrideBindings())
{
assertTrue(bindings.remove(binding));
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingTestBase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingTestBase.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingTestBase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -35,8 +35,12 @@
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
import org.jboss.bootstrap.spi.ServerConfig;
import org.jboss.services.binding.ServiceBinding;
+import org.jboss.services.binding.ServiceBindingMetadata;
import org.jboss.services.binding.impl.XSLTServiceBindingValueSourceConfig;
import org.jboss.util.propertyeditor.ElementEditor;
import org.jboss.util.xml.JBossEntityResolver;
@@ -45,9 +49,6 @@
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
/**
* Base class for service binding manager related test classes.
*
@@ -68,6 +69,7 @@
protected static final String OTHER_VALUE = "ABC";
protected static final String XSL_INPUT = getFullyQualifiedResourceName("xslt_input.xml");
+ protected ServiceBindingMetadata bindingMetadata;
protected ServiceBinding binding;
private PropertyEditor existingElementEditor;
@@ -96,7 +98,8 @@
if (serverTempDir == null)
System.setProperty(ServerConfig.SERVER_TEMP_DIR, System.getProperty("java.io.tmpdir"));
- binding = new ServiceBinding(SVC_NAME, BINDING_NAME, HOST, PORT);
+ bindingMetadata = new ServiceBindingMetadata(SVC_NAME, BINDING_NAME, HOST, PORT, false, false);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
}
@Override
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingUnitTestCase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingUnitTestCase.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/ServiceBindingUnitTestCase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -25,6 +25,7 @@
import java.net.InetAddress;
import org.jboss.services.binding.ServiceBinding;
+import org.jboss.services.binding.ServiceBindingMetadata;
import org.jboss.services.binding.impl.XSLTServiceBindingValueSourceImpl;
import junit.framework.TestCase;
@@ -48,26 +49,46 @@
super(name);
}
+ public void testNullMetadata() throws Exception
+ {
+ try
+ {
+ new ServiceBinding(null, "host", 0);
+ fail("null metadata should fail");
+ }
+ catch (IllegalArgumentException good) {}
+ }
+
public void testNullServiceName() throws Exception
{
try
{
- new ServiceBinding(null, 1);
+ new ServiceBinding(new ServiceBindingMetadata(), "host", 0);
fail("null serviceName should fail");
}
- catch (IllegalArgumentException good) {}
+ catch (IllegalStateException good) {}
}
/**
* Test method for {@link org.jboss.services.binding.ServiceBinding#getServiceBindingValueSource()}.
*/
- public void testServiceBindingValueSourceClassName() throws Exception
+ public void testServiceBindingValueSource() throws Exception
{
- ServiceBinding binding = new ServiceBinding("test", 1);
+ ServiceBindingMetadata metadata = new ServiceBindingMetadata("svc");
String className = XSLTServiceBindingValueSourceImpl.class.getName();
- binding.setServiceBindingValueSourceClassName(className);
+ metadata.setServiceBindingValueSourceClassName(className);
+ ServiceBinding binding = new ServiceBinding(metadata, "localhost", 1);
assertEquals(className, binding.getServiceBindingValueSourceClassName());
assertTrue(binding.getServiceBindingValueSource() instanceof XSLTServiceBindingValueSourceImpl);
+
+ MockServiceBindingValueSource mock = new MockServiceBindingValueSource();
+ metadata.setServiceBindingValueSource(mock);
+ Object config = new Object();
+ metadata.setServiceBindingValueSourceConfig(config);
+ binding = new ServiceBinding(metadata, "localhost", 1);
+ assertSame(mock, binding.getServiceBindingValueSource());
+ assertEquals(mock.getClass().getName(), binding.getServiceBindingValueSourceClassName());
+ assertSame(config, binding.getServiceBindingValueSourceConfig());
}
/**
@@ -75,18 +96,18 @@
*/
public void testGetOffsetBinding() throws Exception
{
- ServiceBinding binding = new ServiceBinding("svc", "binding", "192.168.0.2", 1);
+ ServiceBindingMetadata metadata = new ServiceBindingMetadata("svc", "binding", "192.168.0.2", 1, false, true);
String className = XSLTServiceBindingValueSourceImpl.class.getName();
- binding.setServiceBindingValueSourceClassName(className);
+ metadata.setServiceBindingValueSourceClassName(className);
- ServiceBinding binding2 = binding.getOffsetBinding(10);
- assertEquals(binding.getServiceName(), binding2.getServiceName());
- assertEquals(binding.getBindingName(), binding2.getBindingName());
- assertEquals(binding.getHostName(), binding2.getHostName());
- assertEquals(binding.getBindAddress(), binding2.getBindAddress());
+ ServiceBinding binding = new ServiceBinding(metadata, "192.168.0.2", 10);
+ assertEquals(metadata.getServiceName(), binding.getServiceName());
+ assertEquals(metadata.getBindingName(), binding.getBindingName());
+ assertEquals(metadata.getHostName(), binding.getHostName());
+ assertEquals(InetAddress.getByName(metadata.getHostName()), binding.getBindAddress());
- assertEquals(1, binding.getPort());
- assertEquals(11, binding2.getPort());
+ assertEquals(1, metadata.getPort());
+ assertEquals(11, binding.getPort());
}
/**
@@ -94,31 +115,25 @@
*/
public void testGetOffsetBindingWithHost() throws Exception
{
- ServiceBinding binding = new ServiceBinding("svc", "binding", "192.168.0.2", 1);
- String className = XSLTServiceBindingValueSourceImpl.class.getName();
- binding.setServiceBindingValueSourceClassName(className);
+ ServiceBindingMetadata metadata = new ServiceBindingMetadata("svc", "binding", "192.168.0.2", 1, false, true);
+ ServiceBinding binding = new ServiceBinding(metadata, "192.168.0.3", 10);
+ assertEquals(metadata.getServiceName(), binding.getServiceName());
+ assertEquals(metadata.getBindingName(), binding.getBindingName());
+ assertEquals(metadata.getHostName(), binding.getHostName());
+ assertEquals(InetAddress.getByName(metadata.getHostName()), binding.getBindAddress());
- ServiceBinding binding2 = binding.getOffsetBinding(10, "192.168.0.3");
- assertEquals(binding.getServiceName(), binding2.getServiceName());
- assertEquals(binding.getBindingName(), binding2.getBindingName());
- assertEquals(binding.getHostName(), binding2.getHostName());
- assertEquals(binding.getBindAddress(), binding2.getBindAddress());
+ assertEquals(1, metadata.getPort());
+ assertEquals(11, binding.getPort());
- assertEquals(1, binding.getPort());
- assertEquals(11, binding2.getPort());
+ metadata = new ServiceBindingMetadata("svc", "binding", "192.168.0.2", 1, false, false);
+ binding = new ServiceBinding(metadata, "192.168.0.3", 10);
+ assertEquals(metadata.getServiceName(), binding.getServiceName());
+ assertEquals(metadata.getBindingName(), binding.getBindingName());
+ assertEquals("192.168.0.3", binding.getHostName());
+ assertEquals(InetAddress.getByName("192.168.0.3"), binding.getBindAddress());
- binding = new ServiceBinding("svc", "binding", null, 1);
- className = XSLTServiceBindingValueSourceImpl.class.getName();
- binding.setServiceBindingValueSourceClassName(className);
-
- binding2 = binding.getOffsetBinding(10, "192.168.0.3");
- assertEquals(binding.getServiceName(), binding2.getServiceName());
- assertEquals(binding.getBindingName(), binding2.getBindingName());
- assertEquals("192.168.0.3", binding2.getHostName());
- assertEquals(InetAddress.getByName("192.168.0.3"), binding2.getBindAddress());
-
- assertEquals(1, binding.getPort());
- assertEquals(11, binding2.getPort());
+ assertEquals(1, metadata.getPort());
+ assertEquals(11, binding.getPort());
}
/**
@@ -126,14 +141,14 @@
*/
public void testEquals() throws Exception
{
- ServiceBinding bindingAA0 = new ServiceBinding("A", "A", "192.168.0.2", 1);
- ServiceBinding bindingAA1 = new ServiceBinding("A", "A", "192.168.0.2", 2);
- ServiceBinding bindingAA2 = new ServiceBinding("A", "A", "192.168.0.1", 1);
- ServiceBinding bindingAB = new ServiceBinding("A", "B", "192.168.0.2", 1);
- ServiceBinding bindingBA = new ServiceBinding("B", "A", "192.168.0.2", 1);
- ServiceBinding bindingAnull = new ServiceBinding("A", null, "192.168.0.2", 1);
- ServiceBinding bindingBnull = new ServiceBinding("B", null, "192.168.0.2", 1);
- ServiceBinding bindingBnull1 = new ServiceBinding("B", null, "192.168.0.2", 2);
+ ServiceBinding bindingAA0 = new ServiceBinding(new ServiceBindingMetadata("A", "A"), "192.168.0.2", 1);
+ ServiceBinding bindingAA1 = new ServiceBinding(new ServiceBindingMetadata("A", "A"), "192.168.0.2", 2);
+ ServiceBinding bindingAA2 = new ServiceBinding(new ServiceBindingMetadata("A", "A"), "192.168.0.1", 1);
+ ServiceBinding bindingAB = new ServiceBinding(new ServiceBindingMetadata("A", "B"), "192.168.0.2", 1);
+ ServiceBinding bindingBA = new ServiceBinding(new ServiceBindingMetadata("B", "A"), "192.168.0.2", 1);
+ ServiceBinding bindingAnull = new ServiceBinding(new ServiceBindingMetadata("A", null), "192.168.0.2", 1);
+ ServiceBinding bindingBnull = new ServiceBinding(new ServiceBindingMetadata("B", null), "192.168.0.2", 1);
+ ServiceBinding bindingBnull1 = new ServiceBinding(new ServiceBindingMetadata("B", null), "192.168.0.2", 2);
assertEquals(bindingAA0, bindingAA1);
assertEquals(bindingAA0, bindingAA2);
@@ -155,14 +170,14 @@
*/
public void testHashCode() throws Exception
{
- ServiceBinding bindingAA0 = new ServiceBinding("A", "A", "192.168.0.2", 1);
- ServiceBinding bindingAA1 = new ServiceBinding("A", "A", "192.168.0.2", 2);
- ServiceBinding bindingAA2 = new ServiceBinding("A", "A", "192.168.0.1", 1);
- ServiceBinding bindingAB = new ServiceBinding("A", "B", "192.168.0.2", 1);
- ServiceBinding bindingBA = new ServiceBinding("B", "A", "192.168.0.2", 1);
- ServiceBinding bindingAnull = new ServiceBinding("A", null, "192.168.0.2", 1);
- ServiceBinding bindingBnull = new ServiceBinding("B", null, "192.168.0.2", 1);
- ServiceBinding bindingBnull1 = new ServiceBinding("B", null, "192.168.0.2", 2);
+ ServiceBinding bindingAA0 = new ServiceBinding(new ServiceBindingMetadata("A", "A"), "192.168.0.2", 1);
+ ServiceBinding bindingAA1 = new ServiceBinding(new ServiceBindingMetadata("A", "A"), "192.168.0.2", 2);
+ ServiceBinding bindingAA2 = new ServiceBinding(new ServiceBindingMetadata("A", "A"), "192.168.0.1", 1);
+ ServiceBinding bindingAB = new ServiceBinding(new ServiceBindingMetadata("A", "B"), "192.168.0.2", 1);
+ ServiceBinding bindingBA = new ServiceBinding(new ServiceBindingMetadata("B", "A"), "192.168.0.2", 1);
+ ServiceBinding bindingAnull = new ServiceBinding(new ServiceBindingMetadata("A", null), "192.168.0.2", 1);
+ ServiceBinding bindingBnull = new ServiceBinding(new ServiceBindingMetadata("B", null), "192.168.0.2", 1);
+ ServiceBinding bindingBnull1 = new ServiceBinding(new ServiceBindingMetadata("B", null), "192.168.0.2", 2);
assertEquals(bindingAA0.hashCode(), bindingAA1.hashCode());
assertEquals(bindingAA0.hashCode(), bindingAA2.hashCode());
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/SimpleServiceBindingValueSourceUnitTestCase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/SimpleServiceBindingValueSourceUnitTestCase.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/SimpleServiceBindingValueSourceUnitTestCase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -24,6 +24,7 @@
import java.net.InetAddress;
+import org.jboss.services.binding.ServiceBinding;
import org.jboss.services.binding.impl.SimpleServiceBindingValueSourceImpl;
/**
@@ -92,7 +93,8 @@
public void testUnknownConfigObject() throws Exception
{
- binding.setServiceBindingValueSourceConfig(new Object());
+ bindingMetadata.setServiceBindingValueSourceConfig(new Object());
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
assertEquals(PORT, testee.getIntServiceBindingValue(binding));
}
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/StringReplacementServiceBindingValueSourceUnitTestCase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/StringReplacementServiceBindingValueSourceUnitTestCase.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/StringReplacementServiceBindingValueSourceUnitTestCase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -26,6 +26,7 @@
import java.beans.PropertyEditorManager;
import java.net.URL;
+import org.jboss.services.binding.ServiceBinding;
import org.jboss.services.binding.impl.StringReplacementServiceBindingValueSourceConfig;
import org.jboss.services.binding.impl.StringReplacementServiceBindingValueSourceImpl;
import org.w3c.dom.Element;
@@ -82,7 +83,8 @@
*/
public void testGetStringServiceBindingValueOverrideMarkers() throws Exception
{
- binding.setServiceBindingValueSourceConfig(config);
+ bindingMetadata.setServiceBindingValueSourceConfig(config);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
assertEquals(OUTPUT, testee.getStringServiceBindingValue(binding, ALT_INPUT));
}
@@ -106,7 +108,8 @@
public void testGetElementServiceBindingValueOverrideMarkers() throws Exception
{
- binding.setServiceBindingValueSourceConfig(config);
+ bindingMetadata.setServiceBindingValueSourceConfig(config);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
elementBindingTest(ALT_ELEMENT_INPUT);
}
@@ -139,7 +142,8 @@
public void testGetResourceServiceBindingValueOverrideMarkers() throws Exception
{
- binding.setServiceBindingValueSourceConfig(config);
+ bindingMetadata.setServiceBindingValueSourceConfig(config);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
resourceBindingTest("alt_input.xml");
}
@@ -172,7 +176,8 @@
public void testGetURLServiceBindingValueOverrideMarkers() throws Exception
{
- binding.setServiceBindingValueSourceConfig(config);
+ bindingMetadata.setServiceBindingValueSourceConfig(config);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
urlBindingTest("alt_input.xml");
}
@@ -228,13 +233,15 @@
public void testGetServiceBindingValueOverrideMarkers() throws Exception
{
- binding.setServiceBindingValueSourceConfig(config);
+ bindingMetadata.setServiceBindingValueSourceConfig(config);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
assertEquals(OUTPUT, testee.getServiceBindingValue(binding, ALT_INPUT));
}
public void testUnknownConfigObject() throws Exception
{
- binding.setServiceBindingValueSourceConfig(new Object());
+ bindingMetadata.setServiceBindingValueSourceConfig(new Object());
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
assertEquals(HOST, testee.getStringServiceBindingValue(binding, null));
}
Modified: trunk/varia/src/tests/org/jboss/test/services/binding/test/XSLTServiceBindingValueSourceUnitTestCase.java
===================================================================
--- trunk/varia/src/tests/org/jboss/test/services/binding/test/XSLTServiceBindingValueSourceUnitTestCase.java 2008-12-01 03:07:05 UTC (rev 81878)
+++ trunk/varia/src/tests/org/jboss/test/services/binding/test/XSLTServiceBindingValueSourceUnitTestCase.java 2008-12-01 04:43:06 UTC (rev 81879)
@@ -24,6 +24,7 @@
import java.net.URL;
+import org.jboss.services.binding.ServiceBinding;
import org.jboss.services.binding.impl.XSLTServiceBindingValueSourceConfig;
import org.jboss.services.binding.impl.XSLTServiceBindingValueSourceImpl;
import org.w3c.dom.Element;
@@ -56,7 +57,8 @@
testee = new XSLTServiceBindingValueSourceImpl();
xsltConfig = getXSLTConfig();
- binding.setServiceBindingValueSourceConfig(xsltConfig);
+ bindingMetadata.setServiceBindingValueSourceConfig(xsltConfig);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
}
/**
@@ -169,7 +171,8 @@
public void testNullConfigObject() throws Exception
{
- binding.setServiceBindingValueSourceConfig(null);
+ bindingMetadata.setServiceBindingValueSourceConfig(null);
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
String input = getFullyQualifiedResourceName("xlst_input.xml");
try
{
@@ -181,7 +184,8 @@
public void testUnknownConfigObject() throws Exception
{
- binding.setServiceBindingValueSourceConfig(new Object());
+ bindingMetadata.setServiceBindingValueSourceConfig(new Object());
+ binding = new ServiceBinding(bindingMetadata, HOST, 0);
String input = getFullyQualifiedResourceName("xlst_input.xml");
try
{
More information about the jboss-cvs-commits
mailing list