@@ -191,7 +191,7 @@ public Table call() {
191191 }
192192
193193 @ Override
194- public < T extends JobInfo > T create (T job , JobOption ... options ) throws BigQueryException {
194+ public JobInfo create (JobInfo job , JobOption ... options ) throws BigQueryException {
195195 final Job jobPb = setProjectId (job ).toPb ();
196196 final Map <BigQueryRpc .Option , ?> optionsMap = optionMap (options );
197197 try {
@@ -442,12 +442,12 @@ public List<FieldValue> apply(TableRow rowPb) {
442442 }
443443
444444 @ Override
445- public < T extends JobInfo > T getJob (String jobId , JobOption ... options ) throws BigQueryException {
445+ public JobInfo getJob (String jobId , JobOption ... options ) throws BigQueryException {
446446 return getJob (JobId .of (jobId ), options );
447447 }
448448
449449 @ Override
450- public < T extends JobInfo > T getJob (final JobId jobId , JobOption ... options )
450+ public JobInfo getJob (final JobId jobId , JobOption ... options )
451451 throws BigQueryException {
452452 final Map <BigQueryRpc .Option , ?> optionsMap = optionMap (options );
453453 try {
@@ -457,7 +457,7 @@ public Job call() {
457457 return bigQueryRpc .getJob (jobId .job (), optionsMap );
458458 }
459459 }, options ().retryParams (), EXCEPTION_HANDLER );
460- return answer == null ? null : JobInfo .< T > fromPb (answer );
460+ return answer == null ? null : JobInfo .fromPb (answer );
461461 } catch (RetryHelper .RetryHelperException e ) {
462462 throw BigQueryException .translateAndThrow (e );
463463 }
@@ -646,42 +646,48 @@ private TableId setProjectId(TableId table) {
646646 }
647647
648648 private JobInfo setProjectId (JobInfo job ) {
649- if (job instanceof CopyJobInfo ) {
650- CopyJobInfo copyJob = (CopyJobInfo ) job ;
651- CopyJobInfo .Builder copyBuilder = copyJob .toBuilder ();
652- copyBuilder .destinationTable (setProjectId (copyJob .destinationTable ()));
653- copyBuilder .sourceTables (
654- Lists .transform (copyJob .sourceTables (), new Function <TableId , TableId >() {
655- @ Override
656- public TableId apply (TableId tableId ) {
657- return setProjectId (tableId );
658- }
659- }));
660- return copyBuilder .build ();
661- }
662- if (job instanceof QueryJobInfo ) {
663- QueryJobInfo queryJob = (QueryJobInfo ) job ;
664- QueryJobInfo .Builder queryBuilder = queryJob .toBuilder ();
665- if (queryJob .destinationTable () != null ) {
666- queryBuilder .destinationTable (setProjectId (queryJob .destinationTable ()));
667- }
668- if (queryJob .defaultDataset () != null ) {
669- queryBuilder .defaultDataset (setProjectId (queryJob .defaultDataset ()));
670- }
671- return queryBuilder .build ();
672- }
673- if (job instanceof ExtractJobInfo ) {
674- ExtractJobInfo extractJob = (ExtractJobInfo ) job ;
675- ExtractJobInfo .Builder extractBuilder = extractJob .toBuilder ();
676- extractBuilder .sourceTable (setProjectId (extractJob .sourceTable ()));
677- return extractBuilder .build ();
678- }
679- if (job instanceof LoadJobInfo ) {
680- LoadJobInfo loadJob = (LoadJobInfo ) job ;
681- LoadJobInfo .Builder loadBuilder = loadJob .toBuilder ();
682- return loadBuilder .configuration (setProjectId (loadJob .configuration ())).build ();
683- }
684- return job ;
649+ JobConfiguration configuration = job .configuration ();
650+ JobInfo .Builder jobBuilder = job .toBuilder ();
651+ switch (configuration .type ()) {
652+ case COPY :
653+ CopyJobConfiguration copyConfiguration = (CopyJobConfiguration ) configuration ;
654+ CopyJobConfiguration .Builder copyBuilder = copyConfiguration .toBuilder ();
655+ copyBuilder .sourceTables (
656+ Lists .transform (copyConfiguration .sourceTables (), new Function <TableId , TableId >() {
657+ @ Override
658+ public TableId apply (TableId tableId ) {
659+ return setProjectId (tableId );
660+ }
661+ }));
662+ copyBuilder .destinationTable (setProjectId (copyConfiguration .destinationTable ()));
663+ jobBuilder .configuration (copyBuilder .build ());
664+ break ;
665+ case QUERY :
666+ QueryJobConfiguration queryConfiguration = (QueryJobConfiguration ) configuration ;
667+ QueryJobConfiguration .Builder queryBuilder = queryConfiguration .toBuilder ();
668+ if (queryConfiguration .destinationTable () != null ) {
669+ queryBuilder .destinationTable (setProjectId (queryConfiguration .destinationTable ()));
670+ }
671+ if (queryConfiguration .defaultDataset () != null ) {
672+ queryBuilder .defaultDataset (setProjectId (queryConfiguration .defaultDataset ()));
673+ }
674+ jobBuilder .configuration (queryBuilder .build ());
675+ break ;
676+ case EXTRACT :
677+ ExtractJobConfiguration extractConfiguration = (ExtractJobConfiguration ) configuration ;
678+ ExtractJobConfiguration .Builder extractBuilder = extractConfiguration .toBuilder ();
679+ extractBuilder .sourceTable (setProjectId (extractConfiguration .sourceTable ()));
680+ jobBuilder .configuration (extractBuilder .build ());
681+ break ;
682+ case LOAD :
683+ LoadJobConfiguration loadConfiguration = (LoadJobConfiguration ) configuration ;
684+ jobBuilder .configuration ((LoadJobConfiguration ) setProjectId (loadConfiguration ));
685+ break ;
686+ default :
687+ // never reached
688+ throw new IllegalArgumentException ("Job configuration is not supported" );
689+ }
690+ return jobBuilder .build ();
685691 }
686692
687693 private QueryRequest setProjectId (QueryRequest request ) {
0 commit comments