Skip to content

Commit cb441d9

Browse files
Remove XmlDependencies.fileRegularExpressions
Internally, only Dependencies.xml files are matched, so we can use the more performant file-matching pattern here. The public API remains unchanged and only supports regex for now.
1 parent eaa3968 commit cb441d9

File tree

5 files changed

+11
-13
lines changed

5 files changed

+11
-13
lines changed

source/AndroidResolver/AndroidResolver.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
<Compile Include="src\CommandLine.cs" />
6060
<Compile Include="src\CommandLineDialog.cs" />
6161
<Compile Include="src\EmbeddedResource.cs" />
62+
<Compile Include="src\FileMatchPattern.cs" />
6263
<Compile Include="src\GradleResolver.cs" />
6364
<Compile Include="src\GradleTemplateResolver.cs" />
6465
<Compile Include="src\GradleWrapper.cs" />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
namespace GooglePlayServices {
2+
public delegate bool FileMatchPattern(string filename);
3+
}

source/AndroidResolver/src/PlayServicesResolver.cs

+6-4
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ namespace GooglePlayServices {
1818
using System;
1919
using System.Collections.Generic;
2020
using System.IO;
21+
using System.Linq;
2122
using System.Text.RegularExpressions;
2223
using System.Threading;
2324
using System.Xml;
@@ -985,7 +986,7 @@ private static bool Initialize() {
985986
}
986987

987988
// Monitor Android dependency XML files to perform auto-resolution.
988-
AddAutoResolutionFilePatterns(xmlDependencies.fileRegularExpressions);
989+
autoResolveFilePatterns.Add(XmlDependencies.IsDependenciesFile);
989990

990991
svcSupport = PlayServicesSupport.CreateInstance(
991992
"PlayServicesResolver",
@@ -1072,15 +1073,16 @@ internal static void Log(string message, Google.LogLevel level = LogLevel.Info)
10721073
/// <summary>
10731074
/// Patterns of files that are monitored to trigger auto resolution.
10741075
/// </summary>
1075-
private static HashSet<Regex> autoResolveFilePatterns = new HashSet<Regex>();
1076+
private static HashSet<FileMatchPattern> autoResolveFilePatterns = new HashSet<FileMatchPattern>();
10761077

10771078
/// <summary>
10781079
/// Add file patterns to monitor to trigger auto resolution.
10791080
/// </summary>
10801081
/// <param name="patterns">Set of file patterns to monitor to trigger auto
10811082
/// resolution.</param>
10821083
public static void AddAutoResolutionFilePatterns(IEnumerable<Regex> patterns) {
1083-
autoResolveFilePatterns.UnionWith(patterns);
1084+
// Only regex patterns are supported in the public API, but a more performant default is used internally.
1085+
autoResolveFilePatterns.UnionWith(patterns.Select<Regex, FileMatchPattern>(p => p.IsMatch));
10841086
}
10851087

10861088
/// <summary>
@@ -1092,7 +1094,7 @@ private static bool CheckFilesForAutoResolution(HashSet<string> filesToCheck) {
10921094
bool resolve = false;
10931095
foreach (var asset in filesToCheck) {
10941096
foreach (var pattern in autoResolveFilePatterns) {
1095-
if (pattern.Match(asset).Success) {
1097+
if (pattern.Invoke(asset)) {
10961098
Log(String.Format("Found asset {0} matching {1}, attempting " +
10971099
"auto-resolution.",
10981100
asset, pattern.ToString()),

source/AndroidResolver/src/XmlDependencies.cs

-8
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,6 @@ namespace GooglePlayServices {
2828
/// </summary>
2929
internal class XmlDependencies {
3030

31-
/// <summary>
32-
/// Set of regular expressions that match files which contain dependency
33-
/// specifications.
34-
/// </summary>
35-
internal HashSet<Regex> fileRegularExpressions = new HashSet<Regex> {
36-
new Regex(@".*[/\\]Editor[/\\].*Dependencies\.xml$")
37-
};
38-
3931
/// <summary>
4032
/// Human readable name for dependency files managed by this class.
4133
/// </summary>

source/IOSResolver/src/IOSResolver.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1938,7 +1938,7 @@ private static void OnPostprocessAllAssets(string[] importedAssets,
19381938
var changedAssets = new List<string>(importedAssets);
19391939
changedAssets.AddRange(deletedAssets);
19401940
foreach (var asset in changedAssets) {
1941-
dependencyFileChanged = xmlDependencies.IsDependenciesFile(asset);
1941+
dependencyFileChanged = XmlDependencies.IsDependenciesFile(asset);
19421942
if (dependencyFileChanged) break;
19431943
}
19441944
if (dependencyFileChanged) RefreshXmlDependencies();

0 commit comments

Comments
 (0)