View Javadoc
1   package org.apache.maven.shared.filtering;
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 org.apache.maven.execution.MavenSession;
23  import org.apache.maven.project.MavenProject;
24  import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;
25  
26  import javax.annotation.Nonnull;
27  import java.io.Reader;
28  import java.util.Collections;
29  import java.util.List;
30  
31  /**
32   * @author Kristian Rosenvold
33   * @plexus.component role="org.apache.maven.shared.filtering.MavenReaderFilter"
34   * role-hint="default"
35   */
36  public class DefaultMavenReaderFilter
37      extends BaseFilter
38      implements MavenReaderFilter
39  {
40      @Nonnull
41      public Reader filter( @Nonnull Reader from, boolean filtering, MavenProject mavenProject, List<String> filters,
42                            boolean escapedBackslashesInFilePath, MavenSession mavenSession )
43          throws MavenFilteringException
44      {
45          MavenResourcesExecution mre = new MavenResourcesExecution();
46          mre.setMavenProject( mavenProject );
47          mre.setFileFilters( filters );
48          mre.setEscapeWindowsPaths( escapedBackslashesInFilePath );
49          mre.setMavenSession( mavenSession );
50          mre.setInjectProjectBuildFilters( true );
51  
52          List<FilterWrapper> filterWrappers = getDefaultFilterWrappers( mre );
53          return filter( from, filtering, filterWrappers );
54      }
55  
56  
57      @Nonnull public Reader filter( @Nonnull MavenReaderFilterRequest mavenFileFilterRequest )
58          throws MavenFilteringException
59      {
60          List<FilterWrapper> filterWrappers = getDefaultFilterWrappers( mavenFileFilterRequest );
61          return filter( mavenFileFilterRequest.getFrom(), mavenFileFilterRequest.isFiltering(), filterWrappers );
62      }
63  
64  
65      @SuppressWarnings( "unchecked" )
66      public @Nonnull Reader filter( @Nonnull Reader from, boolean filtering, @Nonnull List<FilterWrapper> filterWrappers )
67      {
68          return filterWrap( from, filtering ? filterWrappers : Collections.<FilterWrapper>emptyList() );
69      }
70  
71  
72      private static @Nonnull Reader filterWrap( @Nonnull Reader from, @Nonnull Iterable<FilterWrapper> wrappers )
73      {
74          Reader reader = from;
75          for ( FilterWrapper wrapper : wrappers )
76          {
77              reader = wrapper.getReader( reader );
78          }
79          return reader;
80      }
81  
82  
83  }