Author: wjaniszewski
Date: Sun Aug 3 13:03:45 2008
New Revision: 682203
URL: http://svn.apache.org/viewvc?rev=682203&view=rev
Log:
In <binding.corba> added configuration option to allow creating name
server by Tuscany, new test scenario in itest/corba.
Added:
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFiveTestCase.java
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFive.java
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveComponent.java
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveImpl.java
tuscany/java/sca/itest/corba/src/test/resources/ScenarioFive.composite
tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/util/SocketUtil.java
(with props)
Removed:
tuscany/java/sca/modules/binding-sca-corba/src/main/java/org/apache/tuscany/sca/binding/sca/corba/impl/SocketUtil.java
Modified:
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFourTestCase.java
tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaServiceBindingProvider.java
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/CorbaBinding.java
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingImpl.java
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingProcessor.java
tuscany/java/sca/modules/binding-sca-corba/src/main/java/org/apache/tuscany/sca/binding/sca/corba/impl/CorbaSCAServiceBindingProvider.java
Added:
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFiveTestCase.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFiveTestCase.java?rev=682203&view=auto
==============================================================================
---
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFiveTestCase.java
(added)
+++
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFiveTestCase.java
Sun Aug 3 13:03:45 2008
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.test.corba;
+
+import static org.junit.Assert.fail;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.corba.types.ScenarioFive;
+import org.apache.tuscany.sca.test.corba.types.ScenarioFiveComponent;
+import org.junit.Test;
+
+/**
+ * Tests usage of "provideNameServer" attribute in <binding.corba>
+ */
+public class ScenarioFiveTestCase {
+
+ /**
+ * Tests binding with provided name server
+ */
+ @Test
+ public void test_providedNameServer() {
+ try {
+ // just make sure we can obtain and use the reference with
success
+ SCADomain domain =
SCADomain.newInstance("ScenarioFive.composite");
+ ScenarioFive scenarioFive =
+ domain.getService(ScenarioFiveComponent.class,
"ScenarioFive").getScenarioFive();
+ scenarioFive.doNothing();
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+}
Modified:
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFourTestCase.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFourTestCase.java?rev=682203&r1=682202&r2=682203&view=diff
==============================================================================
---
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFourTestCase.java
(original)
+++
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFourTestCase.java
Sun Aug 3 13:03:45 2008
@@ -34,7 +34,6 @@
import org.junit.BeforeClass;
import org.junit.Test;
-
/**
* Tests SCA default binding over CORBA binding
*/
@@ -85,7 +84,7 @@
Assert.fail(e.getMessage());
}
}
-
+
/**
* Test for JAXB exceptions
*/
@@ -101,7 +100,7 @@
fail();
}
}
-
+
/**
* General test for passing SDO objects
*/
@@ -112,20 +111,22 @@
scenarioFourSdo.setMessage("Test1");
scenarioFourSdo.setSymbol("Test2");
ScenarioFourSdo result =
scenarioFour.passScenarioFourStruct(scenarioFourSdo);
-
assertTrue(scenarioFourSdo.getMessage().equals(result.getMessage()) &&
scenarioFourSdo.getSymbol().equals(result.getSymbol()));
+
assertTrue(scenarioFourSdo.getMessage().equals(result.getMessage()) &&
scenarioFourSdo.getSymbol()
+ .equals(result.getSymbol()));
} catch (Exception e) {
e.printStackTrace();
fail();
}
}
-
+
/**
- * Tests reusing local name server with multiple bindings
+ * Tests reusing local name server with multiple bindings
*/
@Test
public void test_nameServerReuse() {
try {
- ScenarioFour scenarioFour =
domain.getService(ScenarioFourComponent.class,
"ScenarioFourReuse").getScenarioFour();
+ ScenarioFour scenarioFour =
+ domain.getService(ScenarioFourComponent.class,
"ScenarioFourReuse").getScenarioFour();
ScenarioFourStruct struct = new ScenarioFourStruct();
scenarioFour.setStruct(struct);
} catch (Exception e) {
Added:
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFive.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFive.java?rev=682203&view=auto
==============================================================================
---
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFive.java
(added)
+++
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFive.java
Sun Aug 3 13:03:45 2008
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.test.corba.types;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * Operations for scenario five
+ */
[EMAIL PROTECTED]
+public interface ScenarioFive {
+
+ void doNothing();
+
+}
Added:
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveComponent.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveComponent.java?rev=682203&view=auto
==============================================================================
---
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveComponent.java
(added)
+++
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveComponent.java
Sun Aug 3 13:03:45 2008
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.test.corba.types;
+
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * Component for obtaining ScenarioFive reference
+ */
+public class ScenarioFiveComponent {
+
+ private ScenarioFive scenarioFive;
+
+ @Reference
+ public void setScenarioFive(ScenarioFive scenarioFive) {
+ this.scenarioFive = scenarioFive;
+ }
+
+ public ScenarioFive getScenarioFive() {
+ return scenarioFive;
+ }
+
+}
Added:
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveImpl.java?rev=682203&view=auto
==============================================================================
---
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveImpl.java
(added)
+++
tuscany/java/sca/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveImpl.java
Sun Aug 3 13:03:45 2008
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.test.corba.types;
+
+/**
+ * Implementation of ScenarioFive service
+ */
+public class ScenarioFiveImpl implements ScenarioFive {
+
+ public void doNothing() {
+ // does nothing
+ }
+
+}
Added:
tuscany/java/sca/itest/corba/src/test/resources/ScenarioFive.composite
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/corba/src/test/resources/ScenarioFive.composite?rev=682203&view=auto
==============================================================================
--- tuscany/java/sca/itest/corba/src/test/resources/ScenarioFive.composite
(added)
+++ tuscany/java/sca/itest/corba/src/test/resources/ScenarioFive.composite
Sun Aug 3 13:03:45 2008
@@ -0,0 +1,41 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://sample"
+ xmlns:sample="http://sample"
+ name="Corba">
+
+ <component name="ScenarioFiveService">
+ <implementation.java
class="org.apache.tuscany.sca.test.corba.types.ScenarioFiveImpl" />
+ </component>
+ <service name="ScenarioFive" promote="ScenarioFiveService">
+ <interface.java
interface="org.apache.tuscany.sca.test.corba.types.ScenarioFive"/>
+ <binding.sca uri="corbaname::localhost:5090#ScenarioFive"/>
+ </service>
+
+ <component name="ScenarioFive">
+ <implementation.java
class="org.apache.tuscany.sca.test.corba.types.ScenarioFiveComponent" />
+ <reference name="scenarioFive">
+ <binding.sca uri="corbaname::localhost:5090#ScenarioFive"/>
+ </reference>
+ </component>
+
+</composite>
Modified:
tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaServiceBindingProvider.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaServiceBindingProvider.java?rev=682203&r1=682202&r2=682203&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaServiceBindingProvider.java
(original)
+++
tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaServiceBindingProvider.java
Sun Aug 3 13:03:45 2008
@@ -24,7 +24,9 @@
import org.apache.tuscany.sca.binding.corba.impl.service.DynaCorbaServant;
import org.apache.tuscany.sca.binding.corba.impl.service.InvocationProxy;
import org.apache.tuscany.sca.binding.corba.impl.types.util.Utils;
+import org.apache.tuscany.sca.binding.corba.impl.util.SocketUtil;
import org.apache.tuscany.sca.host.corba.CorbaHost;
+import org.apache.tuscany.sca.host.corba.CorbanameURL;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
import org.apache.tuscany.sca.provider.ServiceBindingProvider;
@@ -40,11 +42,20 @@
private CorbaHost host;
private RuntimeComponentService service;
private DynaCorbaServant servant;
+ private boolean isLocalhost;
+ private int port;
public CorbaServiceBindingProvider(CorbaBinding binding, CorbaHost
host, RuntimeComponentService service) {
this.binding = binding;
this.host = host;
this.service = service;
+ if (binding.isProvideNameServer()) {
+ CorbanameURL details = new
CorbanameURL(binding.getCorbaname());
+ isLocalhost = SocketUtil.isLocalhost(details.getHost());
+ if (isLocalhost) {
+ port = details.getPort();
+ }
+ }
}
/**
@@ -63,6 +74,9 @@
InvocationProxy proxy = new ComponentInvocationProxy(service,
service.getRuntimeWire(binding), javaClass);
servant = new DynaCorbaServant(proxy,
Utils.getTypeId(javaClass));
servant.setIds(new String[] {binding.getId()});
+ if (binding.isProvideNameServer() && isLocalhost) {
+ host.createLocalNameServer(port);
+ }
host.registerServant(binding.getCorbaname(), servant);
} catch (Exception e) {
throw new ServiceRuntimeException(e);
@@ -75,6 +89,9 @@
*/
public void stop() {
try {
+ if (binding.isProvideNameServer() && isLocalhost) {
+ host.releaseLocalNameServer(port);
+ }
host.unregisterServant(binding.getCorbaname());
} catch (Exception e) {
throw new ServiceRuntimeException(e);
Added:
tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/util/SocketUtil.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/util/SocketUtil.java?rev=682203&view=auto
==============================================================================
---
tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/util/SocketUtil.java
(added)
+++
tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/util/SocketUtil.java
Sun Aug 3 13:03:45 2008
@@ -0,0 +1,225 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.binding.corba.impl.util;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.UnknownHostException;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Class partially copied from eclipse wst project
+ *
(http://repo1.maven.org/maven2/org/eclipse/wst/server/core/1.0.205-v20070829b/).
+ * Finally we should use jar from maven dependency. Problem described in
+ *
http://www.fornax-platform.org/cp/display/fornax/2.+Hello+World+Tutorial+(CSC)?replyToComment=2098#comment-2098
+ * needs to be fixed.
+ */
+public class SocketUtil {
+
+ protected static final Object lock = new Object();
+
+ private static Set<String> localHostCache;
+ private static Set<String> notLocalHostCache = new HashSet<String>();
+ private static Map<String, CacheThread> threadMap = new
HashMap<String, CacheThread>();
+
+ private static Set<InetAddress> addressCache;
+
+ static class CacheThread extends Thread {
+ private Set<InetAddress> currentAddresses;
+ private Set<String> addressList;
+ private String host;
+ private Set<String> nonAddressList;
+ private Map threadMap2;
+
+ public CacheThread(String host,
+ Set<InetAddress> currentAddresses,
+ Set<String> addressList,
+ Set<String> nonAddressList,
+ Map threadMap2) {
+ super("Caching localhost information");
+ this.host = host;
+ this.currentAddresses = currentAddresses;
+ this.addressList = addressList;
+ this.nonAddressList = nonAddressList;
+ this.threadMap2 = threadMap2;
+ }
+
+ public void run() {
+ if (currentAddresses != null) {
+ Iterator iter2 = currentAddresses.iterator();
+ while (iter2.hasNext()) {
+ InetAddress addr = (InetAddress)iter2.next();
+ String hostname = addr.getHostName();
+ String hostname2 = addr.getCanonicalHostName();
+ synchronized (lock) {
+ if (hostname != null &&
!addressList.contains(hostname))
+ addressList.add(hostname);
+ if (hostname2 != null &&
!addressList.contains(hostname2))
+ addressList.add(hostname2);
+ }
+ }
+ }
+
+ try {
+ InetAddress[] addrs = InetAddress.getAllByName(host);
+ int length = addrs.length;
+ for (int j = 0; j < length; j++) {
+ InetAddress addr = addrs[0];
+ String hostname = addr.getHostName();
+ String hostname2 = addr.getCanonicalHostName();
+ synchronized (lock) {
+ if (addr.isLoopbackAddress()) {
+ if (hostname != null &&
!addressList.contains(hostname))
+ addressList.add(hostname);
+ if (hostname2 != null &&
!addressList.contains(hostname2))
+ addressList.add(hostname2);
+ } else {
+ if (hostname != null &&
!nonAddressList.contains(hostname))
+ nonAddressList.add(hostname);
+ if (hostname2 != null &&
!nonAddressList.contains(hostname2))
+ nonAddressList.add(hostname2);
+ }
+ }
+ }
+ } catch (UnknownHostException e) {
+ synchronized (lock) {
+ if (host != null && !nonAddressList.contains(host))
+ nonAddressList.add(host);
+ }
+ }
+ synchronized (lock) {
+ threadMap2.remove(host);
+ }
+ }
+ }
+
+ public static boolean isLocalhost(final String host) {
+ if (host == null || host.equals(""))
+ return false;
+
+ if ("localhost".equals(host) || "127.0.0.1".equals(host))
+ return true;
+
+ // check simple cases
+ try {
+ InetAddress localHostaddr = InetAddress.getLocalHost();
+ if (localHostaddr.getHostName().equals(host) ||
host.equals(localHostaddr.getCanonicalHostName())
+ || localHostaddr.getHostAddress().equals(host))
+ return true;
+ } catch (Exception e) {
+
+ }
+
+ // check for current thread and wait if necessary
+ boolean currentThread = false;
+ try {
+ Thread t = null;
+ synchronized (lock) {
+ t = threadMap.get(host);
+ }
+ if (t != null && t.isAlive()) {
+ currentThread = true;
+ t.join(30);
+ }
+ } catch (Exception e) {
+
+ }
+
+ // check if cache is still ok
+ boolean refreshedCache = false;
+ try {
+ // get network interfaces
+ final Set<InetAddress> currentAddresses = new
HashSet<InetAddress>();
+ currentAddresses.add(InetAddress.getLocalHost());
+ Enumeration nis = NetworkInterface.getNetworkInterfaces();
+ while (nis.hasMoreElements()) {
+ NetworkInterface inter =
(NetworkInterface)nis.nextElement();
+ Enumeration<InetAddress> ias = inter.getInetAddresses();
+ while (ias.hasMoreElements())
+ currentAddresses.add(ias.nextElement());
+ }
+
+ // check if cache is empty or old and refill it if necessary
+ if (addressCache == null ||
!addressCache.containsAll(currentAddresses)
+ || !currentAddresses.containsAll(addressCache)) {
+ CacheThread cacheThread = null;
+ refreshedCache = true;
+
+ synchronized (lock) {
+ addressCache = currentAddresses;
+ notLocalHostCache = new HashSet<String>();
+ localHostCache = new
HashSet<String>(currentAddresses.size() * 3);
+
+ Iterator iter = currentAddresses.iterator();
+ while (iter.hasNext()) {
+ InetAddress addr = (InetAddress)iter.next();
+ String a = addr.getHostAddress();
+ if (a != null && !localHostCache.contains(a))
+ localHostCache.add(a);
+ }
+
+ cacheThread = new CacheThread(host, currentAddresses,
localHostCache, notLocalHostCache, threadMap);
+ threadMap.put(host, cacheThread);
+ cacheThread.setDaemon(true);
+ cacheThread.setPriority(Thread.NORM_PRIORITY - 1);
+ cacheThread.start();
+ }
+ cacheThread.join(200);
+ }
+ } catch (Exception e) {
+ }
+
+ synchronized (lock) {
+ if (localHostCache.contains(host))
+ return true;
+ if (notLocalHostCache.contains(host))
+ return false;
+ }
+
+ // if the cache hasn't been cleared, maybe we still need to
lookup the
+ // host
+ if (!refreshedCache && !currentThread) {
+ try {
+ CacheThread cacheThread = null;
+ synchronized (lock) {
+ cacheThread = new CacheThread(host, null,
localHostCache, notLocalHostCache, threadMap);
+ threadMap.put(host, cacheThread);
+ cacheThread.setDaemon(true);
+ cacheThread.setPriority(Thread.NORM_PRIORITY - 1);
+ cacheThread.start();
+ }
+ cacheThread.join(75);
+
+ synchronized (lock) {
+ if (localHostCache.contains(host))
+ return true;
+ }
+ } catch (Exception e) {
+ }
+ }
+ return false;
+ }
+
+}
Propchange:
tuscany/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/util/SocketUtil.java
------------------------------------------------------------------------------
svn:executable = *
Modified:
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/CorbaBinding.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/CorbaBinding.java?rev=682203&r1=682202&r2=682203&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/CorbaBinding.java
(original)
+++
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/CorbaBinding.java
Sun Aug 3 13:03:45 2008
@@ -43,4 +43,8 @@
void setId(String id);
String getCorbaname();
+
+ boolean isProvideNameServer();
+
+ void setProvideNameServer(boolean provideNameServer);
}
Modified:
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingImpl.java?rev=682203&r1=682202&r2=682203&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingImpl.java
(original)
+++
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingImpl.java
Sun Aug 3 13:03:45 2008
@@ -38,7 +38,8 @@
private String host;
private int port;
private String id;
-
+ private boolean provideNameServer;
+
private List<Intent> requiredIntents = new ArrayList<Intent>();
private List<PolicySet> policySets = new ArrayList<PolicySet>();
private IntentAttachPointType intentAttachPointType;
@@ -129,4 +130,12 @@
return CorbaHostUtils.isValidCorbanameURI(getURI()) ? getURI():
CorbaHostUtils.createCorbanameURI(getHost(), getPort(), getName());
}
+ public boolean isProvideNameServer() {
+ return provideNameServer;
+ }
+
+ public void setProvideNameServer(boolean provideNameServer) {
+ this.provideNameServer = provideNameServer;
+ }
+
}
Modified:
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingProcessor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingProcessor.java?rev=682203&r1=682202&r2=682203&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingProcessor.java
(original)
+++
tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaBindingProcessor.java
Sun Aug 3 13:03:45 2008
@@ -80,11 +80,16 @@
if (uri != null) {
binding.setURI(uri);
}
+
// Read CORBA id
String id = reader.getAttributeValue(null, "id");
if (id != null) {
binding.setId(id);
}
+
+ // Read name server request
+ String provideNameServer = reader.getAttributeValue(null,
"provideNameServer");
+ binding.setProvideNameServer("true".equals(provideNameServer) ?
true : false);
return binding;
}
@@ -114,7 +119,10 @@
if (model.getId() != null) {
writer.writeAttribute("id", model.getId());
}
-
+
+ if (model.isProvideNameServer()) {
+ writer.writeAttribute("provideNameServer", "true");
+ }
writer.writeEndElement();
}
Modified:
tuscany/java/sca/modules/binding-sca-corba/src/main/java/org/apache/tuscany/sca/binding/sca/corba/impl/CorbaSCAServiceBindingProvider.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-sca-corba/src/main/java/org/apache/tuscany/sca/binding/sca/corba/impl/CorbaSCAServiceBindingProvider.java?rev=682203&r1=682202&r2=682203&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-sca-corba/src/main/java/org/apache/tuscany/sca/binding/sca/corba/impl/CorbaSCAServiceBindingProvider.java
(original)
+++
tuscany/java/sca/modules/binding-sca-corba/src/main/java/org/apache/tuscany/sca/binding/sca/corba/impl/CorbaSCAServiceBindingProvider.java
Sun Aug 3 13:03:45 2008
@@ -23,6 +23,7 @@
import org.apache.tuscany.sca.assembly.SCABinding;
import org.apache.tuscany.sca.binding.corba.impl.service.DynaCorbaServant;
import org.apache.tuscany.sca.binding.corba.impl.service.InvocationProxy;
+import org.apache.tuscany.sca.binding.corba.impl.util.SocketUtil;
import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator;