View Javadoc
1   package org.apache.maven.model.interpolation;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.util.HashSet;
23  import java.util.Set;
24  
25  import org.apache.maven.model.path.UrlNormalizer;
26  import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
27  
28  /**
29   * Ensures that expressions referring to URLs evaluate to normalized URLs.
30   *
31   * @author Benjamin Bentmann
32   */
33  class UrlNormalizingPostProcessor
34      implements InterpolationPostProcessor
35  {
36  
37      private static final Set<String> URL_EXPRESSIONS;
38  
39      static
40      {
41          Set<String> expressions = new HashSet<>();
42          expressions.add( "project.url" );
43          expressions.add( "project.scm.url" );
44          expressions.add( "project.scm.connection" );
45          expressions.add( "project.scm.developerConnection" );
46          expressions.add( "project.distributionManagement.site.url" );
47  
48          URL_EXPRESSIONS = expressions;
49      }
50  
51      private UrlNormalizer normalizer;
52  
53      UrlNormalizingPostProcessor( UrlNormalizer normalizer )
54      {
55          this.normalizer = normalizer;
56      }
57  
58      @Override
59      public Object execute( String expression, Object value )
60      {
61          if ( value != null && URL_EXPRESSIONS.contains( expression ) )
62          {
63              return normalizer.normalize( value.toString() );
64          }
65  
66          return null;
67      }
68  
69  }