Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  
  package org.eclipse.virgo.nano.config.internal;
  
  
 import  org.osgi.service.cm.Configuration;
 import  org.osgi.service.cm.ConfigurationAdmin;
 import  org.osgi.service.cm.ConfigurationException;
 import  org.osgi.service.cm.ManagedService;
This class reads the merged shell configuration and registers it separated in the

Link:
ConfigurationAdmin).

Concurrent Semantics
Thread-safe.

 
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     private final BundleContext context;
 
     private final ConfigurationAdmin configAdmin;
 
     private ServiceRegistration<ManagedService> configuratorRegistration;
 
     private static final String CONSOLE_PID = "osgi.console";
 
     private static final String TELNET_PID = "osgi.console.telnet";
 
     private static final String SSH_PID = "osgi.console.ssh";
 
     private static final String TELNET_PORT = "telnet.port";
 
     private static final String TELNET_HOST = "telnet.host";
 
     private static final String TELNET_ENABLED = "telnet.enabled";
 
     private static final String SSH_PORT = "ssh.port";
 
     private static final String SSH_HOST = "ssh.host";
 
     private static final String SSH_ENABLED = "ssh.enabled";
 
     private static final String HOST = "host";
 
     private static final String PORT = "port";
 
     private static final String ENABLED = "enabled";
     
     private static final String TELNET_SERVICE = "telnet";
     
     private static final String SSH_SERVICE = "ssh";
     
     private static final Object monitor = new Object();
 
     ConsoleConfigurationConvertor(BundleContext context, ConfigurationAdmin configAdmin) {
         this. = context;
         this. = configAdmin;
     }
 
     public void start() {
         Dictionary<StringStringconsoleProperties = new Hashtable<StringString>();
         consoleProperties.put(.);
         synchronized (.) {
             this. = this..registerService(ManagedService.classnew ConsoleConfigurator(), consoleProperties);
         }
     }
 
     private void updateConfiguration(String pidString hostString portString enabled) {
     	boolean isPortAvailable;
     	if (pid.contains()) {
     		isPortAvailable = checkPortAvailability(portenabled);
     	} else {
     		isPortAvailable = checkPortAvailability(portenabled);
     	}
     	
     	if(!isPortAvailable) {
     		return;
     	}
     	
         try {
             Configuration configuration = this..getConfiguration(pidnull);
             Dictionary<StringStringproperties = new Hashtable<StringString>();
             properties.put(host);
             properties.put(port);
             properties.put(enabled);
             configuration.update(properties);
        } catch (IOException e) {
            String message = String.format("Unable to update configuration with pid '%s'"pid);
            this..error(messagee);
        }
    }
    
    public void stop() {
    }
    private void deleteConfiguration(String pid) {
        try {
  			Configuration configuration = .getConfiguration(pidnull);
			configuration.delete();
    	} catch (IOException e) {
			String message = String.format("Unable to delete configuration with pid: " + pid);
            this..error(messagee);
		}
    }
    
    private boolean checkPortAvailability(String portStrString enabledString service) {
    	if ("false".equalsIgnoreCase(enabled)) {
    		return true;
    	}
    	int port = Integer.parseInt(portStr);
    	ServerSocket socket = null;
    	try {
    		socket = new ServerSocket(port);
    		return true;
    	} catch (BindException e) {
    		String message = "Port " + port + " already in use; " + service + " access to console will not be available";
    		this..error(messagee);
    	} catch (IOException e) {
			// do nothing
finally {
    		if (socket != null) {
    			try {
					socket.close();
catch (IOException e) {
					// do nothing
				}
    		}
    	}
    	return false;
    }
    class ConsoleConfigurator implements ManagedService {
        private Dictionary<String,Stringproperties;
        @SuppressWarnings("unchecked")
        public void updated(Dictionary propsthrows ConfigurationException {
            if (props != null) {
                this. = props;
                this..put(.);
            } else {
                return;
            }
            synchronized (.) {
                ConsoleConfigurationConvertor.this..setProperties(this.);
            }
            String telnetHost = this..get();
            String telnetPort = this..get();
            String telnetEnabled = this..get();
            updateConfiguration(telnetHosttelnetPorttelnetEnabled);
            String sshHost = this..get();
            String sshPort = this..get();
            String sshEnabled = this..get();
            updateConfiguration(sshHostsshPortsshEnabled);
        }
    }
New to GrepCode? Check out our FAQ X