1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.archetype.source;
20
21 import java.io.File;
22 import java.io.IOException;
23 import java.io.Reader;
24 import java.io.Writer;
25
26 import org.apache.maven.archetype.catalog.ArchetypeCatalog;
27 import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Reader;
28 import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Writer;
29 import org.codehaus.plexus.util.xml.XmlStreamWriter;
30 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33
34
35
36
37 public abstract class CatalogArchetypeDataSource implements ArchetypeDataSource {
38 private static final Logger LOGGER = LoggerFactory.getLogger(CatalogArchetypeDataSource.class);
39
40 protected void writeLocalCatalog(ArchetypeCatalog catalog, File catalogFile) throws ArchetypeDataSourceException {
41 try (Writer writer = new XmlStreamWriter(catalogFile)) {
42 ArchetypeCatalogXpp3Writer catalogWriter = new ArchetypeCatalogXpp3Writer();
43
44 catalogWriter.write(writer, catalog);
45 } catch (IOException e) {
46 throw new ArchetypeDataSourceException("Error writing archetype catalog.", e);
47 }
48 }
49
50 protected ArchetypeCatalog readCatalog(Reader reader) throws ArchetypeDataSourceException {
51 try (Reader catReader = reader) {
52 ArchetypeCatalogXpp3Reader catalogReader = new ArchetypeCatalogXpp3Reader();
53
54 return catalogReader.read(catReader);
55 } catch (IOException e) {
56 throw new ArchetypeDataSourceException("Error reading archetype catalog.", e);
57 } catch (XmlPullParserException e) {
58 throw new ArchetypeDataSourceException("Error parsing archetype catalog.", e);
59 }
60 }
61 }