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