You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by kr...@apache.org on 2019/06/07 17:58:19 UTC
[knox] branch master updated: KNOX-1874 - Ignore irrelevant files
in service definition directories (#99)
This is an automated email from the ASF dual-hosted git repository.
krisden pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git
The following commit(s) were added to refs/heads/master by this push:
new ce85fed KNOX-1874 - Ignore irrelevant files in service definition directories (#99)
ce85fed is described below
commit ce85fed6451fe9ec8d9c01e7011faee59e839bc5
Author: Todd Lipcon <to...@lipcon.org>
AuthorDate: Fri Jun 7 10:58:15 2019 -0700
KNOX-1874 - Ignore irrelevant files in service definition directories (#99)
---
.../gateway/util/ServiceDefinitionsLoader.java | 51 +++++++++++++---------
.../services/foo/1.0.0/service.xml.ignored | 2 +
2 files changed, 32 insertions(+), 21 deletions(-)
diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/util/ServiceDefinitionsLoader.java b/gateway-server/src/main/java/org/apache/knox/gateway/util/ServiceDefinitionsLoader.java
index c26e654..9944168 100644
--- a/gateway-server/src/main/java/org/apache/knox/gateway/util/ServiceDefinitionsLoader.java
+++ b/gateway-server/src/main/java/org/apache/knox/gateway/util/ServiceDefinitionsLoader.java
@@ -60,27 +60,31 @@ public class ServiceDefinitionsLoader {
}
}
+ private static Unmarshaller createUnmarshaller() {
+ try {
+ return jaxbContext.createUnmarshaller();
+ } catch (JAXBException e) {
+ throw new RuntimeException("Could not create unmarshaller", e);
+ }
+ }
+
public static Set<ServiceDeploymentContributor> loadServiceDefinitions(File servicesDir) {
Set<ServiceDeploymentContributor> contributors = new HashSet<>();
if ( servicesDir.exists() && servicesDir.isDirectory() ) {
- try {
- Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-
- for ( File file : getFileList(servicesDir) ) {
- try (InputStream inputStream = Files.newInputStream(file.toPath())) {
- ServiceDefinition definition = (ServiceDefinition) unmarshaller.unmarshal(inputStream);
- //look for rewrite rules as a sibling (for now)
- UrlRewriteRulesDescriptor rewriteRulesDescriptor = loadRewriteRules(file.getParentFile());
- contributors.add(new ServiceDefinitionDeploymentContributor(definition, rewriteRulesDescriptor));
- log.addedServiceDefinition(definition.getName(), definition.getRole(), definition.getVersion());
- } catch ( FileNotFoundException e ) {
- log.failedToFindServiceDefinitionFile(file.getAbsolutePath(), e);
- } catch (IOException e) {
- log.failedToLoadServiceDefinition(file.getAbsolutePath(), e);
- }
+ Unmarshaller unmarshaller = createUnmarshaller();
+
+ for ( File file : getFileList(servicesDir) ) {
+ try (InputStream inputStream = Files.newInputStream(file.toPath())) {
+ ServiceDefinition definition = (ServiceDefinition) unmarshaller.unmarshal(inputStream);
+ //look for rewrite rules as a sibling (for now)
+ UrlRewriteRulesDescriptor rewriteRulesDescriptor = loadRewriteRules(file.getParentFile());
+ contributors.add(new ServiceDefinitionDeploymentContributor(definition, rewriteRulesDescriptor));
+ log.addedServiceDefinition(definition.getName(), definition.getRole(), definition.getVersion());
+ } catch (FileNotFoundException e) {
+ log.failedToFindServiceDefinitionFile(file.getAbsolutePath(), e);
+ } catch (IOException | JAXBException e) {
+ log.failedToLoadServiceDefinition(file.getAbsolutePath(), e);
}
- } catch ( JAXBException e ) {
- log.failedToLoadServiceDefinition(SERVICE_FILE_NAME, e);
}
}
return contributors;
@@ -88,9 +92,8 @@ public class ServiceDefinitionsLoader {
public static Set<ServiceDefinition> getServiceDefinitions(File servicesDir) {
Set<ServiceDefinition> definitions = new HashSet<>();
+ Unmarshaller unmarshaller = createUnmarshaller();
try {
- Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-
for (File f : getFileList(servicesDir)){
ServiceDefinition definition = (ServiceDefinition) unmarshaller.unmarshal(f);
definitions.add( definition );
@@ -109,12 +112,18 @@ public class ServiceDefinitionsLoader {
files = FileUtils.listFiles(servicesDir, new IOFileFilter() {
@Override
public boolean accept(File file) {
- return file.getName().contains(SERVICE_FILE_NAME);
+ return acceptName(file.getName());
}
@Override
public boolean accept(File dir, String name) {
- return name.contains(SERVICE_FILE_NAME);
+ return acceptName(name);
+ }
+
+ private boolean acceptName(String name) {
+ return name.contains(SERVICE_FILE_NAME) &&
+ !name.startsWith(".") &&
+ name.endsWith(".xml");
}
}, TrueFileFilter.INSTANCE);
} else {
diff --git a/gateway-server/src/test/resources/services/foo/1.0.0/service.xml.ignored b/gateway-server/src/test/resources/services/foo/1.0.0/service.xml.ignored
new file mode 100644
index 0000000..1a46a43
--- /dev/null
+++ b/gateway-server/src/test/resources/services/foo/1.0.0/service.xml.ignored
@@ -0,0 +1,2 @@
+This file should be ignored by ServiceDefinitionsLoader because it doesn't
+have the proper .xml extension.