public String toString() {
   if (isInstantiated()) {
     return "{" + getValue() + "}";
   } else {
     return "{"
         + Helper.getShortClassName(getClass())
         + ": "
         + ToStringLocalization.buildMessage("not_instantiated", (Object[]) null)
         + "}";
   }
 }
  /**
   * INTERNAL: This method perform all necessary steps(verification, pre-build the target directory)
   * prior to the invocation of the weaving function.
   */
  private void preProcess() throws URISyntaxException, MalformedURLException {
    // Instantiate default session log
    AbstractSessionLog.getLog().setLevel(this.logLevel);
    if (logWriter != null) {
      ((DefaultSessionLog) AbstractSessionLog.getLog()).setWriter(logWriter);
    }

    // Make sure the source is existing
    if (!(new File(Helper.toURI(source)).exists())) {
      throw StaticWeaveException.missingSource();
    }

    URI targetURI = Helper.toURI(target);
    // Verification target and source, two use cases create warning or exception.
    // 1. If source is directory and target is jar -
    //   This will lead unknown outcome, user attempt to use this tool to pack outcome into a Jar.
    //   Warning message will be logged, this is can be worked around by other utilities.
    // 2. Both source and target are specified as a same jar -
    //   User was trying to perform weaving in same Jar which is not supported, an Exception will be
    // thrown.
    if (isDirectory(source) && targetURI.toString().endsWith(".jar")) {
      AbstractSessionLog.getLog()
          .log(
              SessionLog.WARNING,
              ToStringLocalization.buildMessage(
                  "staticweave_processor_unknown_outcome", new Object[] {null}));
    }

    if (!isDirectory(source) && target.toString().equals(source.toString())) {
      throw StaticWeaveException.weaveInplaceForJar(source.toString());
    }

    // pre-create target if it is directory and dose not exist.
    // Using the method File.isDirectory() is not enough to determine what the type(dir or jar)
    // of the target(specified by URL)that user want to create. File.isDirectory() will return false
    // in
    // two possibilities, the location either is not directory or the location dose not exist.
    // Therefore pre-build of the directory target is required. Pre-build for the file(JAR) target
    // is not required since it gets built automatically by opening outputstream.
    if (!(new File(targetURI)).exists()) {
      if (!targetURI.toString().endsWith(".jar")) {
        (new File(targetURI)).mkdirs();
        // if directory fails to build, which may leads to unknown outcome since it will
        // be treated as single file in the class StaticWeaveHandler and automatically gets built
        // by outputstream.

        // re-assign URL.
        target = (new File(targetURI)).toURL();
      }
    }
  }
 /** Print the in progress depth. */
 public String toString() {
   Object[] args = {Integer.valueOf(this.commitDepth)};
   return Helper.getShortClassName(getClass())
       + ToStringLocalization.buildMessage("commit_depth", args);
 }