package org.kie.config.cli.support;

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;

import org.guvnor.structure.backend.repositories.EnvironmentParameters;
import org.guvnor.structure.repositories.Repository;
import org.guvnor.structure.repositories.impl.git.GitRepository;
import org.guvnor.structure.server.config.ConfigGroup;
import org.guvnor.structure.server.config.ConfigItem;
import org.guvnor.structure.server.config.PasswordService;
import org.guvnor.structure.server.config.SecureConfigItem;
import org.guvnor.structure.server.repositories.RepositoryFactoryHelper;

import static org.guvnor.structure.repositories.impl.git.GitRepository.SCHEME;
import static org.uberfire.commons.validation.PortablePreconditions.checkNotNull;

@ApplicationScoped
public class SimplifiedGitRepoHelper implements RepositoryFactoryHelper {

    @Inject
    private PasswordService secureService;

    @Override
    public boolean accept( final ConfigGroup repoConfig ) {
        checkNotNull( "repoConfig", repoConfig );
        final ConfigItem<String> schemeConfigItem = repoConfig.getConfigItem( EnvironmentParameters.SCHEME );
        checkNotNull( "schemeConfigItem", schemeConfigItem );
        return SCHEME.equals( schemeConfigItem.getValue() );
    }

    @Override
    public Repository newRepository( final ConfigGroup repoConfig ) {
        checkNotNull( "repoConfig", repoConfig );
        final ConfigItem<String> schemeConfigItem = repoConfig.getConfigItem( EnvironmentParameters.SCHEME );
        checkNotNull( "schemeConfigItem", schemeConfigItem );

        String branch = repoConfig.getConfigItemValue( EnvironmentParameters.BRANCH );
        if ( branch == null ) {
            branch = "master";
        }

        final GitRepository repo = new GitRepository( repoConfig.getName() );
        repo.setCurrentBranch( branch );

        for ( final ConfigItem item : repoConfig.getItems() ) {
            if ( item instanceof SecureConfigItem) {
                repo.addEnvironmentParameter( item.getName(), secureService.decrypt( item.getValue().toString() ) );
            } else {
                repo.addEnvironmentParameter( item.getName(), item.getValue() );
            }
        }

        if ( !repo.isValid() ) {
            throw new IllegalStateException( "Repository " + repoConfig.getName() + " not valid" );
        }

        return repo;
    }
}

@@ -34,88 +34,8 @@
 t;%0A%0A
-import javax.enterprise.context.ApplicationScoped;%0Aimport javax.inject.Inject;%0A%0A
 impo
@@ -522,16 +522,96 @@
 elper;%0A%0A
+import javax.enterprise.context.ApplicationScoped;%0Aimport javax.inject.Inject;%0A%0A
 import s
@@ -954,17 +954,16 @@
  accept(
- 
 final Co
@@ -974,33 +974,32 @@
 Group repoConfig
- 
 ) %7B%0A        chec
@@ -999,33 +999,32 @@
    checkNotNull(
- 
 %22repoConfig%22, re
@@ -1023,33 +1023,32 @@
 fig%22, repoConfig
- 
 );%0A        final
@@ -1103,33 +1103,32 @@
 g.getConfigItem(
- 
 EnvironmentParam
@@ -1131,33 +1131,32 @@
 arameters.SCHEME
- 
 );%0A        check
@@ -1155,33 +1155,32 @@
    checkNotNull(
- 
 %22schemeConfigIte
@@ -1199,17 +1199,16 @@
 nfigItem
- 
 );%0A     
@@ -1231,17 +1231,16 @@
 .equals(
- 
 schemeCo
@@ -1254,25 +1254,24 @@
 m.getValue()
- 
 );%0A    %7D%0A%0A  
@@ -1318,17 +1318,16 @@
 ository(
- 
 final Co
@@ -1346,17 +1346,16 @@
 poConfig
- 
 ) %7B%0A    
@@ -1371,17 +1371,16 @@
 NotNull(
- 
 %22repoCon
@@ -1395,17 +1395,16 @@
 poConfig
- 
 );%0A     
@@ -1475,17 +1475,16 @@
 figItem(
- 
 Environm
@@ -1503,17 +1503,16 @@
 s.SCHEME
- 
 );%0A     
@@ -1527,17 +1527,16 @@
 NotNull(
- 
 %22schemeC
@@ -1563,17 +1563,16 @@
 nfigItem
- 
 );%0A%0A    
@@ -1621,17 +1621,16 @@
 emValue(
- 
 Environm
@@ -1649,17 +1649,16 @@
 s.BRANCH
- 
 );%0A     
@@ -1664,17 +1664,16 @@
     if (
- 
 branch =
@@ -1678,17 +1678,16 @@
  == null
- 
 ) %7B%0A    
@@ -1777,17 +1777,16 @@
 ository(
- 
 repoConf
@@ -1797,20 +1797,21 @@
 etName()
- 
 );%0A
+//
         
@@ -1819,18 +1819,14 @@
 epo.
-setCurrent
+change
 Bran
@@ -1853,17 +1853,16 @@
    for (
- 
 final Co
@@ -1898,17 +1898,16 @@
 tItems()
- 
 ) %7B%0A    
@@ -1918,17 +1918,16 @@
     if (
- 
 item ins
@@ -1991,33 +1991,32 @@
 onmentParameter(
- 
 item.getName(), 
@@ -2037,17 +2037,16 @@
 decrypt(
- 
 item.get
@@ -2063,19 +2063,17 @@
 String()
- ) 
+)
 );%0A     
@@ -2133,17 +2133,16 @@
 rameter(
- 
 item.get
@@ -2164,17 +2164,16 @@
 tValue()
- 
 );%0A     
@@ -2204,17 +2204,16 @@
     if (
- 
 !repo.is
@@ -2219,17 +2219,16 @@
 sValid()
- 
 ) %7B%0A    
@@ -2267,17 +2267,16 @@
 ception(
- 
 %22Reposit
@@ -2318,17 +2318,16 @@
 t valid%22
- 
 );%0A     
@@ -2359,10 +2359,10 @@
 ;%0A    %7D%0A
-%7D
 %0A
+%7D

Change branch in GitRepository changed