@Before public void setUp() throws Exception { doReturn( true ).when( repository ).isConnected(); doReturn( null ).when( repository ).getJobEntryAttributeString( any( ObjectId.class ), anyString() ); doReturn( rdi ).when( repository ).loadRepositoryDirectoryTree(); doReturn( directory ).when( rdi ).findDirectory( JOB_ENTRY_FILE_DIRECTORY ); doReturn( directory ).when( rdi ).findDirectory( "/home/admin/folder" ); doReturn( null ).when( space ).environmentSubstitute( anyString() ); doReturn( "" ).when( space ).environmentSubstitute( "" ); doReturn( JOB_ENTRY_FILE_PATH ).when( space ).environmentSubstitute( JOB_ENTRY_FILE_PATH ); doReturn( JOB_ENTRY_FILE_NAME ).when( space ).environmentSubstitute( JOB_ENTRY_FILE_NAME ); doReturn( JOB_ENTRY_FILE_DIRECTORY ).when( space ).environmentSubstitute( JOB_ENTRY_FILE_DIRECTORY ); doReturn( "hdfs://server/path/" ).when( space ).environmentSubstitute( "${hdfs}" ); doReturn( "/home/admin/folder/job.kjb" ).when( space ).environmentSubstitute( "${repositoryfullfilepath}" ); doReturn( "/home/admin/folder/" ).when( space ).environmentSubstitute( "${repositorypath}" ); doReturn( "job.kjb" ).when( space ).environmentSubstitute( "${jobname}" ); doReturn( "job" ).when( space ).environmentSubstitute( "job" ); doCallRealMethod().when( resolver ).normalizeSlashes( anyString() ); doReturn( space ).when( resolver ).resolveCurrentDirectory( any( ObjectLocationSpecificationMethod.class ), any( VariableSpace.class ), any( Repository.class ), any( Job.class ), anyString() ); whenNew( CurrentDirectoryResolver.class ).withNoArguments().thenReturn( resolver ); whenNew( JobMeta.class ).withAnyArguments().thenReturn( mock( JobMeta.class ) ); }
filename = realParent.getFilename(); return resolveCurrentDirectory( parentVariables, directory, filename );
try { CurrentDirectoryResolver r = new CurrentDirectoryResolver(); VariableSpace tmpSpace = r.resolveCurrentDirectory( specificationMethod, space, rep, parentJob, getFilename() );
resolver.resolveCurrentDirectory( injectMeta.getSpecificationMethod(), space, rep, injectMeta .getParentStepMeta(), injectMeta.getFileName() );
VariableSpace tmpSpace = r.resolveCurrentDirectory( executorMeta.getSpecificationMethod(), space, rep, executorMeta.getParentStepMeta(), executorMeta.getFileName() );
VariableSpace tmpSpace = r.resolveCurrentDirectory( executorMeta.getSpecificationMethod(), getVarSpaceOnlyWithRequiredParentVars( space ), rep, executorMeta.getParentStepMeta(), executorMeta.getFileName() );
public VariableSpace resolveCurrentDirectory( ObjectLocationSpecificationMethod specificationMethod, VariableSpace parentVariables, Repository repository, StepMeta stepMeta, String filename ) { RepositoryDirectoryInterface directory = null; if ( repository != null && specificationMethod.equals( ObjectLocationSpecificationMethod.REPOSITORY_BY_NAME ) && stepMeta != null && stepMeta.getParentTransMeta() != null && stepMeta.getParentTransMeta().getRepositoryDirectory() != null ) { directory = stepMeta.getParentTransMeta().getRepositoryDirectory(); } else if ( repository == null && stepMeta != null && stepMeta.getParentTransMeta() != null ) { filename = stepMeta.getParentTransMeta().getFilename(); } else if ( stepMeta != null && stepMeta.getParentTransMeta() != null && repository != null && specificationMethod.equals( ObjectLocationSpecificationMethod.FILENAME ) ) { // we're using FILENAME but we are connected to a repository directory = stepMeta.getParentTransMeta().getRepositoryDirectory(); } else if ( stepMeta != null && stepMeta.getParentTransMeta() != null && filename == null ) { filename = stepMeta.getParentTransMeta().getFilename(); } return resolveCurrentDirectory( parentVariables, directory, filename ); }
TransMeta transMeta = null; CurrentDirectoryResolver r = new CurrentDirectoryResolver(); VariableSpace tmpSpace = r.resolveCurrentDirectory( specificationMethod, space, rep, parentJob, getFilename() ); switch ( specificationMethod ) {
public static TransMeta getTransMetaFromRepo( String repositoryDir, String repositoryFile, Repository rep, VariableSpace space ) throws KettleException { if ( space instanceof JobEntryHadoopTransJobExecutor ) { CurrentDirectoryResolver r = new CurrentDirectoryResolver(); JobEntryHadoopTransJobExecutor jobEntry = (JobEntryHadoopTransJobExecutor) space; space = r.resolveCurrentDirectory( jobEntry, jobEntry.getParentJob().getRepositoryDirectory(), null ); } String repositoryDirS = space.environmentSubstitute( repositoryDir ); if ( repositoryDirS.isEmpty() ) { repositoryDirS = "/"; } String repositoryFileS = space.environmentSubstitute( repositoryFile ); RepositoryDirectoryInterface repositoryDirectory = rep.loadRepositoryDirectoryTree().findDirectory( repositoryDirS ); return rep.loadTransformation( repositoryFileS, repositoryDirectory, null, true, null ); }