Repository: wicket Updated Branches: refs/heads/master c2ba28d27 -> 8ed4f8e06
WICKET-5997 Compatibility problem with Websphere liberty profile Use ServiceLoader instead of collecting the wicket.properties files in the classpath with custom logic Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8ed4f8e0 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8ed4f8e0 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8ed4f8e0 Branch: refs/heads/master Commit: 8ed4f8e0619e08c688ec53620fbd3ac1a47785cd Parents: c2ba28d Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Sun Oct 18 12:02:10 2015 +0200 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Sun Oct 18 12:02:10 2015 +0200 ---------------------------------------------------------------------- .../java/org/apache/wicket/Application.java | 57 +++++++++++++++----- .../services/org.apache.wicket.IInitializer | 1 + .../wicket/org.apache.wicket.core.properties | 15 ------ .../services/org.apache.wicket.IInitializer | 1 + .../org.apache.wicket.devutils.properties | 15 ------ .../services/org.apache.wicket.IInitializer | 1 + .../org.apache.wicket.atmosphere.properties | 15 ------ .../services/org.apache.wicket.IInitializer | 1 + .../org.apache.wicket.extensions.properties | 15 ------ .../services/org.apache.wicket.IInitializer | 1 + .../wicket/org.apache.wicket.jmx.properties | 15 ------ .../services/org.apache.wicket.IInitializer | 1 + .../org.apache.wicket.velocity.properties | 15 ------ 13 files changed, 50 insertions(+), 103 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-core/src/main/java/org/apache/wicket/Application.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/Application.java b/wicket-core/src/main/java/org/apache/wicket/Application.java index f6c3f33..55035aa 100644 --- a/wicket-core/src/main/java/org/apache/wicket/Application.java +++ b/wicket-core/src/main/java/org/apache/wicket/Application.java @@ -29,6 +29,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.ServiceLoader; import java.util.Set; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -489,7 +490,10 @@ public abstract class Application implements UnboundListener, IEventSink * * @throws IOException When there is a problem reading the content of the properties file * @throws URISyntaxException When the url to the properties file cannot be translated to a file system path + * @deprecated The collection of wicket.properties in the classpath is broken in OSGi and single-jar + * environments. It is deprecated and will be removed in Wicket 7.3.0. Please see WICKET-5997 */ + @Deprecated private void collectWicketProperties() throws IOException, URISyntaxException { Iterator<URL> wicketResources = getApplicationSettings().getClassResolver().getResources("META-INF/wicket/"); @@ -500,21 +504,31 @@ public abstract class Application implements UnboundListener, IEventSink if ("jar".equals(protocol) || "wsjar".equals(protocol)) { - JarURLConnection jarURLConnection = (JarURLConnection) metaInfWicket.openConnection(); - JarFile jarFile = jarURLConnection.getJarFile(); - Enumeration<JarEntry> jarEntries = jarFile.entries(); - while (jarEntries.hasMoreElements()) + // some versions of WebSphere use JarURL connections, others don't. WICKET-5997 + final URLConnection urlConnection = metaInfWicket.openConnection(); + if (urlConnection instanceof JarURLConnection) { - JarEntry jarEntry = jarEntries.nextElement(); - String entryName = jarEntry.getName(); - if (entryName.startsWith("META-INF/wicket/") && entryName.endsWith(".properties")) + JarURLConnection jarURLConnection = (JarURLConnection) urlConnection; + JarFile jarFile = jarURLConnection.getJarFile(); + Enumeration<JarEntry> jarEntries = jarFile.entries(); + while (jarEntries.hasMoreElements()) { - try (InputStream jarEntryStream = jarFile.getInputStream(jarEntry)) + JarEntry jarEntry = jarEntries.nextElement(); + String entryName = jarEntry.getName(); + if (entryName.startsWith("META-INF/wicket/") && entryName.endsWith(".properties")) { - Properties properties = new Properties(); - properties.load(jarEntryStream); - load(properties); - break; // atm there is no need to have more than one .properties file + try (InputStream jarEntryStream = jarFile.getInputStream(jarEntry)) + { + log.warn("Found '{}' in '{}'. /META-INF/wicket/*.properties doesn't work in OSGi " + + "and single-jar environments and is not supported anymore! " + + "Please see https://issues.apache.org/jira/browse/WICKET-5997 for more details " + + "and report a issue for the library that still uses it.", + entryName, metaInfWicket); + Properties properties = new Properties(); + properties.load(jarEntryStream); + load(properties); + break; // atm there is no need to have more than one .properties file + } } } } @@ -535,6 +549,11 @@ public abstract class Application implements UnboundListener, IEventSink int read = inputStream.read(buf, offset, size); if (read == size) { + log.warn("Found '{}' in '{}'. /META-INF/wicket/*.properties doesn't work in OSGi " + + "and single-jar environments and is not supported anymore! " + + "Please see https://issues.apache.org/jira/browse/WICKET-5997 for more " + + "details and report a issue for the library that still uses it.", + jarEntryName, metaInfWicket); Properties properties = new Properties(); properties.load(new ByteArrayInputStream(buf)); load(properties); @@ -564,6 +583,11 @@ public abstract class Application implements UnboundListener, IEventSink { try (InputStream stream = wicketPropertiesFile.inputStream()) { + log.warn("Found '{}'. /META-INF/wicket/*.properties doesn't work in OSGi " + + "and single-jar environments and is not supported anymore! " + + "Please see https://issues.apache.org/jira/browse/WICKET-5997 for more " + + "details and report a issue for the library that still uses it.", + wicketPropertiesFile); Properties properties = new Properties(); properties.load(stream); load(properties); @@ -707,9 +731,16 @@ public abstract class Application implements UnboundListener, IEventSink { for (IInitializer initializer : initializers) { - log.info("[" + getName() + "] init: " + initializer); + log.info("[{}] init: {}", getName(), initializer); initializer.init(this); } + + final ServiceLoader<IInitializer> serviceLoaderInitializers = ServiceLoader.load(IInitializer.class); + for (IInitializer serviceLoaderInitializer : serviceLoaderInitializers) { + log.info("[{}] init: {}", getName(), serviceLoaderInitializer); + serviceLoaderInitializer.init(this); + initializers.add(serviceLoaderInitializer); + } } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-core/src/main/resources/META-INF/services/org.apache.wicket.IInitializer ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-core/src/main/resources/META-INF/services/org.apache.wicket.IInitializer new file mode 100644 index 0000000..1c52f2d --- /dev/null +++ b/wicket-core/src/main/resources/META-INF/services/org.apache.wicket.IInitializer @@ -0,0 +1 @@ +org.apache.wicket.Initializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-core/src/main/resources/META-INF/wicket/org.apache.wicket.core.properties ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/resources/META-INF/wicket/org.apache.wicket.core.properties b/wicket-core/src/main/resources/META-INF/wicket/org.apache.wicket.core.properties deleted file mode 100644 index d004034..0000000 --- a/wicket-core/src/main/resources/META-INF/wicket/org.apache.wicket.core.properties +++ /dev/null @@ -1,15 +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. -initializer=org.apache.wicket.Initializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-devutils/src/main/resources/META-INF/services/org.apache.wicket.IInitializer ---------------------------------------------------------------------- diff --git a/wicket-devutils/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-devutils/src/main/resources/META-INF/services/org.apache.wicket.IInitializer new file mode 100644 index 0000000..0672d71 --- /dev/null +++ b/wicket-devutils/src/main/resources/META-INF/services/org.apache.wicket.IInitializer @@ -0,0 +1 @@ +org.apache.wicket.devutils.debugbar.DebugBarInitializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-devutils/src/main/resources/META-INF/wicket/org.apache.wicket.devutils.properties ---------------------------------------------------------------------- diff --git a/wicket-devutils/src/main/resources/META-INF/wicket/org.apache.wicket.devutils.properties b/wicket-devutils/src/main/resources/META-INF/wicket/org.apache.wicket.devutils.properties deleted file mode 100644 index 4c38496..0000000 --- a/wicket-devutils/src/main/resources/META-INF/wicket/org.apache.wicket.devutils.properties +++ /dev/null @@ -1,15 +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. -initializer=org.apache.wicket.devutils.debugbar.DebugBarInitializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-experimental/wicket-atmosphere/src/main/resources/META-INF/services/org.apache.wicket.IInitializer ---------------------------------------------------------------------- diff --git a/wicket-experimental/wicket-atmosphere/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-experimental/wicket-atmosphere/src/main/resources/META-INF/services/org.apache.wicket.IInitializer new file mode 100644 index 0000000..69885be --- /dev/null +++ b/wicket-experimental/wicket-atmosphere/src/main/resources/META-INF/services/org.apache.wicket.IInitializer @@ -0,0 +1 @@ +org.apache.wicket.atmosphere.Initializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-experimental/wicket-atmosphere/src/main/resources/META-INF/wicket/org.apache.wicket.atmosphere.properties ---------------------------------------------------------------------- diff --git a/wicket-experimental/wicket-atmosphere/src/main/resources/META-INF/wicket/org.apache.wicket.atmosphere.properties b/wicket-experimental/wicket-atmosphere/src/main/resources/META-INF/wicket/org.apache.wicket.atmosphere.properties deleted file mode 100644 index c07947f..0000000 --- a/wicket-experimental/wicket-atmosphere/src/main/resources/META-INF/wicket/org.apache.wicket.atmosphere.properties +++ /dev/null @@ -1,15 +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. -initializer=org.apache.wicket.atmosphere.Initializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-extensions/src/main/resources/META-INF/services/org.apache.wicket.IInitializer ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-extensions/src/main/resources/META-INF/services/org.apache.wicket.IInitializer new file mode 100644 index 0000000..31d1a35 --- /dev/null +++ b/wicket-extensions/src/main/resources/META-INF/services/org.apache.wicket.IInitializer @@ -0,0 +1 @@ +org.apache.wicket.extensions.Initializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-extensions/src/main/resources/META-INF/wicket/org.apache.wicket.extensions.properties ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/resources/META-INF/wicket/org.apache.wicket.extensions.properties b/wicket-extensions/src/main/resources/META-INF/wicket/org.apache.wicket.extensions.properties deleted file mode 100644 index 7874436..0000000 --- a/wicket-extensions/src/main/resources/META-INF/wicket/org.apache.wicket.extensions.properties +++ /dev/null @@ -1,15 +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. -initializer=org.apache.wicket.extensions.Initializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-jmx/src/main/resources/META-INF/services/org.apache.wicket.IInitializer ---------------------------------------------------------------------- diff --git a/wicket-jmx/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-jmx/src/main/resources/META-INF/services/org.apache.wicket.IInitializer new file mode 100644 index 0000000..b8439d4 --- /dev/null +++ b/wicket-jmx/src/main/resources/META-INF/services/org.apache.wicket.IInitializer @@ -0,0 +1 @@ +org.apache.wicket.jmx.Initializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-jmx/src/main/resources/META-INF/wicket/org.apache.wicket.jmx.properties ---------------------------------------------------------------------- diff --git a/wicket-jmx/src/main/resources/META-INF/wicket/org.apache.wicket.jmx.properties b/wicket-jmx/src/main/resources/META-INF/wicket/org.apache.wicket.jmx.properties deleted file mode 100644 index 534efb7..0000000 --- a/wicket-jmx/src/main/resources/META-INF/wicket/org.apache.wicket.jmx.properties +++ /dev/null @@ -1,15 +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. -initializer=org.apache.wicket.jmx.Initializer \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-velocity/src/main/resources/META-INF/services/org.apache.wicket.IInitializer ---------------------------------------------------------------------- diff --git a/wicket-velocity/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-velocity/src/main/resources/META-INF/services/org.apache.wicket.IInitializer new file mode 100644 index 0000000..da1ab61 --- /dev/null +++ b/wicket-velocity/src/main/resources/META-INF/services/org.apache.wicket.IInitializer @@ -0,0 +1 @@ +org.apache.wicket.velocity.Initializer http://git-wip-us.apache.org/repos/asf/wicket/blob/8ed4f8e0/wicket-velocity/src/main/resources/META-INF/wicket/org.apache.wicket.velocity.properties ---------------------------------------------------------------------- diff --git a/wicket-velocity/src/main/resources/META-INF/wicket/org.apache.wicket.velocity.properties b/wicket-velocity/src/main/resources/META-INF/wicket/org.apache.wicket.velocity.properties deleted file mode 100644 index 0b36808..0000000 --- a/wicket-velocity/src/main/resources/META-INF/wicket/org.apache.wicket.velocity.properties +++ /dev/null @@ -1,15 +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. -initializer=org.apache.wicket.velocity.Initializer