View Javadoc
1   package org.kuali.common.jute.project.maven;
2   
3   import static com.google.common.base.Optional.absent;
4   import static org.kuali.common.jute.base.Precondition.checkMin;
5   import static org.kuali.common.jute.base.Precondition.checkNotNull;
6   
7   import javax.inject.Inject;
8   import javax.inject.Provider;
9   
10  import org.kuali.common.jute.process.ProcessService;
11  import org.kuali.common.jute.project.BuildScm;
12  import org.kuali.common.jute.scm.GitScmProvider;
13  import org.kuali.common.jute.scm.ScmType;
14  import org.kuali.common.jute.scm.SvnScmProvider;
15  import org.kuali.common.jute.scm.annotation.Timeout;
16  
17  import com.google.common.base.Optional;
18  
19  public final class BuildScmProvider implements Provider<Optional<BuildScm>> {
20  
21      @Inject
22      public BuildScmProvider(DirectoryContext dirs, Optional<ScmType> type, ProcessService service, @Timeout long timeoutMillis) {
23          this.dirs = checkNotNull(dirs, "dirs");
24          this.service = checkNotNull(service, "service");
25          this.type = checkNotNull(type, "type");
26          this.timeoutMillis = checkMin(timeoutMillis, 0, "timeoutMillis");
27      }
28  
29      private final DirectoryContext dirs;
30      private final Optional<ScmType> type;
31      private final ProcessService service;
32      private final long timeoutMillis;
33  
34      @Override
35      public Optional<BuildScm> get() {
36          if (!type.isPresent()) {
37              return absent();
38          }
39          switch (type.get()) {
40              case GIT:
41                  return Optional.of(new GitScmProvider(dirs.getBasedir(), service, timeoutMillis).get());
42              case SVN:
43                  return Optional.of(new SvnScmProvider(dirs.getBasedir(), service, timeoutMillis).get());
44              default:
45                  return absent();
46          }
47      }
48  
49      public DirectoryContext getDirs() {
50          return dirs;
51      }
52  
53      public ProcessService getService() {
54          return service;
55      }
56  }