/**
  * Set the fill's {@link ExternalGraphic} path.
  *
  * <p>Currently one {@link ExternalGraphic} per {@link Symbolizer} is supported.
  *
  * <p>This is used for polygons.
  *
  * @param externalGraphicPath the path to set.
  * @throws MalformedURLException
  */
 public void setFillExternalGraphicFillPath(String externalGraphicPath)
     throws MalformedURLException {
   Graphic graphic = null;
   PolygonSymbolizerWrapper polygonSymbolizerWrapper = adapt(PolygonSymbolizerWrapper.class);
   if (polygonSymbolizerWrapper != null) {
     graphic = polygonSymbolizerWrapper.getFillGraphicFill();
     if (graphic == null) {
       graphic = sf.createDefaultGraphic();
     }
     polygonSymbolizerWrapper.setFillGraphicFill(graphic);
   } else {
     return;
   }
   graphic.graphicalSymbols().clear();
   String urlStr = externalGraphicPath;
   if (!externalGraphicPath.startsWith("http:") && !externalGraphicPath.startsWith("file:")) {
     urlStr = "file:" + externalGraphicPath;
   }
   if (fillExternalGraphicFill == null) {
     fillExternalGraphicFill =
         sb.createExternalGraphic(new URL(urlStr), getFormat(externalGraphicPath));
   } else {
     setExternalGraphicPath(externalGraphicPath, fillExternalGraphicFill);
   }
   graphic.graphicalSymbols().add(fillExternalGraphicFill);
 }
  /**
   * Set the stroke's {@link ExternalGraphic} path.
   *
   * <p>Currently one {@link ExternalGraphic} per {@link Symbolizer} is supported.
   *
   * <p>This is used for lines.
   *
   * @param externalGraphicPath the path to set.
   * @throws MalformedURLException
   */
  public void setStrokeExternalGraphicStrokePath(String externalGraphicPath)
      throws MalformedURLException {
    if (strokeExternalGraphicStroke == null) {
      Graphic graphic = null;
      LineSymbolizerWrapper lineSymbolizerWrapper = adapt(LineSymbolizerWrapper.class);
      PolygonSymbolizerWrapper polygonSymbolizerWrapper = adapt(PolygonSymbolizerWrapper.class);
      if (lineSymbolizerWrapper != null) {
        graphic = lineSymbolizerWrapper.getStrokeGraphicStroke();
        if (graphic == null) {
          graphic = sb.createGraphic();
          lineSymbolizerWrapper.setStrokeGraphicStroke(graphic);
        }
      } else if (polygonSymbolizerWrapper != null) {
        graphic = polygonSymbolizerWrapper.getStrokeGraphicStroke();
        if (graphic == null) {
          graphic = sb.createGraphic();
          polygonSymbolizerWrapper.setStrokeGraphicStroke(graphic);
        }
      } else {
        return;
      }

      graphic.graphicalSymbols().clear();
      String urlStr = externalGraphicPath;
      if (!externalGraphicPath.startsWith("http:") && !externalGraphicPath.startsWith("file:")) {
        urlStr = "file:" + externalGraphicPath;
      }
      strokeExternalGraphicStroke =
          sb.createExternalGraphic(new URL(urlStr), getFormat(externalGraphicPath));
      graphic.graphicalSymbols().add(strokeExternalGraphicStroke);
    } else {
      setExternalGraphicPath(externalGraphicPath, strokeExternalGraphicStroke);
    }
  }