You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2018/08/23 16:25:04 UTC
[geode] branch develop updated: GEODE-5619: Change scanning for XSDRootElement to consider all packag… (#2361)
This is an automated email from the ASF dual-hosted git repository.
jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 966852d GEODE-5619: Change scanning for XSDRootElement to consider all packag… (#2361)
966852d is described below
commit 966852dd0f7e8f0d097c0776adcdaca9c4fa891c
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Thu Aug 23 09:24:57 2018 -0700
GEODE-5619: Change scanning for XSDRootElement to consider all packag… (#2361)
---
.../InternalConfigurationPersistenceService.java | 2 +-
.../internal/cli/util/ClasspathScanLoadHelper.java | 17 +++++++++++++++--
.../InternalConfigurationPersistenceServiceTest.java | 2 +-
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalConfigurationPersistenceService.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalConfigurationPersistenceService.java
index cbc0ee5..8015b30 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalConfigurationPersistenceService.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalConfigurationPersistenceService.java
@@ -195,7 +195,7 @@ public class InternalConfigurationPersistenceService implements ConfigurationPer
if (sysProperty != null) {
packages = Arrays.stream(sysProperty.split(",")).collect(Collectors.toSet());
} else {
- packages.add("org.apache.geode");
+ packages.add("*");
}
return packages;
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/ClasspathScanLoadHelper.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/ClasspathScanLoadHelper.java
index 93c06c5..d9e7c0f 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/ClasspathScanLoadHelper.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/ClasspathScanLoadHelper.java
@@ -19,10 +19,12 @@ import static java.util.stream.Collectors.toSet;
import java.util.Arrays;
import java.util.Collection;
import java.util.Set;
+import java.util.regex.Pattern;
import io.github.classgraph.ClassGraph;
import io.github.classgraph.ClassInfoList;
import io.github.classgraph.ScanResult;
+import io.github.classgraph.utils.WhiteBlackList;
/**
* Utility class to scan class-path & load classes.
@@ -45,7 +47,8 @@ public class ClasspathScanLoadHelper {
.filter(ci -> !ci.isAbstract() && !ci.isInterface() && ci.isPublic());
classInfoList = classInfoList
- .filter(ci -> Arrays.stream(onlyFromPackages).anyMatch(p -> ci.getName().startsWith(p)));
+ .filter(ci -> Arrays.stream(onlyFromPackages)
+ .anyMatch(p -> classMatchesPackage(ci.getName(), p)));
return classInfoList.loadClasses().stream().collect(toSet());
}
@@ -54,9 +57,19 @@ public class ClasspathScanLoadHelper {
ClassInfoList classInfoList = scanResult.getClassesWithAnnotation(annotation.getName());
classInfoList = classInfoList
- .filter(ci -> Arrays.stream(onlyFromPackages).anyMatch(p -> ci.getName().startsWith(p)));
+ .filter(ci -> Arrays.stream(onlyFromPackages)
+ .anyMatch(p -> classMatchesPackage(ci.getName(), p)));
return classInfoList.loadClasses().stream().collect(toSet());
}
+ private boolean classMatchesPackage(String className, String packageSpec) {
+ if (!packageSpec.contains("*")) {
+ return className.startsWith(packageSpec);
+ }
+
+ Pattern globPattern = WhiteBlackList.globToPattern(packageSpec);
+ return globPattern.matcher(className).matches();
+ }
+
}
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/InternalConfigurationPersistenceServiceTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/InternalConfigurationPersistenceServiceTest.java
index 281e682..33b9174 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/InternalConfigurationPersistenceServiceTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/InternalConfigurationPersistenceServiceTest.java
@@ -192,7 +192,7 @@ public class InternalConfigurationPersistenceServiceTest {
@Test
public void getPackagesToScanWithoutSystemProperty() {
Set<String> packages = service.getPackagesToScan();
- assertThat(packages).containsExactly("org.apache.geode");
+ assertThat(packages).containsExactly("*");
}
@Test