You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by si...@apache.org on 2012/10/28 14:38:26 UTC
svn commit: r1402989 - in /river/jtsk/trunk/src/org/apache/river/config:
LocalHostLookup.java LocalHostLookupProvider.java LocalHostLookupSpi.java
Author: sijskes
Date: Sun Oct 28 13:38:26 2012
New Revision: 1402989
URL: http://svn.apache.org/viewvc?rev=1402989&view=rev
Log:
converted LocalHostLookup to Spi.
Added:
river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupSpi.java
- copied, changed from r1402988, river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupProvider.java
Removed:
river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupProvider.java
Modified:
river/jtsk/trunk/src/org/apache/river/config/LocalHostLookup.java
Modified: river/jtsk/trunk/src/org/apache/river/config/LocalHostLookup.java
URL: http://svn.apache.org/viewvc/river/jtsk/trunk/src/org/apache/river/config/LocalHostLookup.java?rev=1402989&r1=1402988&r2=1402989&view=diff
==============================================================================
--- river/jtsk/trunk/src/org/apache/river/config/LocalHostLookup.java (original)
+++ river/jtsk/trunk/src/org/apache/river/config/LocalHostLookup.java Sun Oct 28 13:38:26 2012
@@ -22,6 +22,8 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.Iterator;
+import java.util.ServiceLoader;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.river.common.Beta;
@@ -34,62 +36,74 @@ public class LocalHostLookup
{
private final static Logger logger = Logger.getLogger(LocalHostLookup.class.getName());
- private static LocalHostLookupProvider provider;
+ private static LocalHostLookupSpi spi = AccessController.doPrivileged(
- public static InetAddress getLocalHost() throws UnknownHostException
+ new PrivilegedAction<LocalHostLookupSpi>()
+ {
+ @Override
+ public LocalHostLookupSpi run()
+ {
+ return initSpi();
+ }
+
+ }
+
+ );
+
+ private static LocalHostLookupSpi initSpi()
{
- return getProvider().getLocalHost();
+ ServiceLoader<LocalHostLookupSpi> loader = ServiceLoader.load(LocalHostLookupSpi.class);
+
+ Iterator<LocalHostLookupSpi> iter = loader.iterator();
+
+ if( iter.hasNext() ) {
+ try {
+ LocalHostLookupSpi firstSpi = iter.next();
+ logger.log(Level.CONFIG, "loaded: {0}", firstSpi);
+ checkForLoopback(firstSpi);
+ return firstSpi ;
+ } catch (Exception e) {
+ logger.log( Level.SEVERE, "error loading LocalHostLookupSpi: {0}", new Object[]{e});
+ throw new Error(e);
+ }
+ }
+
+ final DefaultLocalHostLookupProvider defaultLocalHostLookupProvider = new DefaultLocalHostLookupProvider();
+ checkForLoopback(defaultLocalHostLookupProvider);
+
+ return defaultLocalHostLookupProvider;
}
- public static String getHostName() throws UnknownHostException
+
+
+ public static InetAddress getLocalHost() throws UnknownHostException
{
- return getProvider().getHostName();
+ return spi.getLocalHost();
}
- public static String getHostAddress() throws UnknownHostException
+ public static String getHostName() throws UnknownHostException
{
- return getProvider().getHostAddress();
+ return spi.getHostName();
}
- private static synchronized LocalHostLookupProvider getProvider()
+ public static String getHostAddress() throws UnknownHostException
{
- if( provider == null ) {
- AccessController.doPrivileged( new PrivilegedAction<Object>() {
- @Override
- public Object run()
- {
- setProvider( new DefaultLocalHostLookupProvider() );
- return null; // nothing to return
- }
- });
- }
- return provider ;
+ return spi.getHostAddress();
}
- public static synchronized void setProvider(LocalHostLookupProvider prvdr )
+ private static void checkForLoopback(LocalHostLookupSpi spi)
{
- SecurityManager sm = System.getSecurityManager();
- if (sm != null) {
- sm.checkPermission( new RuntimePermission("setLocalHostLookupProvider") );
- }
-
- if( LocalHostLookup.provider != null ) {
- throw new RuntimeException( "provider already set" );
- }
-
- LocalHostLookup.provider = prvdr ;
-
try {
- if (getLocalHost().isLoopbackAddress()) {
+ if (spi.getLocalHost().isLoopbackAddress()) {
logger.warning("local host is loopback");
}
} catch (UnknownHostException ex) {
- logger.log(Level.WARNING,"",ex);
+ logger.log( Level.SEVERE, "{0} during checkForLoopback", new Object[]{ex} );
}
}
- static class DefaultLocalHostLookupProvider
- implements LocalHostLookupProvider
+ static class DefaultLocalHostLookupProvider
+ extends LocalHostLookupSpi
{
@Override
@@ -109,9 +123,9 @@ public class LocalHostLookup
{
return InetAddress.getLocalHost().getHostAddress();
}
-
+
}
-
+
private LocalHostLookup()
{
}
Copied: river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupSpi.java (from r1402988, river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupProvider.java)
URL: http://svn.apache.org/viewvc/river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupSpi.java?p2=river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupSpi.java&p1=river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupProvider.java&r1=1402988&r2=1402989&rev=1402989&view=diff
==============================================================================
--- river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupProvider.java (original)
+++ river/jtsk/trunk/src/org/apache/river/config/LocalHostLookupSpi.java Sun Oct 28 13:38:26 2012
@@ -26,12 +26,12 @@ import org.apache.river.common.Beta;
* Provides a pluggable provider for LocalHostLookup.
*/
@Beta
-public interface LocalHostLookupProvider
+public abstract class LocalHostLookupSpi
{
- public InetAddress getLocalHost() throws UnknownHostException ;
+ public abstract InetAddress getLocalHost() throws UnknownHostException ;
- public String getHostName() throws UnknownHostException ;
+ public abstract String getHostName() throws UnknownHostException ;
- public String getHostAddress() throws UnknownHostException ;
+ public abstract String getHostAddress() throws UnknownHostException ;
}