Repository: incubator-tamaya-extensions Updated Branches: refs/heads/master 26a5414e4 -> 85ae2a471
TAMAYA-202: Use bnd-maven-plugin. Minimize required config. Renamed invalid package in yaml format module. Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/85ae2a47 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/85ae2a47 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/85ae2a47 Branch: refs/heads/master Commit: 85ae2a4719d617698c3863ab0fe2e7567f1e415d Parents: 26a5414 Author: anatole <[email protected]> Authored: Sat Nov 26 01:13:57 2016 +0100 Committer: anatole <[email protected]> Committed: Sat Nov 26 01:13:57 2016 +0100 ---------------------------------------------------------------------- modules/events/bnd.bnd | 3 + modules/filter/bnd.bnd | 2 + modules/formats/base/bnd.bnd | 3 + modules/formats/json/bnd.bnd | 2 + .../java/org/apache/tamaya/json/JSONFormat.java | 26 +-- .../apache/tamaya/json/JSONPropertySource.java | 26 +-- .../org/apache/tamaya/json/JSONVisitor.java | 26 +-- .../json/CommonJSONTestCaseCollection.java | 190 ------------------- .../org/apache/tamaya/json/JSONFormatIT.java | 48 ----- .../org/apache/tamaya/json/JSONFormatTest.java | 75 -------- .../tamaya/json/JSONPropertySourceTest.java | 56 ------ .../yaml/CommonJSONTestCaseCollection.java | 190 +++++++++++++++++++ .../org/apache/tamaya/yaml/JSONFormatIT.java | 49 +++++ .../org/apache/tamaya/yaml/JSONFormatTest.java | 76 ++++++++ .../tamaya/yaml/JSONPropertySourceTest.java | 57 ++++++ modules/formats/yaml/bnd.bnd | 2 + .../java/org/apache/tamaya/json/YAMLFormat.java | 156 --------------- .../apache/tamaya/json/YAMLPropertySource.java | 100 ---------- .../java/org/apache/tamaya/yaml/YAMLFormat.java | 156 +++++++++++++++ .../apache/tamaya/yaml/YAMLPropertySource.java | 100 ++++++++++ ...org.apache.tamaya.format.ConfigurationFormat | 2 +- .../org/apache/tamaya/json/YAMLFormatTest.java | 70 ------- .../tamaya/json/YAMLPropertySourceTest.java | 54 ------ .../org/apache/tamaya/yaml/YAMLFormatTest.java | 70 +++++++ .../tamaya/yaml/YAMLPropertySourceTest.java | 52 +++++ modules/functions/bnd.bnd | 2 + modules/injection/injection-api/bnd.bnd | 3 + modules/injection/standalone/bnd.bnd | 2 + modules/mutable-config/bnd.bnd | 2 + modules/optional/bnd.bnd | 2 + modules/resolver/bnd.bnd | 3 + modules/resources/bnd.bnd | 2 + modules/spi-support/bnd.bnd | 2 + modules/spring/bnd.bnd | 2 + pom.xml | 38 ++-- 35 files changed, 838 insertions(+), 811 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/events/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/events/bnd.bnd b/modules/events/bnd.bnd new file mode 100644 index 0000000..95aebbc --- /dev/null +++ b/modules/events/bnd.bnd @@ -0,0 +1,3 @@ +Export-Package: \ + org.apache.tamaya.events,\ + org.apache.tamaya.events.spi \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/filter/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/filter/bnd.bnd b/modules/filter/bnd.bnd new file mode 100644 index 0000000..4e2f0f8 --- /dev/null +++ b/modules/filter/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.filter \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/base/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/formats/base/bnd.bnd b/modules/formats/base/bnd.bnd new file mode 100644 index 0000000..2f8a324 --- /dev/null +++ b/modules/formats/base/bnd.bnd @@ -0,0 +1,3 @@ +Export-Package: \ + org.apache.tamaya.format,\ + org.apache.tamaya.format.formats \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/formats/json/bnd.bnd b/modules/formats/json/bnd.bnd new file mode 100644 index 0000000..45ee7d7 --- /dev/null +++ b/modules/formats/json/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.json \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONFormat.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONFormat.java b/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONFormat.java index 30f9d68..66f684e 100644 --- a/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONFormat.java +++ b/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONFormat.java @@ -1,20 +1,20 @@ /* * 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 + * 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 + * 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. + * 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.json; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONPropertySource.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONPropertySource.java b/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONPropertySource.java index 43cfa73..18d64ce 100644 --- a/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONPropertySource.java +++ b/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONPropertySource.java @@ -1,20 +1,20 @@ /* * 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 + * 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 + * 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. + * 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.json; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONVisitor.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONVisitor.java b/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONVisitor.java index 2135ec5..e1516e5 100644 --- a/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONVisitor.java +++ b/modules/formats/json/src/main/java/org/apache/tamaya/json/JSONVisitor.java @@ -1,20 +1,20 @@ /* * 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 + * 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 + * 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. + * 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.json; http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/test/java/org/apache/tamaya/json/CommonJSONTestCaseCollection.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/test/java/org/apache/tamaya/json/CommonJSONTestCaseCollection.java b/modules/formats/json/src/test/java/org/apache/tamaya/json/CommonJSONTestCaseCollection.java deleted file mode 100644 index cfd4be5..0000000 --- a/modules/formats/json/src/test/java/org/apache/tamaya/json/CommonJSONTestCaseCollection.java +++ /dev/null @@ -1,190 +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.json; - -import org.apache.tamaya.ConfigException; -import org.apache.tamaya.spi.PropertySource; -import org.apache.tamaya.spi.PropertyValue; -import org.hamcrest.CoreMatchers; -import org.hamcrest.Matchers; -import org.junit.Test; - -import java.net.URL; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.hasSize; - -/** - * Class with a collection of common test cases each JSON processing - * class must be able to pass. - */ -public abstract class CommonJSONTestCaseCollection { - - abstract PropertySource getPropertiesFrom(URL source) throws Exception; - - @Test - public void canReadNonLatinCharacters() throws Exception { - URL configURL = JSONPropertySourceTest.class - .getResource("/configs/valid/cyrillic.json"); - - assertThat(configURL, Matchers.notNullValue()); - - PropertySource propertySource = getPropertiesFrom(configURL); - - assertThat(propertySource.get("name"), Matchers.notNullValue()); - assertThat(propertySource.get("name").getValue(), equalTo("\u041e\u043b\u0438\u0432\u0435\u0440")); - assertThat(propertySource.get("\u0444\u0430\u043c\u0438\u043b\u0438\u044f"), Matchers.notNullValue()); - assertThat(propertySource.get("\u0444\u0430\u043c\u0438\u043b\u0438\u044f").getValue(), Matchers.equalTo("Fischer")); - } - - @Test - public void canReadNestedStringOnlyJSONConfigFile2() throws Exception { - URL configURL = JSONPropertySourceTest.class - .getResource("/configs/valid/simple-nested-string-only-config-1.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - PropertySource properties = getPropertiesFrom(configURL); - - assertThat(properties.getProperties().keySet(), hasSize(5)); - - PropertyValue keyB = properties.get("b"); - PropertyValue keyDO = properties.get("d.o"); - PropertyValue keyDP = properties.get("d.p"); - - assertThat(keyB, notNullValue()); - assertThat(keyB.getValue(), equalTo("B")); - assertThat(keyDO, notNullValue()); - assertThat(keyDO.getValue(), equalTo("O")); - assertThat(keyDP, Matchers.notNullValue()); - assertThat(keyDP.getValue(), is("P")); - } - - @Test - public void canReadNestedStringOnlyJSONConfigFileWithObjectInTheMiddle() - throws Exception { - URL configURL = JSONPropertySourceTest.class - .getResource("/configs/valid/simple-nested-string-only-config-2.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - PropertySource properties = getPropertiesFrom(configURL); - - assertThat(properties.getProperties().keySet(), hasSize(4)); - - PropertyValue keyA = properties.get("a"); - PropertyValue keyDO = properties.get("b.o"); - PropertyValue keyDP = properties.get("b.p"); - PropertyValue keyC = properties.get("c"); - - assertThat(keyA, notNullValue()); - assertThat(keyA.getValue(), is("A")); - assertThat(keyC, notNullValue()); - assertThat(keyC.getValue(), equalTo("C")); - assertThat(keyDO, notNullValue()); - assertThat(keyDO.getValue(), equalTo("O")); - assertThat(keyDP, notNullValue()); - assertThat(keyDP.getValue(), is("P")); - } - - @Test(expected = ConfigException.class) - public void canHandleIllegalJSONFileWhichContainsAnArray() throws Exception { - URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/with-array.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - getPropertiesFrom(configURL).getProperties(); - } - - @Test(expected = ConfigException.class) - public void canHandleIllegalJSONFileConsistingOfOneOpeningBracket() throws Exception { - URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/only-opening-bracket.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - getPropertiesFrom(configURL).getProperties(); - } - - @Test(expected = ConfigException.class) - public void canHandleIllegalJSONFileWhichIsEmpty() throws Exception { - URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/empty-file.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - getPropertiesFrom(configURL).getProperties(); - } - - @Test - public void priorityInConfigFileOverwriteExplicitlyGivenPriority() throws Exception { - URL configURL = JSONPropertySourceTest.class.getResource("/configs/valid/with-explicit-priority.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - PropertySource properties = getPropertiesFrom(configURL); - - assertThat(properties.getOrdinal(), is(16784)); - } - - @Test - public void canReadFlatStringOnlyJSONConfigFile() throws Exception { - URL configURL = JSONPropertySourceTest.class.getResource("/configs/valid/simple-flat-string-only-config.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - PropertySource properties = getPropertiesFrom(configURL); - - assertThat(properties.getProperties().keySet(), hasSize(3)); - - PropertyValue keyA = properties.get("a"); - PropertyValue keyB = properties.get("b"); - PropertyValue keyC = properties.get("c"); - - assertThat(keyA, notNullValue()); - assertThat(keyA.getValue(), equalTo("A")); - assertThat(keyB, notNullValue()); - assertThat(keyB.getValue(), is("B")); - assertThat(keyC, notNullValue()); - assertThat(keyC.getValue(), is("C")); - } - - @Test(expected = ConfigException.class) - public void emptyJSONFileResultsInConfigException() throws Exception { - URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/empty-file.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - PropertySource properties = getPropertiesFrom(configURL); - - properties.getProperties(); - } - - @Test - public void canHandleEmptyJSONObject() throws Exception { - URL configURL = JSONPropertySourceTest.class.getResource("/configs/valid/empty-object-config.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - PropertySource properties = getPropertiesFrom(configURL); - - assertThat(properties.getProperties().keySet(), hasSize(0)); - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONFormatIT.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONFormatIT.java b/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONFormatIT.java deleted file mode 100644 index 851655e..0000000 --- a/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONFormatIT.java +++ /dev/null @@ -1,48 +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.json; - -import org.apache.tamaya.format.ConfigurationFormat; -import org.apache.tamaya.spi.ServiceContextManager; -import org.junit.Test; - -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Integration tests for {@link JSONFormat}. - */ -public class JSONFormatIT { - @Test - public void jsonFormatCanBeFoundViaServiceLoader() throws Exception { - List<ConfigurationFormat> formats = ServiceContextManager.getServiceContext() - .getServices(ConfigurationFormat.class); - - ConfigurationFormat format = null; - for (ConfigurationFormat f : formats) { - if (f instanceof JSONFormat) { - format = f; - break; - } - } - assertThat(format, notNullValue()); - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONFormatTest.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONFormatTest.java b/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONFormatTest.java deleted file mode 100644 index 513e1b0..0000000 --- a/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONFormatTest.java +++ /dev/null @@ -1,75 +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.json; - - -import org.apache.tamaya.format.ConfigurationData; -import org.apache.tamaya.format.MappedConfigurationDataPropertySource; -import org.apache.tamaya.spi.PropertySource; -import org.junit.Test; - -import java.io.InputStream; -import java.net.URL; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; - -public class JSONFormatTest extends CommonJSONTestCaseCollection { - private final JSONFormat format = new JSONFormat(); - - @Test(expected = NullPointerException.class) - public void acceptsNeedsNonNullParameter() throws Exception { - format.accepts(null); - } - - @Test - public void aNonJSONFileBasedURLIsNotAccepted() throws Exception { - URL url = new URL("file:///etc/service/conf.conf"); - - assertThat(format.accepts(url), is(false)); - } - - @Test - public void aJSONFileBasedURLIsAccepted() throws Exception { - URL url = new URL("file:///etc/service/conf.json"); - - assertThat(format.accepts(url), is(true)); - } - - @Test - public void aHTTPBasedURLIsNotAccepted() throws Exception { - URL url = new URL("http://nowhere.somewhere/conf.json"); - assertThat(format.accepts(url), is(true)); - } - - @Test - public void aFTPBasedURLIsNotAccepted() throws Exception { - URL url = new URL("ftp://nowhere.somewhere/a/b/c/d/conf.json"); - - assertThat(format.accepts(url), is(true)); - } - - @Override - PropertySource getPropertiesFrom(URL source) throws Exception { - try (InputStream is = source.openStream()) { - ConfigurationData data = format.readConfiguration(source.toString(), is); - return new MappedConfigurationDataPropertySource(data); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONPropertySourceTest.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONPropertySourceTest.java b/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONPropertySourceTest.java deleted file mode 100644 index 9892446..0000000 --- a/modules/formats/json/src/test/java/org/apache/tamaya/json/JSONPropertySourceTest.java +++ /dev/null @@ -1,56 +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.json; - -import org.apache.tamaya.ConfigException; -import org.apache.tamaya.spi.PropertySource; -import org.hamcrest.CoreMatchers; -import org.junit.Test; - -import java.net.URL; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertEquals; - -public class JSONPropertySourceTest extends CommonJSONTestCaseCollection { - - @Test - public void tamayaOrdinalKeywordIsNotPropagatedAsNormalProperty() throws Exception { - URL configURL = JSONPropertySourceTest.class.getResource("/configs/valid/with-explicit-priority.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - JSONPropertySource source = new JSONPropertySource(configURL, 4); - assertEquals(source.get(PropertySource.TAMAYA_ORDINAL).getValue(), "16784"); - } - - @Test(expected=ConfigException.class) - public void testDoNotAcceptJsonArrays() throws Exception { - URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/array.json"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - new JSONPropertySource(configURL); - } - - @Override - PropertySource getPropertiesFrom(URL source) throws Exception { - return new JSONPropertySource(source); - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/test/java/org/apache/tamaya/yaml/CommonJSONTestCaseCollection.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/test/java/org/apache/tamaya/yaml/CommonJSONTestCaseCollection.java b/modules/formats/json/src/test/java/org/apache/tamaya/yaml/CommonJSONTestCaseCollection.java new file mode 100644 index 0000000..21cd2f9 --- /dev/null +++ b/modules/formats/json/src/test/java/org/apache/tamaya/yaml/CommonJSONTestCaseCollection.java @@ -0,0 +1,190 @@ +/* + * 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.yaml; + +import org.apache.tamaya.ConfigException; +import org.apache.tamaya.spi.PropertySource; +import org.apache.tamaya.spi.PropertyValue; +import org.hamcrest.CoreMatchers; +import org.hamcrest.Matchers; +import org.junit.Test; + +import java.net.URL; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.hasSize; + +/** + * Class with a collection of common test cases each JSON processing + * class must be able to pass. + */ +public abstract class CommonJSONTestCaseCollection { + + abstract PropertySource getPropertiesFrom(URL source) throws Exception; + + @Test + public void canReadNonLatinCharacters() throws Exception { + URL configURL = JSONPropertySourceTest.class + .getResource("/configs/valid/cyrillic.json"); + + assertThat(configURL, Matchers.notNullValue()); + + PropertySource propertySource = getPropertiesFrom(configURL); + + assertThat(propertySource.get("name"), Matchers.notNullValue()); + assertThat(propertySource.get("name").getValue(), equalTo("\u041e\u043b\u0438\u0432\u0435\u0440")); + assertThat(propertySource.get("\u0444\u0430\u043c\u0438\u043b\u0438\u044f"), Matchers.notNullValue()); + assertThat(propertySource.get("\u0444\u0430\u043c\u0438\u043b\u0438\u044f").getValue(), Matchers.equalTo("Fischer")); + } + + @Test + public void canReadNestedStringOnlyJSONConfigFile2() throws Exception { + URL configURL = JSONPropertySourceTest.class + .getResource("/configs/valid/simple-nested-string-only-config-1.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + PropertySource properties = getPropertiesFrom(configURL); + + assertThat(properties.getProperties().keySet(), hasSize(5)); + + PropertyValue keyB = properties.get("b"); + PropertyValue keyDO = properties.get("d.o"); + PropertyValue keyDP = properties.get("d.p"); + + assertThat(keyB, notNullValue()); + assertThat(keyB.getValue(), equalTo("B")); + assertThat(keyDO, notNullValue()); + assertThat(keyDO.getValue(), equalTo("O")); + assertThat(keyDP, Matchers.notNullValue()); + assertThat(keyDP.getValue(), is("P")); + } + + @Test + public void canReadNestedStringOnlyJSONConfigFileWithObjectInTheMiddle() + throws Exception { + URL configURL = JSONPropertySourceTest.class + .getResource("/configs/valid/simple-nested-string-only-config-2.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + PropertySource properties = getPropertiesFrom(configURL); + + assertThat(properties.getProperties().keySet(), hasSize(4)); + + PropertyValue keyA = properties.get("a"); + PropertyValue keyDO = properties.get("b.o"); + PropertyValue keyDP = properties.get("b.p"); + PropertyValue keyC = properties.get("c"); + + assertThat(keyA, notNullValue()); + assertThat(keyA.getValue(), is("A")); + assertThat(keyC, notNullValue()); + assertThat(keyC.getValue(), equalTo("C")); + assertThat(keyDO, notNullValue()); + assertThat(keyDO.getValue(), equalTo("O")); + assertThat(keyDP, notNullValue()); + assertThat(keyDP.getValue(), is("P")); + } + + @Test(expected = ConfigException.class) + public void canHandleIllegalJSONFileWhichContainsAnArray() throws Exception { + URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/with-array.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + getPropertiesFrom(configURL).getProperties(); + } + + @Test(expected = ConfigException.class) + public void canHandleIllegalJSONFileConsistingOfOneOpeningBracket() throws Exception { + URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/only-opening-bracket.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + getPropertiesFrom(configURL).getProperties(); + } + + @Test(expected = ConfigException.class) + public void canHandleIllegalJSONFileWhichIsEmpty() throws Exception { + URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/empty-file.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + getPropertiesFrom(configURL).getProperties(); + } + + @Test + public void priorityInConfigFileOverwriteExplicitlyGivenPriority() throws Exception { + URL configURL = JSONPropertySourceTest.class.getResource("/configs/valid/with-explicit-priority.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + PropertySource properties = getPropertiesFrom(configURL); + + assertThat(properties.getOrdinal(), is(16784)); + } + + @Test + public void canReadFlatStringOnlyJSONConfigFile() throws Exception { + URL configURL = JSONPropertySourceTest.class.getResource("/configs/valid/simple-flat-string-only-config.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + PropertySource properties = getPropertiesFrom(configURL); + + assertThat(properties.getProperties().keySet(), hasSize(3)); + + PropertyValue keyA = properties.get("a"); + PropertyValue keyB = properties.get("b"); + PropertyValue keyC = properties.get("c"); + + assertThat(keyA, notNullValue()); + assertThat(keyA.getValue(), equalTo("A")); + assertThat(keyB, notNullValue()); + assertThat(keyB.getValue(), is("B")); + assertThat(keyC, notNullValue()); + assertThat(keyC.getValue(), is("C")); + } + + @Test(expected = ConfigException.class) + public void emptyJSONFileResultsInConfigException() throws Exception { + URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/empty-file.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + PropertySource properties = getPropertiesFrom(configURL); + + properties.getProperties(); + } + + @Test + public void canHandleEmptyJSONObject() throws Exception { + URL configURL = JSONPropertySourceTest.class.getResource("/configs/valid/empty-object-config.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + PropertySource properties = getPropertiesFrom(configURL); + + assertThat(properties.getProperties().keySet(), hasSize(0)); + } +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONFormatIT.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONFormatIT.java b/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONFormatIT.java new file mode 100644 index 0000000..a13810e --- /dev/null +++ b/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONFormatIT.java @@ -0,0 +1,49 @@ +/* + * 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.yaml; + +import org.apache.tamaya.format.ConfigurationFormat; +import org.apache.tamaya.json.JSONFormat; +import org.apache.tamaya.spi.ServiceContextManager; +import org.junit.Test; + +import java.util.List; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.notNullValue; + +/** + * Integration tests for {@link JSONFormat}. + */ +public class JSONFormatIT { + @Test + public void jsonFormatCanBeFoundViaServiceLoader() throws Exception { + List<ConfigurationFormat> formats = ServiceContextManager.getServiceContext() + .getServices(ConfigurationFormat.class); + + ConfigurationFormat format = null; + for (ConfigurationFormat f : formats) { + if (f instanceof JSONFormat) { + format = f; + break; + } + } + assertThat(format, notNullValue()); + } +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONFormatTest.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONFormatTest.java b/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONFormatTest.java new file mode 100644 index 0000000..216573e --- /dev/null +++ b/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONFormatTest.java @@ -0,0 +1,76 @@ +/* + * 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.yaml; + + +import org.apache.tamaya.format.ConfigurationData; +import org.apache.tamaya.format.MappedConfigurationDataPropertySource; +import org.apache.tamaya.json.JSONFormat; +import org.apache.tamaya.spi.PropertySource; +import org.junit.Test; + +import java.io.InputStream; +import java.net.URL; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.Is.is; + +public class JSONFormatTest extends CommonJSONTestCaseCollection { + private final JSONFormat format = new JSONFormat(); + + @Test(expected = NullPointerException.class) + public void acceptsNeedsNonNullParameter() throws Exception { + format.accepts(null); + } + + @Test + public void aNonJSONFileBasedURLIsNotAccepted() throws Exception { + URL url = new URL("file:///etc/service/conf.conf"); + + assertThat(format.accepts(url), is(false)); + } + + @Test + public void aJSONFileBasedURLIsAccepted() throws Exception { + URL url = new URL("file:///etc/service/conf.json"); + + assertThat(format.accepts(url), is(true)); + } + + @Test + public void aHTTPBasedURLIsNotAccepted() throws Exception { + URL url = new URL("http://nowhere.somewhere/conf.json"); + assertThat(format.accepts(url), is(true)); + } + + @Test + public void aFTPBasedURLIsNotAccepted() throws Exception { + URL url = new URL("ftp://nowhere.somewhere/a/b/c/d/conf.json"); + + assertThat(format.accepts(url), is(true)); + } + + @Override + PropertySource getPropertiesFrom(URL source) throws Exception { + try (InputStream is = source.openStream()) { + ConfigurationData data = format.readConfiguration(source.toString(), is); + return new MappedConfigurationDataPropertySource(data); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONPropertySourceTest.java ---------------------------------------------------------------------- diff --git a/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONPropertySourceTest.java b/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONPropertySourceTest.java new file mode 100644 index 0000000..83944f5 --- /dev/null +++ b/modules/formats/json/src/test/java/org/apache/tamaya/yaml/JSONPropertySourceTest.java @@ -0,0 +1,57 @@ +/* + * 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.yaml; + +import org.apache.tamaya.ConfigException; +import org.apache.tamaya.json.JSONPropertySource; +import org.apache.tamaya.spi.PropertySource; +import org.hamcrest.CoreMatchers; +import org.junit.Test; + +import java.net.URL; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertEquals; + +public class JSONPropertySourceTest extends CommonJSONTestCaseCollection { + + @Test + public void tamayaOrdinalKeywordIsNotPropagatedAsNormalProperty() throws Exception { + URL configURL = JSONPropertySourceTest.class.getResource("/configs/valid/with-explicit-priority.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + JSONPropertySource source = new JSONPropertySource(configURL, 4); + assertEquals(source.get(PropertySource.TAMAYA_ORDINAL).getValue(), "16784"); + } + + @Test(expected=ConfigException.class) + public void testDoNotAcceptJsonArrays() throws Exception { + URL configURL = JSONPropertySourceTest.class.getResource("/configs/invalid/array.json"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + new JSONPropertySource(configURL); + } + + @Override + PropertySource getPropertiesFrom(URL source) throws Exception { + return new JSONPropertySource(source); + } +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/bnd.bnd b/modules/formats/yaml/bnd.bnd new file mode 100644 index 0000000..325dbc7 --- /dev/null +++ b/modules/formats/yaml/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.yaml \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/src/main/java/org/apache/tamaya/json/YAMLFormat.java ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/src/main/java/org/apache/tamaya/json/YAMLFormat.java b/modules/formats/yaml/src/main/java/org/apache/tamaya/json/YAMLFormat.java deleted file mode 100644 index 06e431e..0000000 --- a/modules/formats/yaml/src/main/java/org/apache/tamaya/json/YAMLFormat.java +++ /dev/null @@ -1,156 +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.json; - -import org.apache.tamaya.ConfigException; -import org.apache.tamaya.format.ConfigurationData; -import org.apache.tamaya.format.ConfigurationDataBuilder; -import org.apache.tamaya.format.ConfigurationFormat; -import org.yaml.snakeyaml.Yaml; - -import java.io.InputStream; -import java.net.URL; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.logging.Level; -import java.util.logging.Logger; - -import static java.lang.String.format; - - -/** - * Implementation of the {@link org.apache.tamaya.format.ConfigurationFormat} - * able to read configuration properties represented in JSON - * - * @see <a href="http://www.json.org">JSON format specification</a> - */ -public class YAMLFormat implements ConfigurationFormat { - /** - * THe logger. - */ - private static final Logger LOG = Logger.getLogger(YAMLFormat.class.getName()); - - /** - * Constructor, itniaitlizing zhe JSON reader factory. - */ - public YAMLFormat(){ - } - - @Override - public String getName() { - return "yaml"; - } - - @Override - public boolean accepts(URL url) { - return Objects.requireNonNull(url).getPath().endsWith(".yaml"); - } - - @Override - public ConfigurationData readConfiguration(String resource, InputStream inputStream) { - try( InputStream in = inputStream;) { - Map<String, String> values = readConfig(resource, inputStream); - return ConfigurationDataBuilder.of(resource, this).addProperties(values) - .build(); - } catch (Exception e) { - throw new ConfigException("Failed to read data from " + resource, e); - } - } - - /** - * Reads the configuration. - * @param inputStream the input stream, not null. - * @param resource resource URI, not null. - * @return the configuration read from the given resource URI. - * @throws ConfigException if resource URI cannot be read. - */ - protected Map<String, String> readConfig(String resource, InputStream inputStream) { - try{ - Yaml yaml = new Yaml(); - HashMap<String, String> values = new HashMap<>(); - Object config = yaml.load(inputStream); - mapYamlIntoProperties(config, values); - if(LOG.isLoggable(Level.FINEST)){ - LOG.finest("Read data from " + resource + " : " + values); - } - return values; - }catch (Throwable t) { - throw new ConfigException(format("Failed to read properties from %s", resource), t); - } - } - /** - * Reads the configuration. - * @param urlResource soure of the configuration. - * @return the configuration read from the given resource URL. - * @throws ConfigException if resource URL cannot be read. - */ - protected Map<String, String> readConfig(URL urlResource) { - try (InputStream is = urlResource.openStream()) { - return readConfig(urlResource.toExternalForm(), is); - } - catch (Throwable t) { - throw new ConfigException(format("Failed to read properties from %s", urlResource.toExternalForm()), t); - } - } - - private void mapYamlIntoProperties(Object config, HashMap<String, String> values) { - mapYamlIntoProperties("", config, values); - } - - /** - * Maps the given config item (could be a String, a collection type or something else returned by the yaml parser - * to a key/value pair and adds it to {@code values} (hereby honoring the prefix as a key to be used.). - * Collection types are recursively to remapped hereby extending the given prefix as needed and recursively - * delegate mapping of values contained. - * @param prefix the prefix or key evaluated so far, never null (but can be empty for root entries). - * @param config the config value. Could be a single value or a collection type. - * @param values the properties where items identified must be written into. These properties are going to be - * returned as result of the format reading operation ans integrated into the overall configuration - * map. - */ - protected void mapYamlIntoProperties(String prefix, Object config, HashMap<String, String> values) { - // add further data types supported by yaml, e.g. date, ... - if(config instanceof List){ - StringBuilder b = new StringBuilder(); - for(Object val:((List<Object>)config)){ - b.append(mapValueToString(val)); - b.append(","); - } - if(b.length()>0){ - b.setLength(b.length()-1); - } - values.put(prefix, b.toString()); - values.put("_"+prefix+".collection-type", "List"); - } else if(config instanceof Map){ - for(Map.Entry<String,Object> en:((Map<String,Object>)config).entrySet()){ - String newPrefix = prefix.isEmpty()?en.getKey():prefix +"."+en.getKey(); - mapYamlIntoProperties(newPrefix, en.getValue(), values); - } - } else{ - values.put(prefix, mapValueToString(config)); - } - } - - protected String mapValueToString(Object val) { - return String.valueOf(val); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/src/main/java/org/apache/tamaya/json/YAMLPropertySource.java ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/src/main/java/org/apache/tamaya/json/YAMLPropertySource.java b/modules/formats/yaml/src/main/java/org/apache/tamaya/json/YAMLPropertySource.java deleted file mode 100644 index e29d2e7..0000000 --- a/modules/formats/yaml/src/main/java/org/apache/tamaya/json/YAMLPropertySource.java +++ /dev/null @@ -1,100 +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.json; - -import org.apache.tamaya.spi.PropertySource; -import org.apache.tamaya.spi.PropertyValue; - -import java.net.URL; -import java.util.*; -import java.util.logging.Level; -import java.util.logging.Logger; - - - -/** - * Property source based on a JSON file. - */ -public class YAMLPropertySource implements PropertySource { - /** The underlying resource. */ - private final URL urlResource; - /** The values read. */ - private final Map<String, String> values; - /** The evaluated ordinal. */ - private int ordinal; - /** The format implementation used for parsing. */ - private YAMLFormat format = new YAMLFormat(); - - /** - * Constructor, hereby using 0 as the default ordinal. - * @param resource the resource modelled as URL, not null. - */ - public YAMLPropertySource(URL resource) { - this(resource, 0); - } - - /** - * Constructor. - * @param resource the resource modelled as URL, not null. - * @param defaultOrdinal the defaultOrdinal to be used. - */ - public YAMLPropertySource(URL resource, int defaultOrdinal) { - urlResource = Objects.requireNonNull(resource); - this.ordinal = defaultOrdinal; // may be overriden by read... - this.values = format.readConfig(urlResource); - if (this.values.containsKey(TAMAYA_ORDINAL)) { - this.ordinal = Integer.parseInt(this.values.get(TAMAYA_ORDINAL)); - } - } - - @Override - public int getOrdinal() { - PropertyValue configuredOrdinal = get(TAMAYA_ORDINAL); - if(configuredOrdinal!=null){ - try{ - return Integer.parseInt(configuredOrdinal.getValue()); - } catch(Exception e){ - Logger.getLogger(getClass().getName()).log(Level.WARNING, - "Configured Ordinal is not an int number: " + configuredOrdinal, e); - } - } - return ordinal; - } - - @Override - public String getName() { - return urlResource.toExternalForm(); - } - - @Override - public PropertyValue get(String key) { - return PropertyValue.of(key, getProperties().get(key), getName()); - } - - @Override - public Map<String, String> getProperties() { - return Collections.unmodifiableMap(values); - } - - - @Override - public boolean isScannable() { - return true; - } -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLFormat.java ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLFormat.java b/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLFormat.java new file mode 100644 index 0000000..bdb83aa --- /dev/null +++ b/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLFormat.java @@ -0,0 +1,156 @@ +/* + * 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.yaml; + +import org.apache.tamaya.ConfigException; +import org.apache.tamaya.format.ConfigurationData; +import org.apache.tamaya.format.ConfigurationDataBuilder; +import org.apache.tamaya.format.ConfigurationFormat; +import org.yaml.snakeyaml.Yaml; + +import java.io.InputStream; +import java.net.URL; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.logging.Level; +import java.util.logging.Logger; + +import static java.lang.String.format; + + +/** + * Implementation of the {@link org.apache.tamaya.format.ConfigurationFormat} + * able to read configuration properties represented in JSON + * + * @see <a href="http://www.json.org">JSON format specification</a> + */ +public class YAMLFormat implements ConfigurationFormat { + /** + * THe logger. + */ + private static final Logger LOG = Logger.getLogger(YAMLFormat.class.getName()); + + /** + * Constructor, itniaitlizing zhe JSON reader factory. + */ + public YAMLFormat(){ + } + + @Override + public String getName() { + return "yaml"; + } + + @Override + public boolean accepts(URL url) { + return Objects.requireNonNull(url).getPath().endsWith(".yaml"); + } + + @Override + public ConfigurationData readConfiguration(String resource, InputStream inputStream) { + try( InputStream in = inputStream;) { + Map<String, String> values = readConfig(resource, inputStream); + return ConfigurationDataBuilder.of(resource, this).addProperties(values) + .build(); + } catch (Exception e) { + throw new ConfigException("Failed to read data from " + resource, e); + } + } + + /** + * Reads the configuration. + * @param inputStream the input stream, not null. + * @param resource resource URI, not null. + * @return the configuration read from the given resource URI. + * @throws ConfigException if resource URI cannot be read. + */ + protected Map<String, String> readConfig(String resource, InputStream inputStream) { + try{ + Yaml yaml = new Yaml(); + HashMap<String, String> values = new HashMap<>(); + Object config = yaml.load(inputStream); + mapYamlIntoProperties(config, values); + if(LOG.isLoggable(Level.FINEST)){ + LOG.finest("Read data from " + resource + " : " + values); + } + return values; + }catch (Throwable t) { + throw new ConfigException(format("Failed to read properties from %s", resource), t); + } + } + /** + * Reads the configuration. + * @param urlResource soure of the configuration. + * @return the configuration read from the given resource URL. + * @throws ConfigException if resource URL cannot be read. + */ + protected Map<String, String> readConfig(URL urlResource) { + try (InputStream is = urlResource.openStream()) { + return readConfig(urlResource.toExternalForm(), is); + } + catch (Throwable t) { + throw new ConfigException(format("Failed to read properties from %s", urlResource.toExternalForm()), t); + } + } + + private void mapYamlIntoProperties(Object config, HashMap<String, String> values) { + mapYamlIntoProperties("", config, values); + } + + /** + * Maps the given config item (could be a String, a collection type or something else returned by the yaml parser + * to a key/value pair and adds it to {@code values} (hereby honoring the prefix as a key to be used.). + * Collection types are recursively to remapped hereby extending the given prefix as needed and recursively + * delegate mapping of values contained. + * @param prefix the prefix or key evaluated so far, never null (but can be empty for root entries). + * @param config the config value. Could be a single value or a collection type. + * @param values the properties where items identified must be written into. These properties are going to be + * returned as result of the format reading operation ans integrated into the overall configuration + * map. + */ + protected void mapYamlIntoProperties(String prefix, Object config, HashMap<String, String> values) { + // add further data types supported by yaml, e.g. date, ... + if(config instanceof List){ + StringBuilder b = new StringBuilder(); + for(Object val:((List<Object>)config)){ + b.append(mapValueToString(val)); + b.append(","); + } + if(b.length()>0){ + b.setLength(b.length()-1); + } + values.put(prefix, b.toString()); + values.put("_"+prefix+".collection-type", "List"); + } else if(config instanceof Map){ + for(Map.Entry<String,Object> en:((Map<String,Object>)config).entrySet()){ + String newPrefix = prefix.isEmpty()?en.getKey():prefix +"."+en.getKey(); + mapYamlIntoProperties(newPrefix, en.getValue(), values); + } + } else{ + values.put(prefix, mapValueToString(config)); + } + } + + protected String mapValueToString(Object val) { + return String.valueOf(val); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLPropertySource.java ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLPropertySource.java b/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLPropertySource.java new file mode 100644 index 0000000..9edc15b --- /dev/null +++ b/modules/formats/yaml/src/main/java/org/apache/tamaya/yaml/YAMLPropertySource.java @@ -0,0 +1,100 @@ +/* + * 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.yaml; + +import org.apache.tamaya.spi.PropertySource; +import org.apache.tamaya.spi.PropertyValue; + +import java.net.URL; +import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; + + + +/** + * Property source based on a JSON file. + */ +public class YAMLPropertySource implements PropertySource { + /** The underlying resource. */ + private final URL urlResource; + /** The values read. */ + private final Map<String, String> values; + /** The evaluated ordinal. */ + private int ordinal; + /** The format implementation used for parsing. */ + private YAMLFormat format = new YAMLFormat(); + + /** + * Constructor, hereby using 0 as the default ordinal. + * @param resource the resource modelled as URL, not null. + */ + public YAMLPropertySource(URL resource) { + this(resource, 0); + } + + /** + * Constructor. + * @param resource the resource modelled as URL, not null. + * @param defaultOrdinal the defaultOrdinal to be used. + */ + public YAMLPropertySource(URL resource, int defaultOrdinal) { + urlResource = Objects.requireNonNull(resource); + this.ordinal = defaultOrdinal; // may be overriden by read... + this.values = format.readConfig(urlResource); + if (this.values.containsKey(TAMAYA_ORDINAL)) { + this.ordinal = Integer.parseInt(this.values.get(TAMAYA_ORDINAL)); + } + } + + @Override + public int getOrdinal() { + PropertyValue configuredOrdinal = get(TAMAYA_ORDINAL); + if(configuredOrdinal!=null){ + try{ + return Integer.parseInt(configuredOrdinal.getValue()); + } catch(Exception e){ + Logger.getLogger(getClass().getName()).log(Level.WARNING, + "Configured Ordinal is not an int number: " + configuredOrdinal, e); + } + } + return ordinal; + } + + @Override + public String getName() { + return urlResource.toExternalForm(); + } + + @Override + public PropertyValue get(String key) { + return PropertyValue.of(key, getProperties().get(key), getName()); + } + + @Override + public Map<String, String> getProperties() { + return Collections.unmodifiableMap(values); + } + + + @Override + public boolean isScannable() { + return true; + } +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/src/main/resources/META-INF/services/org.apache.tamaya.format.ConfigurationFormat ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/src/main/resources/META-INF/services/org.apache.tamaya.format.ConfigurationFormat b/modules/formats/yaml/src/main/resources/META-INF/services/org.apache.tamaya.format.ConfigurationFormat index 1b5d57d..97bd1d8 100644 --- a/modules/formats/yaml/src/main/resources/META-INF/services/org.apache.tamaya.format.ConfigurationFormat +++ b/modules/formats/yaml/src/main/resources/META-INF/services/org.apache.tamaya.format.ConfigurationFormat @@ -16,4 +16,4 @@ # specific language governing permissions and limitations # under the License. # -org.apache.tamaya.json.YAMLFormat \ No newline at end of file +org.apache.tamaya.yaml.YAMLFormat \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/src/test/java/org/apache/tamaya/json/YAMLFormatTest.java ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/src/test/java/org/apache/tamaya/json/YAMLFormatTest.java b/modules/formats/yaml/src/test/java/org/apache/tamaya/json/YAMLFormatTest.java deleted file mode 100644 index adc170f..0000000 --- a/modules/formats/yaml/src/test/java/org/apache/tamaya/json/YAMLFormatTest.java +++ /dev/null @@ -1,70 +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.json; - - -import org.apache.tamaya.format.ConfigurationData; -import org.junit.Test; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Map; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -public class YAMLFormatTest { - private final YAMLFormat format = new YAMLFormat(); - - @Test - public void testAcceptURL() throws MalformedURLException { - assertTrue(format.accepts(new URL("http://127.0.0.1/anyfile.yaml"))); - } - - @Test - public void testAcceptURL_BC1() throws MalformedURLException { - assertFalse(format.accepts(new URL("http://127.0.0.1/anyfile.YAML"))); - } - - @Test(expected = NullPointerException.class) - public void testAcceptURL_BC2() throws MalformedURLException { - assertFalse(format.accepts(null)); - } - - @Test - public void testAcceptURL_BC3() throws MalformedURLException { - assertFalse(format.accepts(new URL("http://127.0.0.1/anyfile.docx"))); - } - - @Test - public void testRead() throws IOException { - URL configURL = YAMLPropertySourceTest.class.getResource("/configs/valid/contact.yaml"); - assertTrue(format.accepts(configURL)); - ConfigurationData data = format.readConfiguration(configURL.toString(), configURL.openStream()); - assertNotNull(data); - for(Map.Entry<String,String> en:data.getDefaultProperties().entrySet()) { - System.out.println(en.getKey() + " -> " + en.getValue()); - } - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/src/test/java/org/apache/tamaya/json/YAMLPropertySourceTest.java ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/src/test/java/org/apache/tamaya/json/YAMLPropertySourceTest.java b/modules/formats/yaml/src/test/java/org/apache/tamaya/json/YAMLPropertySourceTest.java deleted file mode 100644 index 7f1c7a3..0000000 --- a/modules/formats/yaml/src/test/java/org/apache/tamaya/json/YAMLPropertySourceTest.java +++ /dev/null @@ -1,54 +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.json; - -import org.apache.tamaya.ConfigException; -import org.apache.tamaya.spi.PropertySource; -import org.hamcrest.CoreMatchers; -import org.junit.Test; - -import java.net.URL; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.Assert.assertEquals; - -public class YAMLPropertySourceTest { - - @Test - public void testYamlWithOrdinal() throws Exception { - URL configURL = YAMLPropertySourceTest.class.getResource("/configs/valid/test-with-prio.yaml"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - YAMLPropertySource source = new YAMLPropertySource(configURL, 4); - assertEquals(source.getOrdinal(), 16784); - } - - @Test - public void testYamlDefaultOrdinal() throws Exception { - URL configURL = YAMLPropertySourceTest.class.getResource("/configs/valid/test.yaml"); - - assertThat(configURL, CoreMatchers.notNullValue()); - - YAMLPropertySource source = new YAMLPropertySource(configURL, 4); - assertEquals(source.getOrdinal(), 4); - } - - -} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLFormatTest.java ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLFormatTest.java b/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLFormatTest.java new file mode 100644 index 0000000..9f241f0 --- /dev/null +++ b/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLFormatTest.java @@ -0,0 +1,70 @@ +/* + * 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.yaml; + + +import org.apache.tamaya.format.ConfigurationData; +import org.junit.Test; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Map; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +public class YAMLFormatTest { + private final YAMLFormat format = new YAMLFormat(); + + @Test + public void testAcceptURL() throws MalformedURLException { + assertTrue(format.accepts(new URL("http://127.0.0.1/anyfile.yaml"))); + } + + @Test + public void testAcceptURL_BC1() throws MalformedURLException { + assertFalse(format.accepts(new URL("http://127.0.0.1/anyfile.YAML"))); + } + + @Test(expected = NullPointerException.class) + public void testAcceptURL_BC2() throws MalformedURLException { + assertFalse(format.accepts(null)); + } + + @Test + public void testAcceptURL_BC3() throws MalformedURLException { + assertFalse(format.accepts(new URL("http://127.0.0.1/anyfile.docx"))); + } + + @Test + public void testRead() throws IOException { + URL configURL = YAMLPropertySourceTest.class.getResource("/configs/valid/contact.yaml"); + assertTrue(format.accepts(configURL)); + ConfigurationData data = format.readConfiguration(configURL.toString(), configURL.openStream()); + assertNotNull(data); + for(Map.Entry<String,String> en:data.getDefaultProperties().entrySet()) { + System.out.println(en.getKey() + " -> " + en.getValue()); + } + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLPropertySourceTest.java ---------------------------------------------------------------------- diff --git a/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLPropertySourceTest.java b/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLPropertySourceTest.java new file mode 100644 index 0000000..8aa90bc --- /dev/null +++ b/modules/formats/yaml/src/test/java/org/apache/tamaya/yaml/YAMLPropertySourceTest.java @@ -0,0 +1,52 @@ +/* + * 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.yaml; + +import org.hamcrest.CoreMatchers; +import org.junit.Test; + +import java.net.URL; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertEquals; + +public class YAMLPropertySourceTest { + + @Test + public void testYamlWithOrdinal() throws Exception { + URL configURL = YAMLPropertySourceTest.class.getResource("/configs/valid/test-with-prio.yaml"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + YAMLPropertySource source = new YAMLPropertySource(configURL, 4); + assertEquals(source.getOrdinal(), 16784); + } + + @Test + public void testYamlDefaultOrdinal() throws Exception { + URL configURL = YAMLPropertySourceTest.class.getResource("/configs/valid/test.yaml"); + + assertThat(configURL, CoreMatchers.notNullValue()); + + YAMLPropertySource source = new YAMLPropertySource(configURL, 4); + assertEquals(source.getOrdinal(), 4); + } + + +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/functions/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/functions/bnd.bnd b/modules/functions/bnd.bnd new file mode 100644 index 0000000..3951e26 --- /dev/null +++ b/modules/functions/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.functions \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/injection/injection-api/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/injection/injection-api/bnd.bnd b/modules/injection/injection-api/bnd.bnd new file mode 100644 index 0000000..c68fb11 --- /dev/null +++ b/modules/injection/injection-api/bnd.bnd @@ -0,0 +1,3 @@ +Export-Package: \ + org.apache.tamaya.inject.api,\ + org.apache.tamaya.inject.spi \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/injection/standalone/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/injection/standalone/bnd.bnd b/modules/injection/standalone/bnd.bnd new file mode 100644 index 0000000..8bfdf02 --- /dev/null +++ b/modules/injection/standalone/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.inject \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/mutable-config/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/mutable-config/bnd.bnd b/modules/mutable-config/bnd.bnd new file mode 100644 index 0000000..89222d7 --- /dev/null +++ b/modules/mutable-config/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.mutableconfig \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/optional/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/optional/bnd.bnd b/modules/optional/bnd.bnd new file mode 100644 index 0000000..9463045 --- /dev/null +++ b/modules/optional/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.optional \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/resolver/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/resolver/bnd.bnd b/modules/resolver/bnd.bnd new file mode 100644 index 0000000..21965e8 --- /dev/null +++ b/modules/resolver/bnd.bnd @@ -0,0 +1,3 @@ +Export-Package: \ + org.apache.tamaya.resolver,\ + org.apache.tamaya.resolver.spi \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/resources/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/resources/bnd.bnd b/modules/resources/bnd.bnd new file mode 100644 index 0000000..44ece01 --- /dev/null +++ b/modules/resources/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.resource \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/spi-support/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/spi-support/bnd.bnd b/modules/spi-support/bnd.bnd new file mode 100644 index 0000000..37c99b7 --- /dev/null +++ b/modules/spi-support/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.spisupport \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/modules/spring/bnd.bnd ---------------------------------------------------------------------- diff --git a/modules/spring/bnd.bnd b/modules/spring/bnd.bnd new file mode 100644 index 0000000..eb0c2fb --- /dev/null +++ b/modules/spring/bnd.bnd @@ -0,0 +1,2 @@ +Export-Package: \ + org.apache.tamaya.integration.spring \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/85ae2a47/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index c3e9a69..36b672c 100644 --- a/pom.xml +++ b/pom.xml @@ -505,32 +505,14 @@ under the License. </configuration> </plugin> <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <version>3.2.0</version> - <inherited>true</inherited> - <extensions>true</extensions> - <configuration> - <instructions> - <Bundle-DocURL>http://tamaya.incubator.apache.org</Bundle-DocURL> - <Bundle-SymbolicName> - ${project.groupId}.${project.artifactId} - </Bundle-SymbolicName> - <Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor> - </instructions> - </configuration> + <groupId>biz.aQute.bnd</groupId> + <artifactId>bnd-maven-plugin</artifactId> + <version>3.3.0</version> <executions> <execution> - <id>cleanVersions</id> - <phase>generate-sources</phase> <goals> - <goal>cleanVersions</goal> + <goal>bnd-process</goal> </goals> - <configuration> - <versions> - <karaf.osgi.version>${osgi.version}</karaf.osgi.version> - </versions> - </configuration> </execution> </executions> </plugin> @@ -767,6 +749,18 @@ under the License. <target>1.7</target> </configuration> </plugin> + <plugin> + <groupId>biz.aQute.bnd</groupId> + <artifactId>bnd-maven-plugin</artifactId> + <version>3.3.0</version> + <executions> + <execution> + <goals> + <goal>bnd-process</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build>
