View Javadoc

1   package org.apache.maven.continuum.xmlrpc;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.continuum.xmlrpc.release.ContinuumReleaseResult;
23  import org.apache.continuum.xmlrpc.repository.DirectoryPurgeConfiguration;
24  import org.apache.continuum.xmlrpc.repository.LocalRepository;
25  import org.apache.continuum.xmlrpc.repository.RepositoryPurgeConfiguration;
26  import org.apache.continuum.xmlrpc.utils.BuildTrigger;
27  import org.apache.maven.continuum.xmlrpc.project.AddingResult;
28  import org.apache.maven.continuum.xmlrpc.project.BuildAgentConfiguration;
29  import org.apache.maven.continuum.xmlrpc.project.BuildAgentGroupConfiguration;
30  import org.apache.maven.continuum.xmlrpc.project.BuildDefinition;
31  import org.apache.maven.continuum.xmlrpc.project.BuildDefinitionTemplate;
32  import org.apache.maven.continuum.xmlrpc.project.BuildProjectTask;
33  import org.apache.maven.continuum.xmlrpc.project.BuildResult;
34  import org.apache.maven.continuum.xmlrpc.project.BuildResultSummary;
35  import org.apache.maven.continuum.xmlrpc.project.Project;
36  import org.apache.maven.continuum.xmlrpc.project.ProjectGroup;
37  import org.apache.maven.continuum.xmlrpc.project.ProjectGroupSummary;
38  import org.apache.maven.continuum.xmlrpc.project.ProjectNotifier;
39  import org.apache.maven.continuum.xmlrpc.project.ProjectScmRoot;
40  import org.apache.maven.continuum.xmlrpc.project.ProjectSummary;
41  import org.apache.maven.continuum.xmlrpc.project.ReleaseListenerSummary;
42  import org.apache.maven.continuum.xmlrpc.project.Schedule;
43  import org.apache.maven.continuum.xmlrpc.system.Installation;
44  import org.apache.maven.continuum.xmlrpc.system.Profile;
45  import org.apache.maven.continuum.xmlrpc.system.SystemConfiguration;
46  
47  import java.util.List;
48  import java.util.Map;
49  import java.util.Properties;
50  
51  /**
52   * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
53   * @version $Id: ContinuumService.java 1372260 2012-08-13 04:29:09Z brett $
54   */
55  public interface ContinuumService
56  {
57      // ----------------------------------------------------------------------
58      // Projects
59      // ----------------------------------------------------------------------
60  
61      /**
62       * Get All projects.
63       *
64       * @param projectGroupId The project group Id
65       * @return List of {@link ProjectSummary}
66       * @throws Exception
67       */
68      List<ProjectSummary> getProjects( int projectGroupId )
69          throws Exception;
70  
71      /**
72       * Same method but compatible with standard XMLRPC
73       *
74       * @param projectGroupId The project group Id
75       * @return List of {@link ProjectSummary} as RPC value
76       * @throws Exception
77       */
78      List<Object> getProjectsRPC( int projectGroupId )
79          throws Exception;
80  
81      /**
82       * Get a project.
83       *
84       * @param projectId the project id
85       * @return The project summary
86       * @throws Exception
87       */
88      ProjectSummary getProjectSummary( int projectId )
89          throws Exception;
90  
91      /**
92       * Same method but compatible with standard XMLRPC
93       *
94       * @param projectId the project id
95       * @return The project summary as RPC value
96       * @throws Exception
97       */
98      Map<String, Object> getProjectSummaryRPC( int projectId )
99          throws Exception;
100 
101     /**
102      * Get a project with all details.
103      *
104      * @param projectId The project id
105      * @return The project
106      * @throws Exception
107      */
108     Project getProjectWithAllDetails( int projectId )
109         throws Exception;
110 
111     /**
112      * Same method but compatible with standard XMLRPC
113      *
114      * @param projectId the project id
115      * @return The project as RPC value
116      * @throws Exception
117      */
118     Map<String, Object> getProjectWithAllDetailsRPC( int projectId )
119         throws Exception;
120 
121     /**
122      * Remove a project.
123      *
124      * @param projectId The project id
125      * @throws Exception
126      */
127     int removeProject( int projectId )
128         throws Exception;
129 
130     /**
131      * Update a project. Useful to change the scm parameters.
132      *
133      * @param project The project to update
134      * @throws Exception
135      */
136     ProjectSummary updateProject( ProjectSummary project )
137         throws Exception;
138 
139     /**
140      * Same method but compatible with standard XMLRPC
141      *
142      * @param project The project to update
143      * @return The project as RPC value
144      * @throws Exception
145      */
146     Map<String, Object> updateProjectRPC( Map<String, Object> project )
147         throws Exception;
148 
149     // ----------------------------------------------------------------------
150     // Projects Groups
151     // ----------------------------------------------------------------------
152 
153     /**
154      * Get a project groups.
155      *
156      * @param projectGroupId the id
157      * @return project group
158      * @throws Exception
159      */
160     ProjectGroup getProjectGroup( int projectGroupId )
161         throws Exception;
162 
163     /**
164      * Same method but compatible with standard XMLRPC
165      *
166      * @param projectGroupId the id
167      * @return project group as RPC value
168      * @throws Exception
169      */
170     Map<String, Object> getProjectGroupRPC( int projectGroupId )
171         throws Exception;
172 
173     /**
174      * Get all project groups.
175      *
176      * @return All project groups
177      * @throws Exception
178      */
179     List<ProjectGroupSummary> getAllProjectGroups()
180         throws Exception;
181 
182     /**
183      * Same method but compatible with standard XMLRPC
184      *
185      * @return List of {@link ProjectGroupSummary} as RPC value
186      * @throws Exception
187      */
188     List<Object> getAllProjectGroupsRPC()
189         throws Exception;
190 
191     /**
192      * Get all project groups with all details (project summaries, notifiers, build definitions).
193      *
194      * @return All project groups
195      * @throws Exception
196      */
197     List<ProjectGroup> getAllProjectGroupsWithAllDetails()
198         throws Exception;
199 
200     /**
201      * Same method but compatible with standard XMLRPC
202      *
203      * @return List of {@link ProjectGroup} as RPC value
204      * @throws Exception
205      */
206     List<Object> getAllProjectGroupsWithAllDetailsRPC()
207         throws Exception;
208 
209     /**
210      * Get all project groups with all details.
211      *
212      * @return All project groups
213      * @throws Exception
214      * @deprecated
215      */
216     List<ProjectGroup> getAllProjectGroupsWithProjects()
217         throws Exception;
218 
219     /**
220      * Get a project group.
221      *
222      * @param projectGroupId The project group id
223      * @return The project group summary
224      * @throws Exception
225      */
226     ProjectGroupSummary getProjectGroupSummary( int projectGroupId )
227         throws Exception;
228 
229     /**
230      * Same method but compatible with standard XMLRPC
231      *
232      * @param projectGroupId The project group id
233      * @return The project group summary as RPC value
234      * @throws Exception
235      */
236     Map<String, Object> getProjectGroupSummaryRPC( int projectGroupId )
237         throws Exception;
238 
239     /**
240      * Get a project group with all details.
241      *
242      * @param projectGroupId The project group id
243      * @return The project group
244      * @throws Exception
245      */
246     ProjectGroup getProjectGroupWithProjects( int projectGroupId )
247         throws Exception;
248 
249     /**
250      * Same method but compatible with standard XMLRPC
251      *
252      * @param projectGroupId The project group id
253      * @return The project group as RPC value
254      * @throws Exception
255      */
256     Map<String, Object> getProjectGroupWithProjectsRPC( int projectGroupId )
257         throws Exception;
258 
259     /**
260      * Remove a project group.
261      *
262      * @param projectGroupId The project group id
263      * @throws Exception
264      */
265     int removeProjectGroup( int projectGroupId )
266         throws Exception;
267 
268     /**
269      * Update a project Group.
270      *
271      * @param projectGroup The project group to update
272      * @throws Exception
273      */
274     ProjectGroupSummary updateProjectGroup( ProjectGroupSummary projectGroup )
275         throws Exception;
276 
277     /**
278      * Same method but compatible with standard XMLRPC
279      *
280      * @param projectGroup The project group to update
281      * @return The project group as RPC value
282      * @throws Exception
283      */
284     Map<String, Object> updateProjectGroupRPC( Map<String, Object> projectGroup )
285         throws Exception;
286 
287     /**
288      * Add a project Group.
289      *
290      * @param groupName   The project group name
291      * @param groupId     The project group id
292      * @param description The project group description
293      * @return the project group summary of the created project group
294      * @throws Exception
295      */
296     ProjectGroupSummary addProjectGroup( String groupName, String groupId, String description )
297         throws Exception;
298 
299     int removeBuildDefinitionFromProjectGroup( int projectGroupId, int buildDefinitionId )
300         throws Exception;
301 
302     /**
303      * Same method but compatible with standard XMLRPC
304      *
305      * @param groupName   The project group name
306      * @param groupId     The project group id
307      * @param description The project group description
308      * @return the project group summary of the created project group as RPC value
309      * @throws Exception
310      */
311     Map<String, Object> addProjectGroupRPC( String groupName, String groupId, String description )
312         throws Exception;
313 
314     ProjectNotifier getNotifier( int projectid, int notifierId )
315         throws Exception;
316 
317     Map<String, Object> getNotifierRPC( int projectid, int notifierId )
318         throws Exception;
319 
320     ProjectNotifier getGroupNotifier( int projectgroupid, int notifierId )
321         throws Exception;
322 
323     Map<String, Object> getGroupNotifierRPC( int projectgroupid, int notifierId )
324         throws Exception;
325 
326     ProjectNotifier updateGroupNotifier( int projectgroupid, ProjectNotifier newNotifier )
327         throws Exception;
328 
329     Map<String, Object> updateGroupNotifierRPC( int projectgroupid, Map<String, Object> newNotifier )
330         throws Exception;
331 
332     ProjectNotifier updateNotifier( int projectid, ProjectNotifier newNotifier )
333         throws Exception;
334 
335     Map<String, Object> updateNotifierRPC( int projectid, Map<String, Object> newNotifier )
336         throws Exception;
337 
338     int removeGroupNotifier( int projectgroupid, int notifierId )
339         throws Exception;
340 
341     int removeNotifier( int projectid, int notifierId )
342         throws Exception;
343 
344     ProjectNotifier addNotifier( int projectid, ProjectNotifier newNotifier )
345         throws Exception;
346 
347     ProjectNotifier addGroupNotifier( int projectgroupid, ProjectNotifier newNotifier )
348         throws Exception;
349 
350     Map<String, Object> addNotifierRPC( int projectid, Map<String, Object> newNotifier )
351         throws Exception;
352 
353     Map<String, Object> addGroupNotifierRPC( int projectgroupid, Map<String, Object> newNotifier )
354         throws Exception;
355 
356     // ----------------------------------------------------------------------
357     // Build Definitions
358     // ----------------------------------------------------------------------
359 
360     /**
361      * Get the build definitions list of the project.
362      *
363      * @param projectId The project id
364      * @return The build definitions list
365      * @throws Exception
366      */
367     List<BuildDefinition> getBuildDefinitionsForProject( int projectId )
368         throws Exception;
369 
370     /**
371      * Same method but compatible with standard XMLRPC
372      *
373      * @param projectId The project id
374      * @return The build definitions list as RPC value
375      * @throws Exception
376      */
377     List<Object> getBuildDefinitionsForProjectRPC( int projectId )
378         throws Exception;
379 
380     /**
381      * Get the build definitions list of the project group.
382      *
383      * @param projectGroupId The project group id
384      * @return The build definitions list
385      * @throws Exception
386      */
387     List<BuildDefinition> getBuildDefinitionsForProjectGroup( int projectGroupId )
388         throws Exception;
389 
390     /**
391      * Same method but compatible with standard XMLRPC
392      *
393      * @param projectGroupId The project group id
394      * @return The build definitions list as RPC value
395      * @throws Exception
396      */
397     List<Object> getBuildDefinitionsForProjectGroupRPC( int projectGroupId )
398         throws Exception;
399 
400     /**
401      * Get the build definition
402      *
403      * @param buildDefinitionId The build definition id
404      * @return The build definition
405      * @throws Exception
406      */
407     BuildDefinition getBuildDefinition( int buildDefinitionId )
408         throws Exception;
409 
410     /**
411      * Same method but compatible with standard XMLRPC
412      *
413      * @param buildDefinitionId The build definition id
414      * @return The build definition as RPC value
415      * @throws Exception
416      */
417     Map<String, Object> getBuildDefinitionRPC( int buildDefinitionId )
418         throws Exception;
419 
420     /**
421      * Update a project build definition.
422      *
423      * @param projectId The project id
424      * @param buildDef  The build definition to update
425      * @return the updated build definition
426      * @throws Exception
427      */
428     BuildDefinition updateBuildDefinitionForProject( int projectId, BuildDefinition buildDef )
429         throws Exception;
430 
431     /**
432      * Same method but compatible with standard XMLRPC
433      *
434      * @param projectId The project id
435      * @param buildDef  The build definition to update
436      * @return the updated build definition as RPC value
437      * @throws Exception
438      */
439     Map<String, Object> updateBuildDefinitionForProjectRPC( int projectId, Map<String, Object> buildDef )
440         throws Exception;
441 
442     /**
443      * Update a project group build definition.
444      *
445      * @param projectGroupId The project group id
446      * @param buildDef       The build definition to update
447      * @return the updated build definition
448      * @throws Exception
449      */
450     BuildDefinition updateBuildDefinitionForProjectGroup( int projectGroupId, BuildDefinition buildDef )
451         throws Exception;
452 
453     /**
454      * Same method but compatible with standard XMLRPC
455      *
456      * @param projectGroupId The project group id
457      * @param buildDef       The build definition to update
458      * @return the updated build definition as RPC value
459      * @throws Exception
460      */
461     Map<String, Object> updateBuildDefinitionForProjectGroupRPC( int projectGroupId, Map<String, Object> buildDef )
462         throws Exception;
463 
464     /**
465      * Add a project build definition.
466      *
467      * @param projectId The project id
468      * @param buildDef  The build definition to update
469      * @return the added build definition
470      * @throws Exception
471      */
472     BuildDefinition addBuildDefinitionToProject( int projectId, BuildDefinition buildDef )
473         throws Exception;
474 
475     /**
476      * Same method but compatible with standard XMLRPC
477      *
478      * @param projectId The project id
479      * @param buildDef  The build definition to update
480      * @return the added build definition as RPC value
481      * @throws Exception
482      */
483     Map<String, Object> addBuildDefinitionToProjectRPC( int projectId, Map<String, Object> buildDef )
484         throws Exception;
485 
486     /**
487      * Add a project group buildDefinition.
488      *
489      * @param projectGroupId The project group id
490      * @param buildDef       The build definition to update
491      * @return the build definition added
492      * @throws Exception
493      */
494     BuildDefinition addBuildDefinitionToProjectGroup( int projectGroupId, BuildDefinition buildDef )
495         throws Exception;
496 
497     /**
498      * Same method but compatible with standard XMLRPC
499      *
500      * @param projectGroupId The project group id
501      * @param buildDef       The build definition to update
502      * @return the added build definition as RPC value
503      * @throws Exception
504      */
505     Map<String, Object> addBuildDefinitionToProjectGroupRPC( int projectGroupId, Map<String, Object> buildDef )
506         throws Exception;
507 
508     /**
509      * Get the build definition templates list.
510      *
511      * @return The build definitions templates list
512      * @throws Exception
513      */
514     List<BuildDefinitionTemplate> getBuildDefinitionTemplates()
515         throws Exception;
516 
517     /**
518      * Same method but compatible with standard XMLRPC
519      *
520      * @return The build definitions templates list as RPC value
521      * @throws Exception
522      */
523     List<Object> getBuildDefinitionTemplatesRPC()
524         throws Exception;
525 
526     // ----------------------------------------------------------------------
527     // Building
528     // ----------------------------------------------------------------------
529 
530     /**
531      * Add the project to the build queue.
532      *
533      * @param projectId The project id
534      * @throws Exception
535      */
536     int addProjectToBuildQueue( int projectId )
537         throws Exception;
538 
539     /**
540      * Add the project to the build queue.
541      *
542      * @param projectId         The project id
543      * @param buildDefinitionId The build definition id
544      * @throws Exception
545      */
546     int addProjectToBuildQueue( int projectId, int buildDefinitionId )
547         throws Exception;
548 
549     /**
550      * Build the project
551      *
552      * @param projectId The project id
553      * @throws Exception
554      */
555     int buildProject( int projectId )
556         throws Exception;
557 
558     /**
559      * Build the project
560      *
561      * @param projectId         The project id
562      * @param buildDefinitionId The build definition id
563      * @throws Exception
564      */
565     int buildProject( int projectId, int buildDefinitionId )
566         throws Exception;
567 
568     /**
569      * Forced build the project
570      *
571      * @param projectId    The project id
572      * @param buildTrigger The build trigger
573      * @return
574      * @throws Exception
575      */
576     int buildProject( int projectId, BuildTrigger buildTrigger )
577         throws Exception;
578 
579     /**
580      * Forced build the project
581      *
582      * @param projectId         The project id
583      * @param buildDefinitionId The build definition id
584      * @param buildTrigger      The build trigger
585      * @return
586      * @throws Exception
587      */
588     int buildProject( int projectId, int buildDefinitionId, BuildTrigger buildTrigger )
589         throws Exception;
590 
591     /**
592      * Build the project group with the default build definition.
593      *
594      * @param projectGroupId The project group id
595      * @throws Exception
596      */
597     int buildGroup( int projectGroupId )
598         throws Exception;
599 
600     /**
601      * Build the project group with the specified build definition.
602      *
603      * @param projectGroupId    The project group id
604      * @param buildDefinitionId The build definition id
605      * @throws Exception
606      */
607     int buildGroup( int projectGroupId, int buildDefinitionId )
608         throws Exception;
609 
610     // ----------------------------------------------------------------------
611     // SCM roots
612     // ----------------------------------------------------------------------
613 
614     /**
615      * Get the SCM roots for all projects in a project group
616      *
617      * @param projectGroupId the project group id
618      * @return
619      * @throws Exception
620      */
621     List<ProjectScmRoot> getProjectScmRootByProjectGroup( int projectGroupId )
622         throws Exception;
623 
624     /**
625      * Get the SCM root for a specific project
626      *
627      * @param projectId the project id
628      * @return
629      * @throws Exception
630      */
631     ProjectScmRoot getProjectScmRootByProject( int projectId )
632         throws Exception;
633 
634     // ----------------------------------------------------------------------
635     // Build Results
636     // ----------------------------------------------------------------------
637 
638     /**
639      * Returns the latest build result for the project.
640      *
641      * @param projectId The project id
642      * @return The build result
643      * @throws Exception
644      */
645     BuildResult getLatestBuildResult( int projectId )
646         throws Exception;
647 
648     /**
649      * Same method but compatible with standard XMLRPC
650      *
651      * @param projectId The project id
652      * @return The build result as RPC value
653      * @throws Exception
654      */
655     Map<String, Object> getLatestBuildResultRPC( int projectId )
656         throws Exception;
657 
658     /**
659      * Returns the build result.
660      *
661      * @param projectId The project id
662      * @param buildId   The build id
663      * @return The build result
664      * @throws Exception
665      */
666     BuildResult getBuildResult( int projectId, int buildId )
667         throws Exception;
668 
669     /**
670      * Same method but compatible with standard XMLRPC
671      *
672      * @param projectId The project id
673      * @param buildId   The build id
674      * @return The build result as RPC value
675      * @throws Exception
676      */
677     Map<String, Object> getBuildResultRPC( int projectId, int buildId )
678         throws Exception;
679 
680     /**
681      * Returns the project build result summary list.
682      *
683      * @param projectId The project id
684      * @return The build result list
685      * @throws Exception
686      */
687     List<BuildResultSummary> getBuildResultsForProject( int projectId )
688         throws Exception;
689 
690     /**
691      * Same method but compatible with standard XMLRPC
692      *
693      * @param projectId The project id
694      * @return The build result list as RPC value
695      * @throws Exception
696      */
697     List<Object> getBuildResultsForProjectRPC( int projectId )
698         throws Exception;
699 
700     /**
701      * Remove the project build result.
702      *
703      * @param br The project build result
704      * @return 0
705      * @throws Exception
706      */
707     int removeBuildResult( BuildResult br )
708         throws Exception;
709 
710     /**
711      * Same method but compatible with standard XMLRPC
712      *
713      * @param br The project build result
714      * @return 0
715      * @throws Exception
716      */
717     int removeBuildResultRPC( Map<String, Object> br )
718         throws Exception;
719 
720     /**
721      * Returns the build output.
722      *
723      * @param projectId The project id
724      * @param buildId   The build id
725      * @return The build output
726      * @throws Exception
727      */
728     String getBuildOutput( int projectId, int buildId )
729         throws Exception;
730 
731     // ----------------------------------------------------------------------
732     // Maven 2.x projects
733     // ----------------------------------------------------------------------
734 
735     /**
736      * Add a maven 2.x project from an url.
737      *
738      * @param url The POM url
739      * @return The result of the action with the list of projects created
740      * @throws Exception
741      */
742     AddingResult addMavenTwoProject( String url )
743         throws Exception;
744 
745     /**
746      * Same method but compatible with standard XMLRPC
747      *
748      * @param url The POM url
749      * @return The result of the action with the list of projects created as RPC value
750      * @throws Exception
751      */
752     Map<String, Object> addMavenTwoProjectRPC( String url )
753         throws Exception;
754 
755     /**
756      * Add a maven 2.x project from an url.
757      *
758      * @param url            The POM url
759      * @param projectGroupId The id of the group where projects will be stored
760      * @return The result of the action with the list of projects created
761      * @throws Exception
762      */
763     AddingResult addMavenTwoProject( String url, int projectGroupId )
764         throws Exception;
765 
766     /**
767      * Same method but compatible with standard XMLRPC
768      *
769      * @param url            The POM url
770      * @param projectGroupId The id of the group where projects will be stored
771      * @return The result of the action with the list of projects created as RPC value
772      * @throws Exception
773      */
774     Map<String, Object> addMavenTwoProjectRPC( String url, int projectGroupId )
775         throws Exception;
776 
777     /**
778      * Add a maven 2.x project from an url.
779      *
780      * @param url            The POM url
781      * @param projectGroupId The id of the group where projects will be stored
782      * @return The result of the action with the list of projects created
783      * @throws Exception
784      * @Param checkoutInSingleDirectory Determines whether the project will be stored on a single directory
785      */
786     AddingResult addMavenTwoProject( String url, int projectGroupId, boolean checkoutInSingleDirectory )
787         throws Exception;
788 
789     /**
790      * Same method but compatible with standard XMLRPC
791      *
792      * @param url            The POM url
793      * @param projectGroupId The id of the group where projects will be stored
794      * @return The result of the action with the list of projects created as RPC value
795      * @throws Exception
796      * @Param checkoutInSingleDirectory Determines whether the project will be stored on a single directory
797      */
798     Map<String, Object> addMavenTwoProjectRPC( String url, int projectGroupId, boolean checkoutInSingleDirectory )
799         throws Exception;
800 
801     /**
802      * Add a maven 2.x multi-module project from a url and add it to Continuum as a single project instead of as
803      * multiple projects (one project per module). To add a multi-module project with its modules as separate Continuum
804      * projects, use ContinuumService#addMavenTwoProject( String url, int projectGroupId, boolean
805      * checkoutInSingleDirectory) instead.
806      *
807      * @param url
808      * @param projectGroupId
809      * @return
810      * @throws Exception
811      */
812     AddingResult addMavenTwoProjectAsSingleProject( String url, int projectGroupId )
813         throws Exception;
814 
815     /**
816      * Same method but compatible with standard XMLRPC
817      *
818      * @param url
819      * @param projectGroupId
820      * @return
821      * @throws Exception
822      */
823     Map<String, Object> addMavenTwoProjectAsSingleProjectRPC( String url, int projectGroupId )
824         throws Exception;
825 
826     /**
827      * Add a maven 2.x multi-module project from a url
828      *
829      * @param url                       The POM url
830      * @param projectGroupId            The id of the group where projects will be stored
831      * @param checkProtocol             Determines whether the protocol will be checked
832      * @param useCredentialsCache       Determines whether user credentials will be cached
833      * @param recursiveProjects         Determines whether to load recursive projects
834      * @param checkoutInSingleDirectory Determines whether the project will be stored on a single directory
835      * @return The result of the action with the list of projects created
836      * @throws Exception
837      */
838     AddingResult addMavenTwoProject( String url, int projectGroupId, boolean checkProtocol, boolean useCredentialsCache,
839                                      boolean recursiveProjects, boolean checkoutInSingleDirectory )
840         throws Exception;
841 
842     /**
843      * Same method but compatible with standard XMLRPC
844      *
845      * @param url                       The POM url
846      * @param projectGroupId            The id of the group where projects will be stored
847      * @param checkProtocol             Determines whether the protocol will be checked
848      * @param useCredentialsCache       Determines whether user credentials will be cached
849      * @param recursiveProjects         Determines whether to load recursive projects
850      * @param checkoutInSingleDirectory Determines whether the project will be stored on a single directory
851      * @return The result of the action with the list of projects created as RPC value
852      * @throws Exception
853      */
854     Map<String, Object> addMavenTwoProjectRPC( String url, int projectGroupId, boolean checkProtocol,
855                                                boolean useCredentialsCache, boolean recursiveProjects,
856                                                boolean checkoutInSingleDirectory )
857         throws Exception;
858 
859     // ----------------------------------------------------------------------
860     // Maven 1.x projects
861     // ----------------------------------------------------------------------
862 
863     /**
864      * Add a maven 1.x project from an url.
865      *
866      * @param url            The POM url
867      * @param projectGroupId The id of the group where projects will be stored
868      * @return The result of the action with the list of projects created
869      * @throws Exception
870      */
871     AddingResult addMavenOneProject( String url, int projectGroupId )
872         throws Exception;
873 
874     /**
875      * Same method but compatible with standard XMLRPC
876      *
877      * @param url            The POM url
878      * @param projectGroupId The id of the group where projects will be stored
879      * @return The result of the action with the list of projects created as RPC value
880      * @throws Exception
881      */
882     Map<String, Object> addMavenOneProjectRPC( String url, int projectGroupId )
883         throws Exception;
884 
885     // ----------------------------------------------------------------------
886     // Maven ANT projects
887     // ----------------------------------------------------------------------
888 
889     /**
890      * Add an ANT project in the specified group.
891      *
892      * @param project        The project to add. name, version and scm informations are required
893      * @param projectGroupId The id of the group where projects will be stored
894      * @return The project populated with the id.
895      * @throws Exception
896      */
897     ProjectSummary addAntProject( ProjectSummary project, int projectGroupId )
898         throws Exception;
899 
900     /**
901      * Same method but compatible with standard XMLRPC
902      *
903      * @param project        The project to add. name, version and scm informations are required
904      * @param projectGroupId The id of the group where projects will be stored
905      * @return The project populated with the id as RPC value
906      * @throws Exception
907      */
908     Map<String, Object> addAntProjectRPC( Map<String, Object> project, int projectGroupId )
909         throws Exception;
910 
911     // ----------------------------------------------------------------------
912     // Maven Shell projects
913     // ----------------------------------------------------------------------
914 
915     /**
916      * Add an shell project in the specified group.
917      *
918      * @param project        The project to add. name, version and scm informations are required
919      * @param projectGroupId The id of the group where projects will be stored
920      * @return The project populated with the id.
921      * @throws Exception
922      */
923     ProjectSummary addShellProject( ProjectSummary project, int projectGroupId )
924         throws Exception;
925 
926     /**
927      * Same method but compatible with standard XMLRPC
928      *
929      * @param project        The project to add. name, version and scm informations are required
930      * @param projectGroupId The id of the group where projects will be stored
931      * @return The project populated with the id as RPC value
932      * @throws Exception
933      */
934     Map<String, Object> addShellProjectRPC( Map<String, Object> project, int projectGroupId )
935         throws Exception;
936 
937     // ----------------------------------------------------------------------
938     // ADMIN TASKS
939     // ----------------------------------------------------------------------
940 
941     // ----------------------------------------------------------------------
942     // Schedules
943     // ----------------------------------------------------------------------
944 
945     /**
946      * Return the schedules list.
947      *
948      * @return The schedule list.
949      * @throws Exception
950      */
951     List<Schedule> getSchedules()
952         throws Exception;
953 
954     /**
955      * Same method but compatible with standard XMLRPC
956      *
957      * @return The schedule list as RPC value.
958      * @throws Exception
959      */
960     List<Object> getSchedulesRPC()
961         throws Exception;
962 
963     /**
964      * Return the schedule defined by this id.
965      *
966      * @param scheduleId The schedule id
967      * @return The schedule.
968      * @throws Exception
969      */
970     Schedule getSchedule( int scheduleId )
971         throws Exception;
972 
973     /**
974      * Same method but compatible with standard XMLRPC
975      *
976      * @param scheduleId The schedule id
977      * @return The schedule as RPC value.
978      * @throws Exception
979      */
980     Map<String, Object> getScheduleRPC( int scheduleId )
981         throws Exception;
982 
983     /**
984      * Add the schedule.
985      *
986      * @param schedule The schedule
987      * @return The schedule.
988      * @throws Exception
989      */
990     Schedule addSchedule( Schedule schedule )
991         throws Exception;
992 
993     /**
994      * Same method but compatible with standard XMLRPC
995      *
996      * @param schedule The schedule
997      * @return The schedule as RPC value.
998      * @throws Exception
999      */
1000     Map<String, Object> addScheduleRPC( Map<String, Object> schedule )
1001         throws Exception;
1002 
1003     /**
1004      * Update the schedule.
1005      *
1006      * @param schedule The schedule
1007      * @return The schedule.
1008      * @throws Exception
1009      */
1010     Schedule updateSchedule( Schedule schedule )
1011         throws Exception;
1012 
1013     /**
1014      * Same method but compatible with standard XMLRPC
1015      *
1016      * @param schedule The schedule
1017      * @return The schedule as RPC value.
1018      * @throws Exception
1019      */
1020     Map<String, Object> updateScheduleRPC( Map<String, Object> schedule )
1021         throws Exception;
1022 
1023     // ----------------------------------------------------------------------
1024     // Profiles
1025     // ----------------------------------------------------------------------
1026 
1027     /**
1028      * Return the profiles list.
1029      *
1030      * @return The profiles list.
1031      * @throws Exception
1032      */
1033     List<Profile> getProfiles()
1034         throws Exception;
1035 
1036     /**
1037      * Same method but compatible with standard XMLRPC
1038      *
1039      * @return The profiles list as RPC value.
1040      * @throws Exception
1041      */
1042     List<Object> getProfilesRPC()
1043         throws Exception;
1044 
1045     /**
1046      * Return the profile defined by this id.
1047      *
1048      * @param profileId The profile id
1049      * @return The profile.
1050      * @throws Exception
1051      */
1052     Profile getProfile( int profileId )
1053         throws Exception;
1054 
1055     /**
1056      * Same method but compatible with standard XMLRPC
1057      *
1058      * @param profileId The profile id
1059      * @return The profile.
1060      * @throws Exception
1061      */
1062     Map<String, Object> getProfileRPC( int profileId )
1063         throws Exception;
1064 
1065     Profile getProfileWithName( String profileName )
1066         throws Exception;
1067 
1068     Map<String, Object> getProfileWithNameRPC( String profileName )
1069         throws Exception;
1070 
1071     Profile addProfile( Profile profile )
1072         throws Exception;
1073 
1074     int updateProfile( Profile profile )
1075         throws Exception;
1076 
1077     int deleteProfile( int profileId )
1078         throws Exception;
1079 
1080     Map<String, Object> addProfileRPC( Map<String, Object> profile )
1081         throws Exception;
1082 
1083     int updateProfileRPC( Map<String, Object> profile )
1084         throws Exception;
1085 
1086     // ----------------------------------------------------------------------
1087     // Installations
1088     // ----------------------------------------------------------------------
1089 
1090     /**
1091      * Return the installations list.
1092      *
1093      * @return The installations list.
1094      * @throws Exception
1095      */
1096     List<Installation> getInstallations()
1097         throws Exception;
1098 
1099     /**
1100      * Same method but compatible with standard XMLRPC
1101      *
1102      * @return The installations list.
1103      * @throws Exception
1104      */
1105     List<Object> getInstallationsRPC()
1106         throws Exception;
1107 
1108     /**
1109      * Return the installation defined by this id.
1110      *
1111      * @param installationId The installation id
1112      * @return The installation.
1113      * @throws Exception
1114      */
1115     Installation getInstallation( int installationId )
1116         throws Exception;
1117 
1118     /**
1119      * Same method but compatible with standard XMLRPC
1120      *
1121      * @param installationId The installation id
1122      * @return The installation.
1123      * @throws Exception
1124      */
1125     Map<String, Object> getInstallationRPC( int installationId )
1126         throws Exception;
1127 
1128     /**
1129      * Return the installation defined by this name
1130      *
1131      * @param installationName The installation name
1132      * @return The installation
1133      * @throws Exception
1134      */
1135     Installation getInstallation( String installationName )
1136         throws Exception;
1137 
1138     /**
1139      * Same method but compatible with standard XMLRPC
1140      *
1141      * @param installationName The installation name
1142      * @return The installation
1143      * @throws Exception
1144      */
1145     Map<String, Object> getInstallationRPC( String installationName )
1146         throws Exception;
1147 
1148     /**
1149      * Return the installations list defined by this URL.
1150      *
1151      * @param url The build agent URL
1152      * @return The installations list.
1153      * @throws Exception
1154      */
1155     List<Installation> getBuildAgentInstallations( String url )
1156         throws Exception;
1157 
1158     /**
1159      * Same method but compatible with standard XMLRPC
1160      *
1161      * @param url The build agent URL
1162      * @return The installations list.
1163      * @throws Exception
1164      */
1165     List<Object> getBuildAgentInstallationsRPC( String url )
1166         throws Exception;
1167 
1168     Installation addInstallation( Installation installation )
1169         throws Exception;
1170 
1171     int updateInstallation( Installation installation )
1172         throws Exception;
1173 
1174     int deleteInstallation( int installationId )
1175         throws Exception;
1176 
1177     Map<String, Object> addInstallationRPC( Map<String, Object> installation )
1178         throws Exception;
1179 
1180     int updateInstallationRPC( Map<String, Object> installation )
1181         throws Exception;
1182 
1183     // ----------------------------------------------------------------------
1184     // SystemConfiguration
1185     // ----------------------------------------------------------------------
1186 
1187     SystemConfiguration getSystemConfiguration()
1188         throws Exception;
1189 
1190     Map<String, Object> getSystemConfigurationRPC()
1191         throws Exception;
1192 
1193     // ----------------------------------------------------------------------
1194     // Queue
1195     // ----------------------------------------------------------------------
1196 
1197     /**
1198      * Return true if the project is in prepare build queue
1199      *
1200      * @param projectId The project id
1201      * @throws ContinuumException
1202      */
1203     boolean isProjectInPrepareBuildQueue( int projectId )
1204         throws Exception;
1205 
1206     /**
1207      * Return true if the project is in prepare build queue
1208      *
1209      * @param projectId         The project id
1210      * @param buildDefinitionId The build definition id
1211      * @throws ContinuumException
1212      */
1213     boolean isProjectInPrepareBuildQueue( int projectId, int buildDefinitionId )
1214         throws Exception;
1215 
1216     /**
1217      * Return true if the project is in building queue.
1218      *
1219      * @param projectId The project id
1220      * @throws ContinuumException
1221      */
1222     boolean isProjectInBuildingQueue( int projectId )
1223         throws Exception;
1224 
1225     /**
1226      * Return true if the project is in building queue.
1227      *
1228      * @param projectId         The project id
1229      * @param buildDefinitionId The build definition id
1230      * @throws ContinuumException
1231      */
1232     boolean isProjectInBuildingQueue( int projectId, int buildDefinitionId )
1233         throws Exception;
1234 
1235     /**
1236      * Return true if the project is currently preparing build
1237      *
1238      * @param projectId The project id
1239      * @return
1240      * @throws Exception
1241      */
1242     boolean isProjectCurrentlyPreparingBuild( int projectId )
1243         throws Exception;
1244 
1245     /**
1246      * Return true if the project is currently preparing build
1247      *
1248      * @param projectId         The project id
1249      * @param buildDefinitionId The build definition id
1250      * @return
1251      * @throws Exception
1252      */
1253     boolean isProjectCurrentlyPreparingBuild( int projectId, int buildDefinitionId )
1254         throws Exception;
1255 
1256     /**
1257      * Return true if the project is currently building
1258      *
1259      * @param projectId The project id
1260      * @return
1261      * @throws Exception
1262      */
1263     boolean isProjectCurrentlyBuilding( int projectId )
1264         throws Exception;
1265 
1266     /**
1267      * Return true if the project is currently building
1268      *
1269      * @param projectId         The project id
1270      * @param buildDefinitionId The build definition id
1271      * @return
1272      * @throws Exception
1273      */
1274     boolean isProjectCurrentlyBuilding( int projectId, int buildDefinitionId )
1275         throws Exception;
1276 
1277     /**
1278      * Return projects building queue.
1279      *
1280      * @throws ContinuumException
1281      */
1282     public List<BuildProjectTask> getProjectsInBuildQueue()
1283         throws Exception;
1284 
1285     /**
1286      * Remove projects from build queue
1287      *
1288      * @param projectsId project id to be removed from the building queue
1289      * @return
1290      * @throws Exception
1291      */
1292     int removeProjectsFromBuildingQueue( int[] projectsId )
1293         throws Exception;
1294 
1295     /**
1296      * Cancel the current project build
1297      *
1298      * @return
1299      * @throws Exception
1300      */
1301     boolean cancelCurrentBuild()
1302         throws Exception;
1303 
1304     /**
1305      * Cancel a project build
1306      *
1307      * @param projectId         the project id
1308      * @param buildDefinitionId the build definition id
1309      * @return
1310      * @throws Exception
1311      */
1312     boolean cancelBuild( int projectId, int buildDefinitionId )
1313         throws Exception;
1314 
1315     // ----------------------------------------------------------------------
1316     // TODO:Users
1317     // ----------------------------------------------------------------------
1318 
1319     // ----------------------------------------------------------------------
1320     // Utils
1321     // ----------------------------------------------------------------------
1322 
1323     boolean ping()
1324         throws Exception;
1325 
1326     // ----------------------------------------------------------------------
1327     // Local Repository
1328     // ----------------------------------------------------------------------
1329 
1330     /**
1331      * Add a local repository
1332      *
1333      * @param repository the local repository to add
1334      * @return
1335      * @throws Exception
1336      */
1337     LocalRepository addLocalRepository( LocalRepository repository )
1338         throws Exception;
1339 
1340     /**
1341      * Same method but compatible with the standard XMLRPC
1342      *
1343      * @param repository the local repository to add
1344      * @return
1345      * @throws Exception
1346      */
1347     Map<String, Object> addLocalRepositoryRPC( Map<String, Object> repository )
1348         throws Exception;
1349 
1350     /**
1351      * Update the local repository
1352      *
1353      * @param repository the local repository to update
1354      * @return
1355      * @throws Exception
1356      */
1357     int updateLocalRepository( LocalRepository repository )
1358         throws Exception;
1359 
1360     /**
1361      * Same method but compatible with the standard XMLRPC
1362      *
1363      * @param repository the local repository to update
1364      * @return
1365      * @throws Exception
1366      */
1367     int updateLocalRepositoryRPC( Map<String, Object> repository )
1368         throws Exception;
1369 
1370     /**
1371      * Remove the local repository
1372      *
1373      * @param repositoryId
1374      * @return
1375      * @throws Exception
1376      */
1377     int removeLocalRepository( int repositoryId )
1378         throws Exception;
1379 
1380     /**
1381      * Returns the local repository
1382      *
1383      * @param repositoryId the local repository id
1384      * @return
1385      * @throws Exception
1386      */
1387     LocalRepository getLocalRepository( int repositoryId )
1388         throws Exception;
1389 
1390     /**
1391      * Same method but compatible with the standard XMLRPC
1392      *
1393      * @param repositoryId
1394      * @return
1395      * @throws Exception
1396      */
1397     Map<String, Object> getLocalRepositoryRPC( int repositoryId )
1398         throws Exception;
1399 
1400     /**
1401      * Returns all local repositories
1402      *
1403      * @return
1404      * @throws Exception
1405      */
1406     List<LocalRepository> getAllLocalRepositories()
1407         throws Exception;
1408 
1409     /**
1410      * Same method but compatible with the standard XMLRPC
1411      *
1412      * @return
1413      * @throws Exception
1414      */
1415     List<Object> getAllLocalRepositoriesRPC()
1416         throws Exception;
1417 
1418     // ----------------------------------------------------------------------
1419     // Purging
1420     // ----------------------------------------------------------------------
1421 
1422     /**
1423      * Add a repository purge configuration
1424      *
1425      * @param repoPurge the repository purge configuration
1426      * @return
1427      * @throws Exception
1428      */
1429     RepositoryPurgeConfiguration addRepositoryPurgeConfiguration( RepositoryPurgeConfiguration repoPurge )
1430         throws Exception;
1431 
1432     /**
1433      * Same method but compatible with the standard XMLRPC
1434      *
1435      * @param repoPurge the repository purge configuration
1436      * @return
1437      * @throws Exception
1438      */
1439     Map<String, Object> addRepositoryPurgeConfigurationRPC( Map<String, Object> repoPurge )
1440         throws Exception;
1441 
1442     /**
1443      * Update the repository purge configuration
1444      *
1445      * @param repoPurge the repository purge configuration
1446      * @return
1447      * @throws Exception
1448      */
1449     int updateRepositoryPurgeConfiguration( RepositoryPurgeConfiguration repoPurge )
1450         throws Exception;
1451 
1452     /**
1453      * Same method but compatible with the standard XMLRPC
1454      *
1455      * @param repoPurge the repository purge configuration
1456      * @return
1457      * @throws Exception
1458      */
1459     int updateRepositoryPurgeConfigurationRPC( Map<String, Object> repoPurge )
1460         throws Exception;
1461 
1462     /**
1463      * Remove repository purge configuration
1464      *
1465      * @param repoPurgeId the repository purge configuration id
1466      * @return
1467      * @throws Exception
1468      */
1469     int removeRepositoryPurgeConfiguration( int repoPurgeId )
1470         throws Exception;
1471 
1472     /**
1473      * Returns the repository purge configuration
1474      *
1475      * @param purgeConfigId the repository purge configuration id
1476      * @return the repository purge configuration
1477      * @throws Exception
1478      */
1479     RepositoryPurgeConfiguration getRepositoryPurgeConfiguration( int repoPurgeId )
1480         throws Exception;
1481 
1482     /**
1483      * Same method but compatible with standard XMLRPC
1484      *
1485      * @param purgeConfigId the repository purge configuration id
1486      * @return the repository purge configuration
1487      * @throws Exception
1488      */
1489     Map<String, Object> getRepositoryPurgeConfigurationRPC( int purgeConfigId )
1490         throws Exception;
1491 
1492     /**
1493      * Returns repository purge configurations list
1494      *
1495      * @return list of repository purge configurations
1496      * @throws Exception
1497      */
1498     List<RepositoryPurgeConfiguration> getAllRepositoryPurgeConfigurations()
1499         throws Exception;
1500 
1501     /**
1502      * Same method but compatible with standard XMLRPC
1503      *
1504      * @return list of repository purge configurations
1505      * @throws Exception
1506      */
1507     List<Object> getAllRepositoryPurgeConfigurationsRPC()
1508         throws Exception;
1509 
1510     /**
1511      * Add a directory purge configuration
1512      *
1513      * @param dirPurge the directory purge configuration
1514      * @return
1515      * @throws Exception
1516      */
1517     DirectoryPurgeConfiguration addDirectoryPurgeConfiguration( DirectoryPurgeConfiguration dirPurge )
1518         throws Exception;
1519 
1520     /**
1521      * Same method but compatible with the standard XMLRPC
1522      *
1523      * @param dirPurge the directory purge configuration
1524      * @return
1525      * @throws Exception
1526      */
1527     Map<String, Object> addDirectoryPurgeConfigurationRPC( Map<String, Object> dirPurge )
1528         throws Exception;
1529 
1530     /**
1531      * Update the directory purge configuration
1532      *
1533      * @param dirPurge the directory purge configuration
1534      * @return
1535      * @throws Exception
1536      */
1537     int updateDirectoryPurgeConfiguration( DirectoryPurgeConfiguration dirPurge )
1538         throws Exception;
1539 
1540     /**
1541      * Same method but compatible with the standard XMLRPC
1542      *
1543      * @param dirPurge the directory purge configuration
1544      * @return
1545      * @throws Exception
1546      */
1547     int updateDirectoryPurgeConfigurationRPC( Map<String, Object> dirPurge )
1548         throws Exception;
1549 
1550     /**
1551      * Removes the directory purge configuration
1552      *
1553      * @param dirPurgeId the directory purge configuration id
1554      * @return
1555      * @throws Exception
1556      */
1557     int removeDirectoryPurgeConfiguration( int dirPurgeId )
1558         throws Exception;
1559 
1560     /**
1561      * Returns the directory purge configuration
1562      *
1563      * @param purgeConfigId the directory purge configuration id
1564      * @return the directory purge configuration
1565      * @throws Exception
1566      */
1567     DirectoryPurgeConfiguration getDirectoryPurgeConfiguration( int purgeConfigId )
1568         throws Exception;
1569 
1570     /**
1571      * Same method but compatible with standard XMLRPC
1572      *
1573      * @param purgeConfigId the directory purge configuration id
1574      * @return the directory purge configuration
1575      * @throws Exception
1576      */
1577     Map<String, Object> getDirectoryPurgeConfigurationRPC( int purgeConfigId )
1578         throws Exception;
1579 
1580     /**
1581      * Returns directory purge configurations list
1582      *
1583      * @return list of directory purge configurations
1584      * @throws Exception
1585      */
1586     List<DirectoryPurgeConfiguration> getAllDirectoryPurgeConfigurations()
1587         throws Exception;
1588 
1589     /**
1590      * Same method but compatible with standard XMLRPC
1591      *
1592      * @return list of directory purge configurations
1593      * @throws Exception
1594      */
1595     List<Object> getAllDirectoryPurgeConfigurationsRPC()
1596         throws Exception;
1597 
1598     int purgeLocalRepository( int repoPurgeId )
1599         throws Exception;
1600 
1601     int purgeDirectory( int dirPurgeId )
1602         throws Exception;
1603 
1604     // ----------------------------------------------------------------------
1605     // Release Results
1606     // ----------------------------------------------------------------------
1607 
1608     /**
1609      * Returns the release result.
1610      *
1611      * @param releaseId The release id
1612      * @return The release result
1613      * @throws Exception
1614      */
1615     ContinuumReleaseResult getReleaseResult( int releaseId )
1616         throws Exception;
1617 
1618     /**
1619      * Same method but compatible with standard XMLRPC
1620      *
1621      * @param releaseId The release id
1622      * @return The release result as RPC value
1623      * @throws Exception
1624      */
1625     Map<String, Object> getReleaseResultRPC( int releaseId )
1626         throws Exception;
1627 
1628     /**
1629      * Returns the project group release result list.
1630      *
1631      * @param projectGroupId The project group id
1632      * @return The release result list
1633      * @throws Exception
1634      */
1635     List<ContinuumReleaseResult> getReleaseResultsForProjectGroup( int projectGroupId )
1636         throws Exception;
1637 
1638     /**
1639      * Same method but compatible with standard XMLRPC
1640      *
1641      * @param projectGroupId The project group id
1642      * @return The release result list as RPC value
1643      * @throws Exception
1644      */
1645     List<Object> getReleaseResultsForProjectGroupRPC( int projectGroupId )
1646         throws Exception;
1647 
1648     /**
1649      * Remove the project release result.
1650      *
1651      * @param releaseResult The project release result
1652      * @return 0
1653      * @throws Exception
1654      */
1655     int removeReleaseResult( ContinuumReleaseResult releaseResult )
1656         throws Exception;
1657 
1658     /**
1659      * Same method but compatible with standard XMLRPC
1660      *
1661      * @param rr The project release result
1662      * @return 0
1663      * @throws Exception
1664      */
1665     int removeReleaseResultRPC( Map<String, Object> rr )
1666         throws Exception;
1667 
1668     /**
1669      * Returns the release output.
1670      *
1671      * @param releaseId The release id
1672      * @return The release output
1673      * @throws Exception
1674      */
1675     String getReleaseOutput( int releaseId )
1676         throws Exception;
1677 
1678     /**
1679      * Release prepare a project
1680      *
1681      * @param projectId
1682      * @param releaseProperties
1683      * @param releaseVersions
1684      * @param developmentVersions
1685      * @param environments
1686      * @param username
1687      * @return The release id
1688      * @throws Exception
1689      */
1690     String releasePrepare( int projectId, Properties releaseProperties, Map<String, String> releaseVersions,
1691                            Map<String, String> developmentVersions, Map<String, String> environments, String username )
1692         throws Exception;
1693 
1694     /**
1695      * Release perform a project
1696      *
1697      * @param projectId
1698      * @param releaseId
1699      * @param goals
1700      * @param arguments
1701      * @param useReleaseProfile
1702      * @param repositoryName
1703      * @param username
1704      * @return
1705      * @throws Exception
1706      */
1707     int releasePerform( int projectId, String releaseId, String goals, String arguments, boolean useReleaseProfile,
1708                         String repositoryName, String username )
1709         throws Exception;
1710 
1711     /**
1712      * Get release listener
1713      *
1714      * @param projectId
1715      * @param releaseId
1716      * @return
1717      * @throws Exception
1718      */
1719     ReleaseListenerSummary getListener( int projectId, String releaseId )
1720         throws Exception;
1721 
1722     /**
1723      * Cleanup the release
1724      *
1725      * @param projectId
1726      * @param releaseId
1727      * @return
1728      * @throws Exception
1729      */
1730     int releaseCleanup( int projectId, String releaseId )
1731         throws Exception;
1732 
1733     /**
1734      * Cleanup the release
1735      *
1736      * @param projectId
1737      * @param releaseId
1738      * @param releaseType
1739      * @return
1740      * @throws Exception
1741      */
1742     int releaseCleanup( int projectId, String releaseId, String releaseType )
1743         throws Exception;
1744 
1745     /**
1746      * Rollback a release
1747      *
1748      * @param projectId
1749      * @param releaseId
1750      * @return
1751      * @throws Exception
1752      */
1753     int releaseRollback( int projectId, String releaseId )
1754         throws Exception;
1755 
1756     /**
1757      * Get release plugin parameters
1758      *
1759      * @param projectId
1760      * @return
1761      */
1762     Map<String, Object> getReleasePluginParameters( int projectId )
1763         throws Exception;
1764 
1765     List<Map<String, String>> getProjectReleaseAndDevelopmentVersions( int projectId, String pomFilename,
1766                                                                        boolean autoVersionSubmodules )
1767         throws Exception;
1768 
1769     /**
1770      * Add/Register build agent to Continuum Master
1771      *
1772      * @return
1773      * @throws Exception
1774      */
1775     BuildAgentConfiguration addBuildAgent( BuildAgentConfiguration buildAgentConfiguration )
1776         throws Exception;
1777 
1778     /**
1779      * Same method but compatible with standard XMLRPC
1780      *
1781      * @return
1782      * @throws Exception
1783      */
1784     Map<String, Object> addBuildAgentRPC( Map<String, Object> buildAgentConfiguration )
1785         throws Exception;
1786 
1787     /**
1788      * Get build agent in Continuum Master
1789      *
1790      * @param url - build agent URL
1791      * @return
1792      */
1793     BuildAgentConfiguration getBuildAgent( String url );
1794 
1795     /**
1796      * Get the url of the build agent that is processing the project
1797      *
1798      * @param projectId         project Id
1799      * @param buildDefinitionId build definition Id
1800      * @return build agent url
1801      */
1802     String getBuildAgentUrl( int projectId, int buildDefinition )
1803         throws Exception;
1804 
1805     /**
1806      * Same method but compatible with standard XMLRPC
1807      *
1808      * @param url - build agent URL
1809      * @return
1810      */
1811     Map<String, Object> getBuildAgentRPC( String url );
1812 
1813     /**
1814      * Update build agent in Continuum Master
1815      *
1816      * @return
1817      * @throws Exception
1818      */
1819     BuildAgentConfiguration updateBuildAgent( BuildAgentConfiguration buildAgentConfiguration )
1820         throws Exception;
1821 
1822     /**
1823      * Same method but compatible with standard XMLRPC
1824      *
1825      * @return
1826      * @throws Exception
1827      */
1828     Map<String, Object> updateBuildAgentRPC( Map<String, Object> buildAgentConfiguration )
1829         throws Exception;
1830 
1831     /**
1832      * remove build agent in Continuum Master
1833      *
1834      * @param url - build agent URL
1835      * @return Exception
1836      */
1837     boolean removeBuildAgent( String url )
1838         throws Exception;
1839 
1840     /**
1841      * List all build agent in Continuum Master
1842      *
1843      * @return
1844      */
1845     List<BuildAgentConfiguration> getAllBuildAgents();
1846 
1847     /**
1848      * Same method but compatible with standard XMLRPC
1849      *
1850      * @return
1851      */
1852     List<Object> getAllBuildAgentsRPC();
1853 
1854     /**
1855      * Retrieve all enabled build agents with their available installations
1856      *
1857      * @return
1858      * @throws Exception
1859      */
1860     List<BuildAgentConfiguration> getBuildAgentsWithInstallations()
1861         throws Exception;
1862 
1863     /**
1864      * Same method but compatible with standard XMLRPC
1865      *
1866      * @return
1867      * @throws Exception
1868      */
1869     List<Object> getBuildAgentsWithInstallationsRPC()
1870         throws Exception;
1871 
1872     boolean pingBuildAgent( String buildAgentUrl )
1873         throws Exception;
1874 
1875     BuildAgentGroupConfiguration addBuildAgentGroup( BuildAgentGroupConfiguration buildAgentGroup )
1876         throws Exception;
1877 
1878     Map<String, Object> addBuildAgentGroupRPC( Map<String, Object> buildAgentGroup )
1879         throws Exception;
1880 
1881     BuildAgentGroupConfiguration getBuildAgentGroup( String name );
1882 
1883     Map<String, Object> getBuildAgentGroupRPC( String name );
1884 
1885     BuildAgentGroupConfiguration updateBuildAgentGroup( BuildAgentGroupConfiguration buildAgentGroup )
1886         throws Exception;
1887 
1888     Map<String, Object> updateBuildAgentGroupRPC( Map<String, Object> buildAgentGroup )
1889         throws Exception;
1890 
1891     int removeBuildAgentGroup( String name )
1892         throws Exception;
1893 }