1 package org.apache.maven.scm.provider.local.metadata;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.scm.provider.local.metadata.io.xpp3.LocalScmMetadataXpp3Reader;
23 import org.apache.maven.scm.provider.local.metadata.io.xpp3.LocalScmMetadataXpp3Writer;
24 import org.codehaus.plexus.util.FileUtils;
25 import org.codehaus.plexus.util.IOUtil;
26 import org.codehaus.plexus.util.ReaderFactory;
27 import org.codehaus.plexus.util.WriterFactory;
28 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32 import java.io.File;
33 import java.io.IOException;
34 import java.io.Reader;
35 import java.io.Writer;
36 import java.util.List;
37
38
39
40
41
42
43
44 public class LocalScmMetadataUtils
45 {
46
47
48
49 public static final String FILENAME = ".maven-scm-local";
50
51 private static final Logger LOGGER = LoggerFactory.getLogger( LocalScmMetadataUtils.class );
52
53
54
55
56
57
58
59
60 public LocalScmMetadata buildMetadata( File repository )
61 throws IOException
62 {
63 @SuppressWarnings( "unchecked" )
64 List<String> repoFilenames = FileUtils.getFileNames( repository.getAbsoluteFile(), "**", null, false );
65 LocalScmMetadata metadata = new LocalScmMetadata();
66 metadata.setRepositoryFileNames( repoFilenames );
67 return metadata;
68 }
69
70
71
72
73
74
75
76
77 public void writeMetadata( File destinationDir, LocalScmMetadata metadata )
78 throws IOException
79 {
80 File metadataFile = new File( destinationDir, FILENAME );
81 metadataFile.createNewFile();
82 Writer writer = WriterFactory.newXmlWriter( metadataFile );
83 try
84 {
85 new LocalScmMetadataXpp3Writer().write( writer, metadata );
86 }
87 finally
88 {
89 IOUtil.close( writer );
90 }
91 }
92
93
94
95
96
97
98
99 public LocalScmMetadata readMetadata( File dir )
100 {
101 File metadataFile = new File( dir, FILENAME );
102 if ( !metadataFile.exists() )
103 {
104 return null;
105 }
106 LocalScmMetadata result = null;
107 Reader reader = null;
108 try
109 {
110 reader = ReaderFactory.newXmlReader( metadataFile );
111 result = new LocalScmMetadataXpp3Reader().read( reader );
112 }
113 catch ( XmlPullParserException e )
114 {
115 if ( LOGGER.isWarnEnabled() )
116 {
117 LOGGER.warn( "Could not interpret .maven-scm-local - ignoring", e );
118 }
119 return null;
120 }
121 catch ( IOException e )
122 {
123 if ( LOGGER.isWarnEnabled() )
124 {
125 LOGGER.warn( "Could not Read .maven-scm-local - ignoring", e );
126 }
127 }
128 finally
129 {
130 IOUtil.close( reader );
131 }
132 return result;
133 }
134
135 }