You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2018/11/18 21:20:35 UTC
[02/16] incubator-tamaya-sandbox git commit: TAMAYA-274 Reduced API
footprint by using Java 8 features. Added some lambdas. TAMAYA-355 Enable
mapping of lists and arrays into internal datastructures. TAMAYA-353 Adding
support for different classloader
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/metamodel/src/test/java/org/apache/tamaya/metamodel/internal/resolver/LoggingReader.java
----------------------------------------------------------------------
diff --git a/metamodel/src/test/java/org/apache/tamaya/metamodel/internal/resolver/LoggingReader.java b/metamodel/src/test/java/org/apache/tamaya/metamodel/internal/resolver/LoggingReader.java
index c3d646b..e931f47 100644
--- a/metamodel/src/test/java/org/apache/tamaya/metamodel/internal/resolver/LoggingReader.java
+++ b/metamodel/src/test/java/org/apache/tamaya/metamodel/internal/resolver/LoggingReader.java
@@ -19,12 +19,8 @@
package org.apache.tamaya.metamodel.internal.resolver;
import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
-import org.apache.tamaya.metamodel.MetaContext;
import org.apache.tamaya.metamodel.spi.MetaConfigurationReader;
import org.apache.tamaya.spi.ConfigurationBuilder;
-import org.apache.tamaya.spi.ConfigurationContext;
-import org.apache.tamaya.spi.ConfigurationContextBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -50,8 +46,8 @@ public class LoggingReader implements MetaConfigurationReader{
@Override
public void run() {
Map<String, Object> meta = new HashMap<>();
- meta.put("context", ConfigurationProvider.getConfiguration().getContext());
- meta.put("config", ConfigurationProvider.getConfiguration());
+ meta.put("context", Configuration.current().getContext());
+ meta.put("config", Configuration.current());
NodeList nodeList = document.getDocumentElement().getElementsByTagName("context");
for(int i=0;i<nodeList.getLength();i++){
Node node = nodeList.item(i);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/propertysources/src/main/java/org/apache/tamaya/propertysources/ConfigDirPropertySourceProvider.java
----------------------------------------------------------------------
diff --git a/propertysources/src/main/java/org/apache/tamaya/propertysources/ConfigDirPropertySourceProvider.java b/propertysources/src/main/java/org/apache/tamaya/propertysources/ConfigDirPropertySourceProvider.java
index 19a7dfb..faf2b21 100644
--- a/propertysources/src/main/java/org/apache/tamaya/propertysources/ConfigDirPropertySourceProvider.java
+++ b/propertysources/src/main/java/org/apache/tamaya/propertysources/ConfigDirPropertySourceProvider.java
@@ -66,7 +66,7 @@ public class ConfigDirPropertySourceProvider extends AbstractPathPropertySourceP
"Failed to read configuration from " + url);
return Collections.emptySet();
}
- return asCollection(new MappedConfigurationDataPropertySource(config));
+ return Collections.singleton(new MappedConfigurationDataPropertySource(config));
} catch (Exception e) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE,
"Failed to read configuration from " + url, e);
@@ -74,9 +74,4 @@ public class ConfigDirPropertySourceProvider extends AbstractPathPropertySourceP
}
}
- private Collection<PropertySource> asCollection(PropertySource propertySource) {
- List<PropertySource> result = new ArrayList<>(1);
- result.add(propertySource);
- return result;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/propertysources/src/main/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProvider.java
----------------------------------------------------------------------
diff --git a/propertysources/src/main/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProvider.java b/propertysources/src/main/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProvider.java
index fe5759f..d450842 100644
--- a/propertysources/src/main/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProvider.java
+++ b/propertysources/src/main/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProvider.java
@@ -47,7 +47,7 @@ public class MetainfConfigPropertySourceProvider extends AbstractPathPropertySou
protected Collection<PropertySource> getPropertySources(URL url) {
try {
ConfigurationData config = ConfigurationFormats.readConfigurationData(url);
- return asCollection(new MappedConfigurationDataPropertySource(config));
+ return Collections.singleton(new MappedConfigurationDataPropertySource(config));
} catch (Exception e) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE,
"Failed to read configuration from " + url, e);
@@ -55,9 +55,4 @@ public class MetainfConfigPropertySourceProvider extends AbstractPathPropertySou
}
}
- private Collection<PropertySource> asCollection(PropertySource propertySource) {
- List<PropertySource> result = new ArrayList<>(1);
- result.add(propertySource);
- return result;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/propertysources/src/main/java/org/apache/tamaya/propertysources/PropertySourceBuilder.java
----------------------------------------------------------------------
diff --git a/propertysources/src/main/java/org/apache/tamaya/propertysources/PropertySourceBuilder.java b/propertysources/src/main/java/org/apache/tamaya/propertysources/PropertySourceBuilder.java
deleted file mode 100644
index 2b1f96b..0000000
--- a/propertysources/src/main/java/org/apache/tamaya/propertysources/PropertySourceBuilder.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.propertysources;
-
-import org.apache.tamaya.spisupport.propertysource.SimplePropertySource;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * Simple builder for building a {@link org.apache.tamaya.spi.PropertySource}.
- */
-public final class PropertySourceBuilder {
- /** The ordinal to be used. */
- private int ordinal;
- /** The name to be used. */
- private final String name;
- /** The properties. */
- private final Map<String,String> properties = new HashMap<>();
-
- /** private constructor. */
- private PropertySourceBuilder(String name){
- this.name = Objects.requireNonNull(name);
- }
-
- /**
- * Gets a new instance of a builder.
- * @param name The name of the property source, not null.
- * @return a new instance.
- */
- public static PropertySourceBuilder of(String name){
- return new PropertySourceBuilder(name);
- }
-
- /**
- * Gets a new instance of a builder.
- * @param name The name of the property source, not null.
- * @return a new instance.
- */
- public static PropertySourceBuilder from(String name){
- return new PropertySourceBuilder(name);
- }
-
- /**
- * Sets a new property key/value.
- * @param key the property key, not null.
- * @param value the property value, not null.
- * @return the bulder for chaining.
- */
- public PropertySourceBuilder put(String key, String value){
- this.properties.put(key, value);
- return this;
- }
-
- /**
- * Put all the given key, values.
- * @param values the new key/values, not null.
- * @return the bulder for chaining.
- */
- public PropertySourceBuilder putAll(Map<String, String> values){
- this.properties.putAll(values);
- return this;
- }
-
- /**
- * Sets the ordinal to be used explicitly (instead evaluating it using {@code tamaya.ordinal}.
- * @param ordinal the explicit ordinal to be used.
- * @return the bulder for chaining.
- */
- public PropertySourceBuilder withOrdinal(int ordinal){
- this.ordinal = ordinal;
- return this;
- }
-
- /**
- * Puts all values from the given property source.
- * @param propertySource the property source, not null.
- * @return the bulder for chaining.
- */
- public PropertySourceBuilder putAll(PropertySource propertySource){
- for(PropertyValue val:propertySource.getProperties().values()) {
- this.properties.put(val.getKey(), val.getValue());
- }
- return this;
- }
-
- /**
- * Creates a new immutable {@link org.apache.tamaya.spi.PropertySource} instance.
- * @return a new immutable {@link org.apache.tamaya.spi.PropertySource} instance, never null.
- */
- public PropertySource build(){
- return new SimplePropertySource(name, properties);
- }
-
- @Override
- public String toString() {
- return "PropertySourceBuilder{" +
- "ordinal=" + ordinal +
- ", name='" + name + '\'' +
- ", properties=" + properties +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/propertysources/src/main/java/org/apache/tamaya/propertysources/SimplePropertySourceBuilder.java
----------------------------------------------------------------------
diff --git a/propertysources/src/main/java/org/apache/tamaya/propertysources/SimplePropertySourceBuilder.java b/propertysources/src/main/java/org/apache/tamaya/propertysources/SimplePropertySourceBuilder.java
new file mode 100644
index 0000000..884ca61
--- /dev/null
+++ b/propertysources/src/main/java/org/apache/tamaya/propertysources/SimplePropertySourceBuilder.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.propertysources;
+
+import org.apache.tamaya.spisupport.propertysource.SimplePropertySource;
+import org.apache.tamaya.spi.PropertySource;
+import org.apache.tamaya.spi.PropertyValue;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Simple builder for building a {@link org.apache.tamaya.spi.PropertySource}.
+ */
+public final class SimplePropertySourceBuilder {
+ /** The ordinal to be used. */
+ private int ordinal;
+ /** The name to be used. */
+ private final String name;
+ /** The properties. */
+ private final Map<String,String> properties = new HashMap<>();
+
+ /** private constructor. */
+ private SimplePropertySourceBuilder(String name){
+ this.name = Objects.requireNonNull(name);
+ }
+
+ /**
+ * Gets a new instance of a builder.
+ * @param name The name of the property source, not null.
+ * @return a new instance.
+ */
+ public static SimplePropertySourceBuilder of(String name){
+ return new SimplePropertySourceBuilder(name);
+ }
+
+ /**
+ * Gets a new instance of a builder.
+ * @param name The name of the property source, not null.
+ * @return a new instance.
+ */
+ public static SimplePropertySourceBuilder from(String name){
+ return new SimplePropertySourceBuilder(name);
+ }
+
+ /**
+ * Sets a new property key/value.
+ * @param key the property key, not null.
+ * @param value the property value, not null.
+ * @return the bulder for chaining.
+ */
+ public SimplePropertySourceBuilder put(String key, String value){
+ this.properties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Put all the given key, values.
+ * @param values the new key/values, not null.
+ * @return the bulder for chaining.
+ */
+ public SimplePropertySourceBuilder putAll(Map<String, String> values){
+ this.properties.putAll(values);
+ return this;
+ }
+
+ /**
+ * Sets the ordinal to be used explicitly (instead evaluating it using {@code tamaya.ordinal}.
+ * @param ordinal the explicit ordinal to be used.
+ * @return the bulder for chaining.
+ */
+ public SimplePropertySourceBuilder withOrdinal(int ordinal){
+ this.ordinal = ordinal;
+ return this;
+ }
+
+ /**
+ * Puts all values from the given property source.
+ * @param propertySource the property source, not null.
+ * @return the bulder for chaining.
+ */
+ public SimplePropertySourceBuilder putAll(PropertySource propertySource){
+ for(PropertyValue val:propertySource.getProperties().values()) {
+ this.properties.put(val.getKey(), val.getValue());
+ }
+ return this;
+ }
+
+ /**
+ * Creates a new immutable {@link org.apache.tamaya.spi.PropertySource} instance.
+ * @return a new immutable {@link org.apache.tamaya.spi.PropertySource} instance, never null.
+ */
+ public PropertySource build(){
+ return new SimplePropertySource(name, properties);
+ }
+
+ @Override
+ public String toString() {
+ return "PropertySourceBuilder{" +
+ "ordinal=" + ordinal +
+ ", name='" + name + '\'' +
+ ", properties=" + properties +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/propertysources/src/test/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProviderTest.java
----------------------------------------------------------------------
diff --git a/propertysources/src/test/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProviderTest.java b/propertysources/src/test/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProviderTest.java
index 0250ff6..fecfff7 100644
--- a/propertysources/src/test/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProviderTest.java
+++ b/propertysources/src/test/java/org/apache/tamaya/propertysources/MetainfConfigPropertySourceProviderTest.java
@@ -31,7 +31,7 @@ public class MetainfConfigPropertySourceProviderTest {
public void getPropertySources_Default() throws Exception {
MetainfConfigPropertySourceProvider provider = new MetainfConfigPropertySourceProvider();
assertNotNull(provider.getPropertySources());
- // TODO add test for containing property sources.
+ // TODO addNode test for containing property sources.
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java
----------------------------------------------------------------------
diff --git a/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java b/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java
index de65fb7..f1b600a 100644
--- a/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java
+++ b/remote/src/main/java/org/apache/tamaya/remote/BaseRemotePropertySource.java
@@ -90,26 +90,26 @@ public abstract class BaseRemotePropertySource implements PropertySource{
}
protected Map<String,String> mapConfigurationData(ConfigurationData data){
- Map<String,String> readProperties;
+ Map<String,String> readProperties = new HashMap<>();
if(data!=null){
- readProperties = data.getCombinedProperties();
- if(readProperties!=null){
- Map<String,String> newProperties = new HashMap<>();
- for(Map.Entry<String,String> en:readProperties.entrySet()){
- // filter data entries
- newProperties.put(en.getKey(), en.getValue());
- }
- // the configs served by the tamaya server module has a 'data' root section containing the
- // config entries. if not present, we assume an alternate format, which is sued as is...
- if(newProperties.isEmpty()){
- Logger.getLogger(getClass().getName()).info(
- "Loaded remote config from: " + data.getResource() + ", does not have a data section, using as is...");
- newProperties = readProperties;
- }
+ for(PropertyValue val:data.getData()) {
+ readProperties.putAll(val.asMap());
+ }
+ Map<String,String> newProperties = new HashMap<>();
+ for(Map.Entry<String,String> en:readProperties.entrySet()){
+ // filter data entries
+ newProperties.put(en.getKey(), en.getValue());
+ }
+ // the configs served by the tamaya server module has a 'data' root section containing the
+ // config entries. if not present, we assume an alternate format, which is sued as is...
+ if(newProperties.isEmpty()){
Logger.getLogger(getClass().getName()).info(
- "Reloaded remote config from: " + data.getResource() + ", entriea read: " + this.properties.size());
- return newProperties;
+ "Loaded remote config from: " + data.getResource() + ", does not have a data section, using as is...");
+ newProperties = readProperties;
}
+ Logger.getLogger(getClass().getName()).info(
+ "Reloaded remote config from: " + data.getResource() + ", entriea read: " + this.properties.size());
+ return newProperties;
}
return Collections.emptyMap();
}
@@ -138,7 +138,7 @@ public abstract class BaseRemotePropertySource implements PropertySource{
}
/**
- * Returns the default ordinal used, when no ordinal is set, or the ordinal was not parseable to an int value.
+ * Returns the default ordinal used, when no ordinal is setCurrent, or the ordinal was not parseable to an int value.
* @return the default ordinal used, by default 0.
*/
public int getDefaultOrdinal(){
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/server/src/main/java/org/apache/tamaya/server/ConfigurationServices.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/tamaya/server/ConfigurationServices.java b/server/src/main/java/org/apache/tamaya/server/ConfigurationServices.java
index f13446a..3370fac 100644
--- a/server/src/main/java/org/apache/tamaya/server/ConfigurationServices.java
+++ b/server/src/main/java/org/apache/tamaya/server/ConfigurationServices.java
@@ -82,7 +82,7 @@ public class ConfigurationResource {
@Path("/keys")
public String readConfig(@QueryParam("recursive") Boolean recursive) {
readCounter.incrementAndGet();
- final Configuration config = ConfigurationProvider.getConfiguration();
+ final Configuration config = Configuration.current();
final Map<String, String> children = config.getProperties();
final JsonArrayBuilder ab = Json.createArrayBuilder();
for (final Map.Entry<String, String> en : children.entrySet()) {
@@ -122,7 +122,7 @@ public class ConfigurationResource {
@Path("/keys/{key}")
public String readConfig(@PathParam("key") String key, @QueryParam("recursive") Boolean recursive) {
readCounter.incrementAndGet();
- final Configuration config = ConfigurationProvider.getConfiguration();
+ final Configuration config = Configuration.current();
if (key != null) {
if (key.startsWith("/")) {
key = key.substring(1);
@@ -194,7 +194,7 @@ public class ConfigurationResource {
public String writeConfig(@PathParam("key") String key, @javax.ws.rs.FormParam("value") String value,
@FormParam("ttl") Integer ttl) {
writeCounter.incrementAndGet();
- final Configuration config = ConfigurationProvider.getConfiguration();
+ final Configuration config = Configuration.current();
if (key.startsWith("/")) {
key = key.substring(1);
}
@@ -220,7 +220,7 @@ public class ConfigurationResource {
@Path("/keys/{key}")
public String deleteConfig(@PathParam("key") String key) {
deleteCounter.incrementAndGet();
- final Configuration config = ConfigurationProvider.getConfiguration();
+ final Configuration config = Configuration.current();
if (key.startsWith("/")) {
key = key.substring(1);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/server/src/main/java/org/apache/tamaya/server/Server.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/tamaya/server/Server.java b/server/src/main/java/org/apache/tamaya/server/Server.java
index 3a5a7cf..dd16192 100644
--- a/server/src/main/java/org/apache/tamaya/server/Server.java
+++ b/server/src/main/java/org/apache/tamaya/server/Server.java
@@ -69,7 +69,7 @@ public class Server {
public static void main(String... args) throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
+ Configuration config = Configuration.current();
String contextPath = config.getOrDefault("tamaya.server.contextPath", "/");
int port = config.getOrDefault("tamaya.server.port", Integer.class, 8085);
start(contextPath, port);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/ui/base/src/main/java/org/apache/tamaya/ui/TamayaUI.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/TamayaUI.java b/ui/base/src/main/java/org/apache/tamaya/ui/TamayaUI.java
index 515dcd7..137705e 100644
--- a/ui/base/src/main/java/org/apache/tamaya/ui/TamayaUI.java
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/TamayaUI.java
@@ -106,7 +106,7 @@ public class TamayaUI extends UI {
* @throws Exception if startup fails.
*/
public static void main(String[] args) throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
+ Configuration config = Configuration.current();
String contextPath = config.getOrDefault("tamaya.server.contextPath", "/tamaya");
String appBase = ".";
Tomcat tomcat = new Tomcat();
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java b/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java
index b83fcbd..9ab6153 100644
--- a/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java
@@ -167,7 +167,7 @@ public final class ConfigurationBasedMessageProvider implements MessageProvider{
baseName = System.getenv("tamaya.ui.baseName");
}
if(baseName==null || baseName.isEmpty()){
- baseName = ConfigurationProvider.getConfiguration().get("tamaya.ui.baseName");
+ baseName = Configuration.current().get("tamaya.ui.baseName");
}
if(baseName==null || baseName.isEmpty()){
baseName = "ui/lang/tamaya";
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfiguredUserService.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfiguredUserService.java b/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfiguredUserService.java
index ee687e9..4b1607e 100644
--- a/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfiguredUserService.java
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/internal/ConfiguredUserService.java
@@ -47,7 +47,7 @@ public class ConfiguredUserService implements UserService{
*/
public ConfiguredUserService(){
// read from config
- Map<String,String> config = ConfigurationProvider.getConfiguration().with(
+ Map<String,String> config = Configuration.current().with(
ConfigurationFunctions.section("tamaya.users.", true)).getProperties();
for(Map.Entry<String,String> en:config.entrySet()){
if(en.getKey().endsWith(".pwd")){
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/ui/base/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java b/ui/base/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java
index 6772085..3a3195d 100644
--- a/ui/base/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/internal/ResourceBundleMessageProvider.java
@@ -50,7 +50,7 @@ public class ResourceBundleMessageProvider implements MessageProvider{
baseName = System.getenv("tamaya.ui.baseName");
}
if(baseName==null || baseName.isEmpty()){
- baseName = ConfigurationProvider.getConfiguration().get("tamaya.ui.baseName");
+ baseName = Configuration.current().get("tamaya.ui.baseName");
}
if(baseName==null || baseName.isEmpty()){
baseName = "ui/ui.lang/tamaya";
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/ui/base/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/views/ConfigView.java b/ui/base/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
index e4c6de1..3de6a8f 100644
--- a/ui/base/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
@@ -151,7 +151,7 @@ public class ConfigView extends VerticalSpacedLayout implements View {
private void fillTree() {
final String keyFilterExp = this.keyFilter.getValue();
final String valueFilterExp = this.valueFilter.getValue();
- Configuration config = ConfigurationProvider.getConfiguration()
+ Configuration config = Configuration.current()
.with(ConfigurationFunctions.filter(new PropertyMatcher() {
@Override
public boolean test(String key, String value) {
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/ui/base/src/main/java/org/apache/tamaya/ui/views/TamayaGeneralSystemInfoProvider.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/views/TamayaGeneralSystemInfoProvider.java b/ui/base/src/main/java/org/apache/tamaya/ui/views/TamayaGeneralSystemInfoProvider.java
index 0896c3c..602652d 100644
--- a/ui/base/src/main/java/org/apache/tamaya/ui/views/TamayaGeneralSystemInfoProvider.java
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/views/TamayaGeneralSystemInfoProvider.java
@@ -43,7 +43,7 @@ public class TamayaGeneralSystemInfoProvider extends AbstractTextInfoProvider {
@Override
protected String getInfo() {
- Configuration config = ConfigurationProvider.getConfiguration();
+ Configuration config = Configuration.current();
return new StringBuilder()
.append("Configuration: ").append(config.getClass().getName()).append('\n')
.append("ConfigurationContext: ").append(config.getContext().getClass().getName()).append('\n')
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java
----------------------------------------------------------------------
diff --git a/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java b/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java
index d1baa43..0fb69f4 100644
--- a/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java
+++ b/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java
@@ -40,9 +40,9 @@ public class UnitConverter implements PropertyConverter<Unit> {
private static final Pattern IS_INTEGER_VALUE = Pattern.compile(PATTERN_REGEX);
@Override
- public Unit convert(String value, ConversionContext context) {
+ public Unit convert(String value) {
String trimmed = requireNonNull(value).trim();
- addSupportedFormats(context);
+ addSupportedFormats();
UnitFormat format = ServiceProvider.current().getUnitFormatService().getUnitFormat();
Unit result = null;
@@ -58,7 +58,9 @@ public class UnitConverter implements PropertyConverter<Unit> {
return result;
}
- private void addSupportedFormats(ConversionContext context) {
- context.addSupportedFormats(UnitConverter.class, "All Units supported by JSR 363");
+ private void addSupportedFormats() {
+ ConversionContext.doOptional(context -> {
+ context.addSupportedFormats(UnitConverter.class, "All Units supported by JSR 363");
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java
----------------------------------------------------------------------
diff --git a/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java b/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java
index 6e64fb1..c809272 100644
--- a/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java
+++ b/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java
@@ -18,9 +18,7 @@
*/
package org.apache.tamaya.uom;
-import org.apache.tamaya.spi.ConversionContext;
import org.junit.Test;
-import org.mockito.Mockito;
import tec.units.ri.unit.Units;
@@ -36,9 +34,7 @@ public class UnitConverterTest {
@Test
public void canConvertUnitInformation() {
- ConversionContext context = Mockito.mock(ConversionContext.class);
-
- Unit<?> unit = converter.convert("m", context);
+ Unit<?> unit = converter.convert("m");
assertThat("Converter failed to convert input value " + unit, notNullValue());
assertEquals(unit, Units.METRE);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java
----------------------------------------------------------------------
diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java
index 5cae8d2..ccb27cf 100644
--- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java
+++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/ConfigUsage.java
@@ -53,7 +53,7 @@ public final class ConfigUsage {
}
/**
- * Returns a set of package names that are to be ignored when collecting usage data.
+ * Returns a setCurrent of package names that are to be ignored when collecting usage data.
* @return the ignored package names, not null.
*/
public static Set<String> getIgnoredPackages(){
@@ -70,7 +70,7 @@ public final class ConfigUsage {
/**
* Enables/disables usage tracking.
- * @param enabled set to true to enable usage tracking.
+ * @param enabled setCurrent to true to enable usage tracking.
*/
public static void enableUsageTracking(boolean enabled){
spi().enableUsageTracking(enabled);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java
----------------------------------------------------------------------
diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java
index 8cd0236..4239050 100644
--- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java
+++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/UsageStat.java
@@ -117,7 +117,7 @@ public final class UsageStat {
/**
* Access access details for a given class.
- * @param type class to get usage access stats for, not null.
+ * @param type class to getChild usage access stats for, not null.
* @return the usage ref, if present, or null.
*/
public Collection<AccessStats> getAccessDetails(Class type){
@@ -126,7 +126,7 @@ public final class UsageStat {
/**
* Access access details for a given package.
- * @param pack package to get usage access stats for, not null.
+ * @param pack package to getChild usage access stats for, not null.
* @return the usage ref, if present, or null.
*/
public Collection<AccessStats> getAccessDetails(Package pack){
@@ -168,7 +168,7 @@ public final class UsageStat {
/**
* Evaluates the current access point from the current stacktrace and adds an according
* usage reference object (or updates any existing one) for the given key. The
- * stacktrace is shortened to a maximal size of 20 items.
+ * stacktrace is shortened to a maximal getNumChilds of 20 items.
* @param value the value returned, not null.
*/
public void trackUsage(PropertyValue value){
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java
----------------------------------------------------------------------
diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java
index 34e1fa4..759082a 100644
--- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java
+++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/DefaultConfigUsage.java
@@ -49,7 +49,7 @@ public class DefaultConfigUsage implements ConfigUsageSpi {
/**
* Method that checks the 'tamaya.usage-report' system property for
* enabling tamaya usage reporting initially.
- * @return {@code true} iff property is set to {@code true}
+ * @return {@code true} iff property is setCurrent to {@code true}
*/
private boolean initEnabled() {
String val = System.getProperty("tamaya.usage-report");
@@ -113,12 +113,12 @@ public class DefaultConfigUsage implements ConfigUsageSpi {
@Override
public void recordAllPropertiesAccess(ConfigurationContext context){
- recordSingleKeyAccess(PropertyValue.of("<<all>>","<not stored>","-"), context);
+ recordSingleKeyAccess(PropertyValue.create("<<all>>","<not stored>"), context);
}
@Override
public void recordSingleKeyAccess(PropertyValue value, ConfigurationContext context){
- // Ignore meta-entries
+ // Ignore getMeta-entries
if(!isTrackingEnabled()){
return;
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java
----------------------------------------------------------------------
diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java
index c9839ac..11644c7 100644
--- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java
+++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java
@@ -25,6 +25,7 @@ import org.apache.tamaya.spi.ServiceContextManager;
import org.apache.tamaya.usagetracker.spi.ConfigUsageSpi;
import javax.annotation.Priority;
+import java.util.logging.Filter;
/**
* Configuration filter to be applied at the end of the filter chain. This filter
@@ -35,12 +36,13 @@ import javax.annotation.Priority;
public class UsageTrackerFilter implements PropertyFilter{
@Override
- public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
- ConfigUsageSpi tracker = ServiceContextManager.getServiceContext().getService(ConfigUsageSpi.class);
- if (context.isSinglePropertyScoped()) {
- tracker.recordSingleKeyAccess(value, context.getContext());
+ public PropertyValue filterProperty(PropertyValue value) {
+ ConfigUsageSpi tracker = ServiceContextManager.getServiceContext().getService(ConfigUsageSpi.class);
+ FilterContext context = FilterContext.get();
+ if (context == null || context.isSinglePropertyScoped()) {
+ tracker.recordSingleKeyAccess(value, context.current());
} else {
- tracker.recordAllPropertiesAccess(context.getContext());
+ tracker.recordAllPropertiesAccess(context.current());
}
return value;
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java
----------------------------------------------------------------------
diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java
index 46fd767..e3d3d7e 100644
--- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java
+++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/spi/ConfigUsageSpi.java
@@ -33,7 +33,7 @@ public interface ConfigUsageSpi {
/**
* Enables/disables usage tracking.
- * @param enable set to true to enable usage tracking.
+ * @param enable setCurrent to true to enable usage tracking.
*/
void enableUsageTracking(boolean enable);
@@ -45,7 +45,7 @@ public interface ConfigUsageSpi {
/**
* Get the list of packages, which are not evaluated for tracking configuration access and usage statistics.
- * @return the set of ignored package names.
+ * @return the setCurrent of ignored package names.
*/
Set<String> getIgnoredPackages();
@@ -84,7 +84,7 @@ public interface ConfigUsageSpi {
void recordAllPropertiesAccess(ConfigurationContext context);
/**
- * Track the access of {@code Configuration#get(String)} for
+ * Track the access of {@code Configuration#getChild(String)} for
* usage statistics.
* @param context the corresponding context.
* @param value value to track for
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java
----------------------------------------------------------------------
diff --git a/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java b/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java
index 1fcdee9..04a3cbf 100644
--- a/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java
+++ b/usagetracker/src/test/java/org/apache/tamaya/model/ConfigUsageStatsTest.java
@@ -19,7 +19,6 @@
package org.apache.tamaya.model;
import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
import org.apache.tamaya.usagetracker.ConfigUsage;
import org.junit.Test;
import test.model.TestConfigAccessor;
@@ -35,7 +34,7 @@ public class ConfigUsageStatsTest {
public void testUsageWhenEnabled(){
ConfigUsage.enableUsageTracking(true);
TestConfigAccessor.readConfiguration();
- Configuration config = ConfigurationProvider.getConfiguration();
+ Configuration config = Configuration.current();
String info = ConfigUsage.getInfo();
assertFalse(info.contains("java.version"));
assertNotNull(info);
@@ -57,7 +56,7 @@ public class ConfigUsageStatsTest {
ConfigUsage.enableUsageTracking(false);
ConfigUsage.clearStats();
TestConfigAccessor.readConfiguration();
- Configuration config = ConfigurationProvider.getConfiguration();
+ Configuration config = Configuration.current();
String info = ConfigUsage.getInfo();
assertNotNull(info);
assertFalse(info.contains("java.version"));
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/usagetracker/src/test/java/test/model/TestConfigAccessor.java
----------------------------------------------------------------------
diff --git a/usagetracker/src/test/java/test/model/TestConfigAccessor.java b/usagetracker/src/test/java/test/model/TestConfigAccessor.java
index 498d2b6..c9012df 100644
--- a/usagetracker/src/test/java/test/model/TestConfigAccessor.java
+++ b/usagetracker/src/test/java/test/model/TestConfigAccessor.java
@@ -19,7 +19,6 @@
package test.model;
import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
import java.util.Map;
@@ -31,12 +30,12 @@ public final class TestConfigAccessor {
private TestConfigAccessor(){}
public static Map<String,String> readAllProperties(){
- return ConfigurationProvider.getConfiguration()
+ return Configuration.current()
.getProperties();
}
public static Configuration readConfiguration(){
- return ConfigurationProvider.getConfiguration();
+ return Configuration.current();
}
public static String readProperty(Configuration config, String key){
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/pom.xml
----------------------------------------------------------------------
diff --git a/validation/pom.xml b/validation/pom.xml
index 870bcaa..7252316 100644
--- a/validation/pom.xml
+++ b/validation/pom.xml
@@ -5,7 +5,7 @@
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
+ ~ with the License. You may obtain a copy create the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/src/main/java/org/apache/tamaya/validation/ConfigModel.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/ConfigModel.java b/validation/src/main/java/org/apache/tamaya/validation/ConfigModel.java
index a9c58f0..b6da54b 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/ConfigModel.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/ConfigModel.java
@@ -5,7 +5,7 @@
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
+ * with the License. You may obtain a copy create the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@@ -29,12 +29,12 @@ public interface ConfigModel {
/**
* Access the owner.
- * @return the owner of this model, never null.
+ * @return the owner create this model, never null.
*/
String getOwner();
/**
- * Get the type of item that is modelled.
+ * Get the type create item that is modelled.
* @return the modelled type, never null.
*/
ModelTarget getType();
@@ -59,7 +59,7 @@ public interface ConfigModel {
boolean isRequired();
/**
- * Get an description of the item, using the default locale. The description is basically optional
+ * Get an description create the item, using the default locale. The description is basically optional
* though it is higly recommended to provide a description, so the validation issues is well
* resolvable.
*
@@ -68,7 +68,7 @@ public interface ConfigModel {
String getDescription();
/**
- * Validates the item and all its children against the given configuration.
+ * Validates the item and all its getChildren against the given configuration.
*
* @param config the configuration to be validated against, not null.
* @return the validation result, or null, if not applicable.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/src/main/java/org/apache/tamaya/validation/ConfigModelManager.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/ConfigModelManager.java b/validation/src/main/java/org/apache/tamaya/validation/ConfigModelManager.java
index 0f3cce5..b4a89ad 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/ConfigModelManager.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/ConfigModelManager.java
@@ -5,7 +5,7 @@
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
+ * with the License. You may obtain a copy create the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@@ -19,7 +19,6 @@
package org.apache.tamaya.validation;
import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
import org.apache.tamaya.validation.spi.ConfigDocumentationMBean;
import org.apache.tamaya.validation.spi.ModelProviderSpi;
import org.apache.tamaya.spi.ServiceContextManager;
@@ -31,7 +30,6 @@ import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -56,18 +54,16 @@ public final class ConfigModelManager {
}
/**
- * Access the usage statistics for the recorded uses of configuration.
+ * Access the usage statistics for the recorded uses create configuration.
+ * @param inModels the target models, not null.
* @return usage statistics
*/
- public static String getConfigInfoText(){
+ public static String getConfigModelDescription(Collection<ConfigModel> inModels){
StringBuilder b = new StringBuilder();
- List<ConfigModel> models = new ArrayList<>(getModels());
- Collections.sort(models, new Comparator<ConfigModel>() {
- @Override
- public int compare(ConfigModel k1, ConfigModel k2) {
+ List<ConfigModel> models = new ArrayList<>(inModels);
+ Collections.sort(models, (k1, k2) -> {
return k2.getName().compareTo(k2.getName());
- }
- });
+ });
b.append("TYPE OWNER NAME MANDATORY DESCRIPTION\n");
b.append("-----------------------------------------------------------------------------------------------------\n");
for(ConfigModel model:models){
@@ -99,28 +95,25 @@ public final class ConfigModelManager {
return b.toString();
}
- private static String formatWithFixedLength(String name, int targetLength) {
- targetLength = targetLength-1;
- StringBuilder b = new StringBuilder();
- if(name.length() > targetLength){
- name = name.substring(0, targetLength);
- }
- b.append(name);
- for(int i=0;i<(targetLength-name.length());i++){
- b.append(' ');
- }
- b.append(' ');
- return b.toString();
+ /**
+ * Get the validations defined, using the default classloader.
+ *
+ * @return the sections defined, never null.
+ * @see ServiceContextManager#getDefaultClassLoader()
+ */
+ public static Collection<ConfigModel> getModels() {
+ return getModels(ServiceContextManager.getDefaultClassLoader());
}
/**
* Get the validations defined.
*
+ * @param classLoader the target classloader, not null.
* @return the sections defined, never null.
*/
- public static Collection<ConfigModel> getModels() {
+ public static Collection<ConfigModel> getModels(ClassLoader classLoader) {
List<ConfigModel> result = new ArrayList<>();
- for (ModelProviderSpi model : ServiceContextManager.getServiceContext().getServices(ModelProviderSpi.class)) {
+ for (ModelProviderSpi model : ServiceContextManager.getServiceContext(classLoader).getServices(ModelProviderSpi.class)) {
result.addAll(model.getConfigModels());
}
return result;
@@ -128,33 +121,29 @@ public final class ConfigModelManager {
/**
- * Find the validations by matching the validation's name against the given model type.
- *
- * @param name the name to use, not null.
- * @param modelType classname of the target model type.
- * @param <T> type of the model to filter for.
+ * Find the validations by checking the validation's name using the given regular expression and
+ * the default classloader.
+ *
+ * @param namePattern the regular expression to use, not null.
+ * @param targets the target types only to be returned (optional).
* @return the sections defined, never null.
+ * @see ServiceContextManager#getDefaultClassLoader()
*/
- public static <T extends ConfigModel> T getModel(String name, Class<T> modelType) {
- for (ModelProviderSpi model : ServiceContextManager.getServiceContext().getServices(ModelProviderSpi.class)) {
- for(ConfigModel configModel : model.getConfigModels()) {
- if(configModel.getName().equals(name) && configModel.getClass().equals(modelType)) {
- return modelType.cast(configModel);
- }
- }
- }
- return null;
+ public static Collection<ConfigModel> findModels(String namePattern, ModelTarget... targets) {
+ return findModels(namePattern, ServiceContextManager.getDefaultClassLoader(), targets);
}
/**
* Find the validations by checking the validation's name using the given regular expression.
+ *
+ * @param classLoader the target classloader, not null.
* @param namePattern the regular expression to use, not null.
* @param targets the target types only to be returned (optional).
* @return the sections defined, never null.
*/
- public static Collection<ConfigModel> findModels(String namePattern, ModelTarget... targets) {
+ public static Collection<ConfigModel> findModels(String namePattern, ClassLoader classLoader, ModelTarget... targets) {
List<ConfigModel> result = new ArrayList<>();
- for (ModelProviderSpi model : ServiceContextManager.getServiceContext().getServices(ModelProviderSpi.class)) {
+ for (ModelProviderSpi model : ServiceContextManager.getServiceContext(classLoader).getServices(ModelProviderSpi.class)) {
for(ConfigModel configModel : model.getConfigModels()) {
if(configModel.getName().matches(namePattern)) {
if(targets.length>0){
@@ -174,24 +163,6 @@ public final class ConfigModelManager {
}
/**
- * Validates the current configuration.
- *
- * @return the validation results, never null.
- */
- public static Collection<Validation> validate() {
- return validate(false);
- }
-
- /**
- * Validates the current configuration.
- * @param showUndefined show any unknown parameters.
- * @return the validation results, never null.
- */
- public static Collection<Validation> validate(boolean showUndefined) {
- return validate(ConfigurationProvider.getConfiguration(), showUndefined);
- }
-
- /**
* Validates the given configuration.
*
* @param config the configuration to be validated against, not null.
@@ -210,7 +181,7 @@ public final class ConfigModelManager {
*/
public static Collection<Validation> validate(Configuration config, boolean showUndefined) {
List<Validation> result = new ArrayList<>();
- for (ConfigModel defConf : getModels()) {
+ for (ConfigModel defConf : getModels(config.getContext().getServiceContext().getClassLoader())) {
result.addAll(defConf.validate(config));
}
if(showUndefined){
@@ -233,34 +204,20 @@ public final class ConfigModelManager {
for (ConfigModel defConf : getModels()) {
if(ModelTarget.Section.equals(defConf.getType())){
if(defConf.getName().endsWith(".*") && entry.getKey().matches(defConf.getName())){
- // Ignore parameters that are part of transitive section.
+ // Ignore parameters that are part create transitive section.
continue outer;
}
}
}
- result.add(Validation.ofUndefined("<auto>", entry.getKey(), ModelTarget.Parameter));
+ result.add(Validation.createUndefined("<auto>", entry.getKey(), ModelTarget.Parameter));
}
for(String area:areas){
- result.add(Validation.ofUndefined("<auto>", area, ModelTarget.Section));
+ result.add(Validation.createUndefined("<auto>", area, ModelTarget.Section));
}
}
return result;
}
- private static java.util.Set<java.lang.String> extractTransitiveAreas(Set<String> keys) {
- Set<String> transitiveClosure = new HashSet<>();
- for(String key:keys){
- int index = key.lastIndexOf('.');
- while(index>0){
- String areaKey = key.substring(0,index);
- transitiveClosure.add(areaKey);
- index = areaKey.lastIndexOf('.');
- }
- }
- return transitiveClosure;
- }
-
-
/**
* Registers the {@link ConfigDocumentationMBean} mbean for accessing config documentation into the local platform
* mbean server.
@@ -295,4 +252,34 @@ public final class ConfigModelManager {
}
}
+ private static String formatWithFixedLength(String name, int targetLength) {
+ targetLength = targetLength-1;
+ StringBuilder b = new StringBuilder();
+ if(name.length() > targetLength){
+ name = name.substring(0, targetLength);
+ }
+ b.append(name);
+ for(int i=0;i<(targetLength-name.length());i++){
+ b.append(' ');
+ }
+ b.append(' ');
+ return b.toString();
+ }
+
+
+
+ private static java.util.Set<java.lang.String> extractTransitiveAreas(Set<String> keys) {
+ Set<String> transitiveClosure = new HashSet<>();
+ for(String key:keys){
+ int index = key.lastIndexOf('.');
+ while(index>0){
+ String areaKey = key.substring(0,index);
+ transitiveClosure.add(areaKey);
+ index = areaKey.lastIndexOf('.');
+ }
+ }
+ return transitiveClosure;
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/src/main/java/org/apache/tamaya/validation/ModelTarget.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/ModelTarget.java b/validation/src/main/java/org/apache/tamaya/validation/ModelTarget.java
index e087c66..db10306 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/ModelTarget.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/ModelTarget.java
@@ -5,7 +5,7 @@
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
+ * with the License. You may obtain a copy create the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@@ -19,7 +19,7 @@
package org.apache.tamaya.validation;
/**
- * This enumeration defines the types of supported validations.
+ * This enumeration defines the types create supported validations.
*/
public enum ModelTarget {
/**
@@ -31,7 +31,7 @@ public enum ModelTarget {
*/
Parameter,
/**
- * ConfigModel that is a container of other validations.
+ * ConfigModel that is a container create other validations.
*/
Group,
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/src/main/java/org/apache/tamaya/validation/Validation.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/Validation.java b/validation/src/main/java/org/apache/tamaya/validation/Validation.java
index 81a0118..7d17da3 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/Validation.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/Validation.java
@@ -5,7 +5,7 @@
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
+ * with the License. You may obtain a copy create the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@@ -46,9 +46,9 @@ public final class Validation {
* Creates a new ValidationResult.
*
* @param configModel the configModel item, not null.
- * @return a new validation result containing valid parts of the given model.
+ * @return a new validation result containing valid parts create the given model.
*/
- public static Validation ofValid(ConfigModel configModel) {
+ public static Validation createValid(ConfigModel configModel) {
return new Validation(configModel, ValidationResult.VALID, null);
}
@@ -56,9 +56,9 @@ public final class Validation {
* Creates a new ValidationResult.
*
* @param configModel the configModel item, not null.
- * @return a new validation result containing missing parts of the given model.
+ * @return a new validation result containing missing parts create the given model.
*/
- public static Validation ofMissing(ConfigModel configModel) {
+ public static Validation createMissing(ConfigModel configModel) {
return new Validation(configModel, ValidationResult.MISSING, null);
}
@@ -67,9 +67,9 @@ public final class Validation {
*
* @param configModel the configModel item, not null.
* @param message Additional message to be shown (optional).
- * @return a new validation result containing missing parts of the given model with a message.
+ * @return a new validation result containing missing parts create the given model with a message.
*/
- public static Validation ofMissing(ConfigModel configModel, String message) {
+ public static Validation createMissing(ConfigModel configModel, String message) {
return new Validation(configModel, ValidationResult.MISSING, message);
}
@@ -77,10 +77,10 @@ public final class Validation {
* Creates a new ValidationResult.
*
* @param configModel the configModel item, not null.
- * @param error error message to add.
- * @return a new validation result containing erroneous parts of the given model with the given error message.
+ * @param error error message to addNode.
+ * @return a new validation result containing erroneous parts create the given model with the given error message.
*/
- public static Validation ofError(ConfigModel configModel, String error) {
+ public static Validation createError(ConfigModel configModel, String error) {
return new Validation(configModel, ValidationResult.ERROR, error);
}
@@ -88,10 +88,10 @@ public final class Validation {
* Creates a new ValidationResult.
*
* @param configModel the configModel item, not null.
- * @param warning warning message to add.
- * @return a new validation result containing warning parts of the given model with the given warning message.
+ * @param warning warning message to addNode.
+ * @return a new validation result containing warning parts create the given model with the given warning message.
*/
- public static Validation ofWarning(ConfigModel configModel, String warning) {
+ public static Validation createWarning(ConfigModel configModel, String warning) {
return new Validation(configModel, ValidationResult.WARNING, warning);
}
@@ -100,9 +100,9 @@ public final class Validation {
*
* @param configModel the configModel item, not null.
* @param alternativeUsage allows setting a message to indicate non-deprecated replacement, maybe null.
- * @return a new validation result containing deprecated parts of the given model with an optional message.
+ * @return a new validation result containing deprecated parts create the given model with an optional message.
*/
- public static Validation ofDeprecated(ConfigModel configModel, String alternativeUsage) {
+ public static Validation createDeprecated(ConfigModel configModel, String alternativeUsage) {
return new Validation(configModel, ValidationResult.DEPRECATED, alternativeUsage != null ? "Use instead: " + alternativeUsage : null);
}
@@ -110,9 +110,9 @@ public final class Validation {
* Creates a new ValidationResult.
*
* @param configModel the configModel item, not null.
- * @return a new validation result containing deprecated parts of the given model.
+ * @return a new validation result containing deprecated parts create the given model.
*/
- public static Validation ofDeprecated(ConfigModel configModel) {
+ public static Validation createDeprecated(ConfigModel configModel) {
return new Validation(configModel, ValidationResult.DEPRECATED, null);
}
@@ -124,7 +124,7 @@ public final class Validation {
* @param type model type
* @return a corresponding configModel item
*/
- public static Validation ofUndefined(final String owner, final String key, final ModelTarget type) {
+ public static Validation createUndefined(final String owner, final String key, final ModelTarget type) {
return new Validation(new AbstractConfigModel(owner, key, false, "Undefined key: " + key) {
@Override
@@ -148,7 +148,7 @@ public final class Validation {
* @param message the detail message.
* @return new validation result.
*/
- public static Validation of(ConfigModel configModel, ValidationResult result, String message) {
+ public static Validation create(ConfigModel configModel, ValidationResult result, String message) {
return new Validation(configModel, result, message);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/src/main/java/org/apache/tamaya/validation/ValidationResult.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/ValidationResult.java b/validation/src/main/java/org/apache/tamaya/validation/ValidationResult.java
index f368985..f0afc68 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/ValidationResult.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/ValidationResult.java
@@ -5,7 +5,7 @@
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
+ * with the License. You may obtain a copy create the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigDocumentationBean.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigDocumentationBean.java b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigDocumentationBean.java
index 59c5c22..754bfa2 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigDocumentationBean.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfigDocumentationBean.java
@@ -5,7 +5,7 @@
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
+ * with the License. You may obtain a copy create the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@@ -19,7 +19,6 @@
package org.apache.tamaya.validation.internal;
import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
import org.apache.tamaya.validation.ConfigModel;
import org.apache.tamaya.validation.ConfigModelManager;
import org.apache.tamaya.validation.ModelTarget;
@@ -43,7 +42,7 @@ import java.util.List;
import java.util.Map;
/**
- * MBean implementation of {@link ConfigDocumentationMBean}.
+ * MBean implementation create {@link ConfigDocumentationMBean}.
*/
public class ConfigDocumentationBean implements ConfigDocumentationMBean{
@@ -100,7 +99,7 @@ public class ConfigDocumentationBean implements ConfigDocumentationMBean{
* @return either the configuration bound to this bean, or the current configuration.
*/
private Configuration getConfig(){
- return config!=null?config: ConfigurationProvider.getConfiguration();
+ return config!=null?config: Configuration.current();
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java
index 6658bb5..a42fbf6 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredInlineModelProviderSpi.java
@@ -5,7 +5,7 @@
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
+ * with the License. You may obtain a copy create the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@@ -18,22 +18,19 @@
*/
package org.apache.tamaya.validation.internal;
-import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.spi.ClassloaderAware;
import org.apache.tamaya.validation.ConfigModel;
import org.apache.tamaya.validation.spi.ConfigModelReader;
import org.apache.tamaya.validation.spi.ModelProviderSpi;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.logging.Logger;
/**
* ConfigModel provider that reads model metadata from the current {@link org.apache.tamaya.Configuration}.
*/
-public class ConfiguredInlineModelProviderSpi implements ModelProviderSpi {
+public class ConfiguredInlineModelProviderSpi implements ModelProviderSpi, ClassloaderAware {
/** The logger. */
private static final Logger LOG = Logger.getLogger(ConfiguredInlineModelProviderSpi.class.getName());
@@ -42,17 +39,25 @@ public class ConfiguredInlineModelProviderSpi implements ModelProviderSpi {
/** The configModels read. */
private List<ConfigModel> configModels = new ArrayList<>();
-
+ /** The target classloader used. */
+ private ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
/**
* Constructor, typically called by the {@link java.util.ServiceLoader}.
*/
public ConfiguredInlineModelProviderSpi() {
- String enabledVal = ConfigurationProvider.getConfiguration().get(MODEL_EANABLED_PARAM);
+ load();
+ }
+
+ /**
+ * Loads the models from the underlying service provider.
+ */
+ public void load(){
+ String enabledVal = Configuration.current(classLoader).get(MODEL_EANABLED_PARAM);
boolean enabled = enabledVal == null || "true".equalsIgnoreCase(enabledVal);
if (enabled) {
LOG.info("Reading model configuration from config...");
- Map<String,String> config = ConfigurationProvider.getConfiguration().getProperties();
+ Map<String,String> config = Configuration.current().getProperties();
String owner = config.get("_model.provider");
if(owner==null){
owner = config.toString();
@@ -62,8 +67,17 @@ public class ConfiguredInlineModelProviderSpi implements ModelProviderSpi {
configModels = Collections.unmodifiableList(configModels);
}
-
public Collection<ConfigModel> getConfigModels() {
return configModels;
}
+
+ @Override
+ public void init(ClassLoader classLoader) {
+ this.classLoader = Objects.requireNonNull(classLoader);
+ }
+
+ @Override
+ public ClassLoader getClassLoader() {
+ return classLoader;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java
index eeeeea4..cd8e1e5 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredPropertiesModelProviderSpi.java
@@ -5,7 +5,7 @@
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
+ * with the License. You may obtain a copy create the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@@ -18,7 +18,7 @@
*/
package org.apache.tamaya.validation.internal;
-import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.Configuration;
import org.apache.tamaya.validation.ConfigModel;
import org.apache.tamaya.validation.spi.ConfigModelReader;
import org.apache.tamaya.validation.spi.ModelProviderSpi;
@@ -35,14 +35,14 @@ import java.util.logging.Logger;
* {@code classpath*:META-INF/configmodel.properties} in the following format:
* <pre>
* ###################################################################################
- * # Example of a configuration metamodel expressed via properties.
+ * # Example create a configuration metamodel expressed via properties.
* ####################################################################################
*
* # Metamodel information
* [model].provider=ConfigModel Extension
*
* ####################################################################################
- * # Description of Configuration Sections (minimal, can be extended by other modules).
+ * # Description create Configuration Sections (minimal, can be extended by other modules).
* # By default its interpreted as a section !
* ####################################################################################
*
@@ -114,7 +114,7 @@ public class ConfiguredPropertiesModelProviderSpi implements ModelProviderSpi {
private List<ConfigModel> configModels = new ArrayList<>();
public ConfiguredPropertiesModelProviderSpi() {
- String enabledVal = ConfigurationProvider.getConfiguration().get(MODEL_EANABLED_PARAM);
+ String enabledVal = Configuration.current().get(MODEL_EANABLED_PARAM);
boolean enabled = enabledVal == null || "true".equalsIgnoreCase(enabledVal);
if(!enabled){
LOG.info("Reading model data from META-INF/configmodel.properties has been disabled.");
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java
----------------------------------------------------------------------
diff --git a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java
index 1894570..03d0fb6 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/internal/ConfiguredResourcesModelProviderSpi.java
@@ -5,7 +5,7 @@
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
+ * with the License. You may obtain a copy create the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@@ -25,9 +25,11 @@ import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.Configuration;
import org.apache.tamaya.format.ConfigurationData;
import org.apache.tamaya.format.ConfigurationFormats;
+import org.apache.tamaya.spi.ClassloaderAware;
+import org.apache.tamaya.spi.PropertyValue;
import org.apache.tamaya.validation.ConfigModel;
import org.apache.tamaya.validation.spi.ConfigModelReader;
import org.apache.tamaya.validation.spi.ModelProviderSpi;
@@ -37,28 +39,28 @@ import org.apache.tamaya.resource.ConfigResources;
* ConfigModel provider that reads model metadata from property files from
* {@code classpath*:META-INF/configmodel.json} in the following format:
* <pre>
- * Example of a configuration metamodel expressed via YAML.
+ * Example create a configuration metamodel expressed via YAML.
* Structure is shown through indentation (one or more spaces).
* Sequence items are denoted by a dash,
* key value pairs within a map are separated by a colon.
* </pre>
*/
-public class ConfiguredResourcesModelProviderSpi implements ModelProviderSpi {
+public class ConfiguredResourcesModelProviderSpi implements ModelProviderSpi, ClassloaderAware {
/**
* The logger.
*/
private static final Logger LOG = Logger.getLogger(ConfiguredResourcesModelProviderSpi.class.getName());
/**
- * The parameter that can be used to configure the location of the configuration model resources.
+ * The parameter that can be used to configure the location create the configuration model resources.
*/
private static final String MODEL_RESOURCE_PARAM = "org.apache.tamaya.model.resources";
/**
- * The resource class to checked for testing the availability of the resources extension module.
+ * The resource class to checked for testing the availability create the resources extension module.
*/
private static final String CONFIG_RESOURCE_CLASS = "org.apache.tamaya.resource.ConfigResource";
/**
- * The resource class to checked for testing the availability of the formats extension module.
+ * The resource class to checked for testing the availability create the formats extension module.
*/
private static final String CONFIGURATION_FORMATS_CLASS = "org.apache.tamaya.format.ConfigurationFormats";
/**
@@ -75,6 +77,10 @@ public class ConfiguredResourcesModelProviderSpi implements ModelProviderSpi {
*/
private List<ConfigModel> configModels = new ArrayList<>();
+ /** The target classloader. */
+ private ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+
+
/**
* Initializes the flag showing if the formats module is present (required).
*/
@@ -106,55 +112,74 @@ public class ConfiguredResourcesModelProviderSpi implements ModelProviderSpi {
if (!AVAILABLE) {
LOG.info("tamaya-format extension is required to read model configuration, No extended model support AVAILABLE.");
} else {
- final String resources = ConfigurationProvider.getConfiguration().get(MODEL_RESOURCE_PARAM);
- if (resources == null || resources.trim().isEmpty()) {
- LOG.info("Mo model resources location configured in " + MODEL_RESOURCE_PARAM + ".");
- return;
- }
- Collection<URL> urls;
- if (RESOURCES_EXTENSION_AVAILABLE) {
- LOG.info("Using tamaya-resources extension to read model configuration from " + resources);
- urls = ConfigResources.getResourceResolver().getResources(resources.split(","));
- } else {
- LOG.info("Using default classloader resource location to read model configuration from " + resources);
- urls = new ArrayList<>();
- for (final String resource : resources.split(",")) {
- if (!resource.trim().isEmpty()) {
- Enumeration<URL> configs;
- try {
- configs = getClass().getClassLoader().getResources(resource);
- while (configs.hasMoreElements()) {
- urls.add(configs.nextElement());
- }
- } catch (final IOException e) {
- Logger.getLogger(getClass().getName()).log(Level.SEVERE,
- "Error evaluating config model locations from " + resource, e);
+ reload();
+ }
+ }
+
+ /**
+ * Reloads the provider using resources from the current classloader.
+ */
+ public void reload(){
+ final String resources = Configuration.current().get(MODEL_RESOURCE_PARAM);
+ if (resources == null || resources.trim().isEmpty()) {
+ LOG.info("Mo model resources location configured in " + MODEL_RESOURCE_PARAM + ".");
+ return;
+ }
+ Collection<URL> urls;
+ if (RESOURCES_EXTENSION_AVAILABLE) {
+ LOG.info("Using tamaya-resources extension to read model configuration from " + resources);
+ urls = ConfigResources.getResourceResolver(classLoader).getResources(resources.split(","));
+ } else {
+ LOG.info("Using default classloader resource location to read model configuration from " + resources);
+ urls = new ArrayList<>();
+ for (final String resource : resources.split(",")) {
+ if (!resource.trim().isEmpty()) {
+ Enumeration<URL> configs;
+ try {
+ configs = getClass().getClassLoader().getResources(resource);
+ while (configs.hasMoreElements()) {
+ urls.add(configs.nextElement());
}
+ } catch (final IOException e) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE,
+ "Error evaluating config model locations from " + resource, e);
}
}
}
- // Reading configs
- for (final URL config : urls) {
- try (InputStream is = config.openStream()) {
- final ConfigurationData data = ConfigurationFormats.readConfigurationData(config);
- Map<String,String> props = data.getCombinedProperties();
- String owner = props.get("_model.provider");
- if(owner==null){
- owner = config.toString();
- }
- configModels.addAll(ConfigModelReader.loadValidations(owner, props));
- } catch (final Exception e) {
- Logger.getLogger(getClass().getName()).log(Level.SEVERE,
- "Error loading config model data from " + config, e);
+ }
+ // Reading configs
+ for (final URL config : urls) {
+ try (InputStream is = config.openStream()) {
+ final ConfigurationData data = ConfigurationFormats.readConfigurationData(config);
+ Map<String,String> props = new HashMap<>();
+ for(PropertyValue val:data.getData()){
+ props.putAll(val.asMap());
+ }
+ String owner = props.get("_model.provider");
+ if(owner==null){
+ owner = config.toString();
}
+ configModels.addAll(ConfigModelReader.loadValidations(owner, props));
+ } catch (final Exception e) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE,
+ "Error loading config model data from " + config, e);
}
}
configModels = Collections.unmodifiableList(configModels);
}
-
@Override
public Collection<ConfigModel> getConfigModels() {
return configModels;
}
+
+ @Override
+ public void init(ClassLoader classLoader) {
+ this.classLoader = Objects.requireNonNull(classLoader);
+ }
+
+ @Override
+ public ClassLoader getClassLoader() {
+ return classLoader;
+ }
}