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