1 package org.apache.continuum.buildagent.configuration;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.continuum.buildagent.model.ContinuumBuildAgentConfigurationModel;
23 import org.apache.continuum.buildagent.model.io.xpp3.ContinuumBuildAgentConfigurationModelXpp3Reader;
24 import org.apache.continuum.buildagent.model.io.xpp3.ContinuumBuildAgentConfigurationModelXpp3Writer;
25 import org.codehaus.plexus.util.IOUtil;
26 import org.codehaus.plexus.util.StringUtils;
27 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31 import java.io.File;
32 import java.io.FileInputStream;
33 import java.io.FileWriter;
34 import java.io.IOException;
35 import java.io.InputStreamReader;
36
37 public class DefaultBuildAgentConfiguration
38 implements BuildAgentConfiguration
39 {
40 private static final Logger log = LoggerFactory.getLogger( DefaultBuildAgentConfiguration.class );
41
42 private File configurationFile;
43
44 private GeneralBuildAgentConfiguration generalBuildAgentConfiguration;
45
46 protected void initialize()
47 {
48 if ( log.isDebugEnabled() )
49 {
50 log.debug( "configurationFile null " + ( configurationFile.getPath() == null ) );
51 }
52 if ( configurationFile != null && configurationFile.exists() )
53 {
54 try
55 {
56 reload( configurationFile );
57 }
58 catch ( BuildAgentConfigurationException e )
59 {
60
61 log.warn( " error on loading configuration from file " + configurationFile.getPath() );
62 }
63 }
64 else
65 {
66 log.info( "build agent configuration file does not exists" );
67 this.generalBuildAgentConfiguration = new GeneralBuildAgentConfiguration();
68 }
69 }
70
71 public GeneralBuildAgentConfiguration getContinuumBuildAgentConfiguration()
72 {
73 return generalBuildAgentConfiguration;
74 }
75
76 public void reload()
77 throws BuildAgentConfigurationException
78 {
79 this.initialize();
80 }
81
82 public void reload( File file )
83 throws BuildAgentConfigurationException
84 {
85 FileInputStream fis = null;
86 try
87 {
88 fis = new FileInputStream( file );
89 ContinuumBuildAgentConfigurationModelXpp3Reader configurationXpp3Reader =
90 new ContinuumBuildAgentConfigurationModelXpp3Reader();
91 ContinuumBuildAgentConfigurationModel configuration = configurationXpp3Reader.read( new InputStreamReader(
92 fis ) );
93
94 this.generalBuildAgentConfiguration = new GeneralBuildAgentConfiguration();
95 if ( StringUtils.isNotEmpty( configuration.getBuildOutputDirectory() ) )
96 {
97 this.generalBuildAgentConfiguration.setBuildOutputDirectory( new File(
98 configuration.getBuildOutputDirectory() ) );
99 }
100 if ( StringUtils.isNotEmpty( configuration.getWorkingDirectory() ) )
101 {
102 this.generalBuildAgentConfiguration.setWorkingDirectory( new File(
103 configuration.getWorkingDirectory() ) );
104 }
105
106 this.generalBuildAgentConfiguration.setContinuumServerUrl( configuration.getContinuumServerUrl() );
107 this.generalBuildAgentConfiguration.setInstallations( configuration.getInstallations() );
108 this.generalBuildAgentConfiguration.setLocalRepositories( configuration.getLocalRepositories() );
109 this.generalBuildAgentConfiguration.setSharedSecretPassword( configuration.getSharedSecretPassword() );
110 }
111 catch ( IOException e )
112 {
113 log.error( e.getMessage(), e );
114 throw new BuildAgentConfigurationException( e.getMessage(), e );
115 }
116 catch ( XmlPullParserException e )
117 {
118 log.error( e.getMessage(), e );
119 throw new BuildAgentConfigurationException( e.getMessage(), e );
120 }
121 finally
122 {
123 if ( fis != null )
124 {
125 IOUtil.close( fis );
126 }
127 }
128 }
129
130 public void save()
131 throws BuildAgentConfigurationException
132 {
133 if ( !configurationFile.exists() )
134 {
135 configurationFile.getParentFile().mkdirs();
136 }
137 save( configurationFile );
138 }
139
140 public void save( File file )
141 throws BuildAgentConfigurationException
142 {
143 try
144 {
145 ContinuumBuildAgentConfigurationModel configurationModel = new ContinuumBuildAgentConfigurationModel();
146 if ( this.generalBuildAgentConfiguration.getBuildOutputDirectory() != null )
147 {
148 configurationModel.setBuildOutputDirectory(
149 this.generalBuildAgentConfiguration.getBuildOutputDirectory().getPath() );
150 }
151 if ( this.generalBuildAgentConfiguration.getWorkingDirectory() != null )
152 {
153 configurationModel.setWorkingDirectory(
154 this.generalBuildAgentConfiguration.getWorkingDirectory().getPath() );
155 }
156 configurationModel.setContinuumServerUrl( this.generalBuildAgentConfiguration.getContinuumServerUrl() );
157 configurationModel.setInstallations( this.generalBuildAgentConfiguration.getInstallations() );
158 configurationModel.setLocalRepositories( this.generalBuildAgentConfiguration.getLocalRepositories() );
159 configurationModel.setSharedSecretPassword( this.generalBuildAgentConfiguration.getSharedSecretPassword() );
160
161 ContinuumBuildAgentConfigurationModelXpp3Writer writer =
162 new ContinuumBuildAgentConfigurationModelXpp3Writer();
163 FileWriter fileWriter = new FileWriter( file );
164 writer.write( fileWriter, configurationModel );
165 fileWriter.flush();
166 fileWriter.close();
167 }
168 catch ( IOException e )
169 {
170 log.error( e.getMessage(), e );
171 throw new BuildAgentConfigurationException( e.getMessage(), e );
172 }
173 }
174
175 public void setContinuumBuildAgentConfiguration( GeneralBuildAgentConfiguration buildAgentConfiguration )
176 {
177 this.generalBuildAgentConfiguration = buildAgentConfiguration;
178 }
179
180 public File getConfigurationFile()
181 {
182 return configurationFile;
183 }
184
185 public void setConfigurationFile( File configurationFile )
186 {
187 this.configurationFile = configurationFile;
188 }
189 }