1 package org.apache.maven.plugins.assembly.filter;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.nio.file.Paths;
23
24 import org.codehaus.plexus.component.annotations.Component;
25 import org.codehaus.plexus.components.io.fileselectors.FileInfo;
26
27
28
29
30 @Component( role = ContainerDescriptorHandler.class, hint = "metaInf-services", instantiationStrategy = "per-lookup" )
31 public class MetaInfServicesHandler
32 extends AbstractLineAggregatingHandler
33 {
34
35 private static final String SERVICES_PATH_PREFIX = "META-INF/services/";
36
37 @Override
38 protected String getOutputPathPrefix( final FileInfo fileInfo )
39 {
40 return Paths.get( fileInfo.getName() ).getParent().toString() + "/";
41 }
42
43 @Override
44 protected boolean fileMatches( final FileInfo fileInfo )
45 {
46 final String path = fileInfo.getName();
47
48 String leftover = null;
49 if ( path.startsWith( SERVICES_PATH_PREFIX ) )
50 {
51 leftover = path.substring( SERVICES_PATH_PREFIX.length() );
52 }
53 else if ( path.startsWith( "/META-INF/services/" ) )
54 {
55 leftover = path.substring( SERVICES_PATH_PREFIX.length() - 1 );
56 }
57
58 return leftover != null && leftover.length() > 0;
59 }
60
61 }