20
20
*/
21
21
22
22
import java .util .ArrayList ;
23
+ import java .util .Arrays ;
23
24
import java .util .Collection ;
24
25
import java .util .EnumSet ;
25
26
import java .util .HashMap ;
@@ -364,11 +365,11 @@ private static Pattern compile( String pattern )
364
365
}
365
366
else if ( tokens .length == 4 )
366
367
{
367
- // trivial, full pattern w/o classifier: G:A:T:V
368
+ // trivial, full pattern w/ version or classifier: G:A:T:V or G:A:T:C
368
369
patterns .add ( toPattern ( tokens [0 ], Coordinate .GROUP_ID ) );
369
370
patterns .add ( toPattern ( tokens [1 ], Coordinate .ARTIFACT_ID ) );
370
371
patterns .add ( toPattern ( tokens [2 ], Coordinate .TYPE ) );
371
- patterns .add ( toPattern ( tokens [3 ], Coordinate .BASE_VERSION ) );
372
+ patterns .add ( toPattern ( tokens [3 ], Coordinate .BASE_VERSION , Coordinate . CLASSIFIER ) );
372
373
}
373
374
else if ( tokens .length == 3 )
374
375
{
@@ -388,31 +389,25 @@ else if ( tokens.length == 3 )
388
389
}
389
390
else if ( ANY .equals ( tokens [0 ] ) && ANY .equals ( tokens [1 ] ) )
390
391
{
391
- patterns .add ( new CoordinateMatchingPattern ( pattern , tokens [2 ],
392
- EnumSet .of ( Coordinate .TYPE , Coordinate .CLASSIFIER ) ) );
392
+ patterns .add ( toPattern ( pattern , tokens [2 ], Coordinate .TYPE , Coordinate .CLASSIFIER ) );
393
393
}
394
394
else if ( ANY .equals ( tokens [0 ] ) && ANY .equals ( tokens [2 ] ) )
395
395
{
396
- patterns .add ( new CoordinateMatchingPattern ( pattern , tokens [1 ],
397
- EnumSet .of ( Coordinate .ARTIFACT_ID , Coordinate .TYPE ) ) );
396
+ patterns .add ( toPattern ( pattern , tokens [1 ], Coordinate .ARTIFACT_ID , Coordinate .TYPE ) );
398
397
}
399
398
else if ( ANY .equals ( tokens [0 ] ) )
400
399
{
401
- patterns .add ( new CoordinateMatchingPattern ( pattern , tokens [1 ],
402
- EnumSet .of ( Coordinate .GROUP_ID , Coordinate .ARTIFACT_ID ) ) );
403
- patterns .add ( new CoordinateMatchingPattern ( pattern , tokens [2 ],
404
- EnumSet .of ( Coordinate .TYPE , Coordinate .CLASSIFIER ) ) );
400
+ patterns .add ( toPattern ( pattern , tokens [1 ], Coordinate .GROUP_ID , Coordinate .ARTIFACT_ID ) );
401
+ patterns .add ( toPattern ( pattern , tokens [2 ], Coordinate .TYPE , Coordinate .CLASSIFIER ) );
405
402
}
406
403
else if ( ANY .equals ( tokens [1 ] ) && ANY .equals ( tokens [2 ] ) )
407
404
{
408
- patterns .add ( new CoordinateMatchingPattern ( pattern , tokens [0 ],
409
- EnumSet .of ( Coordinate .GROUP_ID , Coordinate .ARTIFACT_ID ) ) );
405
+ patterns .add ( toPattern ( pattern , tokens [0 ], Coordinate .GROUP_ID , Coordinate .ARTIFACT_ID ) );
410
406
}
411
407
else if ( ANY .equals ( tokens [1 ] ) )
412
408
{
413
- patterns .add ( toPattern ( tokens [0 ], Coordinate .GROUP_ID ) );
414
- patterns .add ( new CoordinateMatchingPattern ( pattern , tokens [2 ],
415
- EnumSet .of ( Coordinate .TYPE , Coordinate .CLASSIFIER ) ) );
409
+ patterns .add ( toPattern ( tokens [0 ], tokens [0 ], Coordinate .GROUP_ID ) );
410
+ patterns .add ( toPattern ( pattern , tokens [2 ], Coordinate .TYPE , Coordinate .CLASSIFIER ) );
416
411
}
417
412
else if ( ANY .equals ( tokens [2 ] ) )
418
413
{
@@ -441,9 +436,8 @@ else if ( tokens.length == 2 )
441
436
}
442
437
else if ( ANY .equals ( tokens [0 ] ) )
443
438
{
444
- patterns .add ( new CoordinateMatchingPattern ( pattern , tokens [1 ],
445
- EnumSet .of ( Coordinate .GROUP_ID , Coordinate .ARTIFACT_ID , Coordinate .TYPE ,
446
- Coordinate .BASE_VERSION ) ) );
439
+ patterns .add ( toPattern ( pattern , tokens [1 ],
440
+ Coordinate .GROUP_ID , Coordinate .ARTIFACT_ID , Coordinate .TYPE , Coordinate .BASE_VERSION ) );
447
441
}
448
442
else if ( ANY .equals ( tokens [1 ] ) )
449
443
{
@@ -481,15 +475,22 @@ else if ( ANY.equals( tokens[1] ) )
481
475
}
482
476
}
483
477
484
- private static Pattern toPattern ( final String token , final Coordinate coordinate )
478
+ private static Pattern toPattern ( final String token , final Coordinate ... coordinates )
479
+ {
480
+ return toPattern ( token , token , coordinates );
481
+ }
482
+
483
+ private static Pattern toPattern ( final String pattern , final String token , final Coordinate ... coordinates )
485
484
{
486
485
if ( ANY .equals ( token ) )
487
486
{
488
487
return MATCH_ALL_PATTERN ;
489
488
}
490
489
else
491
490
{
492
- return new CoordinateMatchingPattern ( token , token , EnumSet .of ( coordinate ) );
491
+ EnumSet <Coordinate > coordinateSet = EnumSet .noneOf ( Coordinate .class );
492
+ coordinateSet .addAll ( Arrays .asList ( coordinates ) );
493
+ return new CoordinateMatchingPattern ( pattern , token , coordinateSet );
493
494
}
494
495
}
495
496
0 commit comments