title: Camel adviceWith behaves differently when changing the order of weave statements
body: <p>I have the following route for demo purposes</p>
  
  <pre><code>from("direct:external")
      .routeId("external")
      .to("http4://www.third-party.com/foo").id("ext");
  </code></pre>
  
  <p>For testing, I would like to
  * replace the http4: endpoint with a direct: endpoint
  * add a mock: endpoint at the end of the route for verification</p>
  
  <p>I've added the following adviceWithRouteBuilder</p>
  
  <pre><code>context.getRouteDefinition("external").adviceWith(context, new AdviceWithRouteBuilder() {
      @Override
      public void configure() throws Exception {
          weaveAddLast().to("mock:result");
          weaveByToUri(".*http4://.*")
              .replace()
              .to("direct:foo");
      }
  });
  </code></pre>
  
  <p>This one seems to work but if I change the order of the <code>weave*</code> statements, like so </p>
  
  <pre><code>public void configure() throws Exception {
      weaveByToUri(".*http4://.*")
          .replace()
          .to("direct:foo");
      weaveAddLast().to("mock:result");
  }
  </code></pre>
  
  <p>It gives me the following error</p>
  
  <blockquote>
    <p>java.lang.IllegalArgumentException: There are no outputs which matches: * in the route: Route(external)[[From[direct:external]] -> [pipeline -> [[To[direct:foo]]]]]</p>
  </blockquote>
  
  <p>I would actually expect to get the same result, independent of the order.</p>