Esempio n. 1
0
  /**
   * @param deviceDef
   * @param maxAge
   * @param vendorFirmware
   * @param discoveryUSN
   * @param discoveryUDN
   * @return a new {@link RootDevice}, or <code>null</code>
   */
  public static RootDevice build(
      String myIP,
      URL deviceDef,
      String maxAge,
      String vendorFirmware,
      String discoveryUSN,
      String discoveryUDN) {
    Document xml = XMLUtil.getXML(deviceDef);

    URL baseURL = null;

    try {
      String base = XMLUtil.xpath.evaluate("/root/URLBase", xml);

      try {
        if (base != null && base.trim().length() > 0) {
          baseURL = new URL(base);
        }
      } catch (MalformedURLException malformedEx) {
        // crappy urlbase provided
        // log.warn( "Error occured during device baseURL " + base
        // + " parsing, building it from device default location",
        // malformedEx );
        malformedEx.printStackTrace();
      }

      if (baseURL == null) {
        String URL =
            deviceDef.getProtocol() + "://" + deviceDef.getHost() + ":" + deviceDef.getPort();
        String path = deviceDef.getPath();
        if (path != null) {
          int lastSlash = path.lastIndexOf('/');
          if (lastSlash != -1) {
            URL += path.substring(0, lastSlash);
          }
        }
        try {
          baseURL = new URL(URL);
        } catch (MalformedURLException e) {
          e.printStackTrace();
        }
      }

      return new RootDevice(
          myIP, xml, baseURL, maxAge, deviceDef, vendorFirmware, discoveryUSN, discoveryUDN);
    } catch (XPathExpressionException e) {
      e.printStackTrace();
    }

    return null;
  }