package org.jflicks.restlet.servercomponent; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.List; import org.jflicks.util.LogUtil; import org.restlet.Component; import org.restlet.Server; import org.restlet.data.Protocol; import org.restlet.util.ServerList; /** * A base ServerComponent implementation available to be extended. * * @author Doug Barnum * @version 3.0 */ public abstract class BaseServerComponent implements ServerComponent { private String id; private Component component; /** * Simple empty constructor. */ public BaseServerComponent() { } /** * {@inheritDoc} */ public String getId() { return (id); } /** * Convenience method to set this property. * * @param s A given property value. */ public void setId(String s) { id = s; } /** * {@inheritDoc} */ public Component getComponent() { return (component); } /** * Convenience method to set this property. * * @param c A given property value. */ public void setComponent(Component c) { component = c; } /** * {@inheritDoc} */ public String getBaseURI() { String result = null; Component c = getComponent(); if (c != null) { ServerList sl = c.getServers(); if ((sl != null) && (sl.size() > 0)) { Server s = sl.get(0); String scheme = "http"; String host = getIPAddressAsString(); int port = s.getPort(); List<Protocol> l = s.getProtocols(); if ((l != null) && (l.size() > 0)) { scheme = l.get(0).getSchemeName(); } result = scheme + "://" + host + ":" + port; } } return (result); } private String getLocalHostname() { String result = "localhost"; try { InetAddress addr = InetAddress.getLocalHost(); result = addr.getHostName(); } catch (UnknownHostException ex) { LogUtil.log(LogUtil.WARNING, ex.getMessage()); } return (result); } private String getIPAddressAsString() { String result = getLocalHostname(); if (result != null) { try { InetAddress addr = InetAddress.getByName(result); byte[] ipAddr = addr.getAddress(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < ipAddr.length; i++) { if (i > 0) { sb.append("."); } sb.append(ipAddr[i] & 0xFF); } result = sb.toString(); } catch (UnknownHostException e) { } } return (result); } }