Author: markt
Date: Mon Nov 20 18:13:15 2017
New Revision: 1815826
URL: http://svn.apache.org/viewvc?rev=1815826&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=61781
Enable JASPIC provider registrations to be persisted when the layer and/or
application context are null.
Patch provided by Lazar.
This closes #89
Added:
tomcat/trunk/test/conf/jaspic-test-04.xml (with props)
Modified:
tomcat/trunk/conf/jaspic-providers.xsd
tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/PersistentProviderRegistrations.java
tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestPersistentProviderRegistrations.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/conf/jaspic-providers.xsd
URL:
http://svn.apache.org/viewvc/tomcat/trunk/conf/jaspic-providers.xsd?rev=1815826&r1=1815825&r2=1815826&view=diff
==============================================================================
--- tomcat/trunk/conf/jaspic-providers.xsd (original)
+++ tomcat/trunk/conf/jaspic-providers.xsd Mon Nov 20 18:13:15 2017
@@ -36,8 +36,8 @@
</xs:element>
</xs:sequence>
<xs:attribute name="className" use="required" type="xs:string" />
- <xs:attribute name="layer" use="required" type="xs:string" />
- <xs:attribute name="appContext" use="required" type="xs:string" />
+ <xs:attribute name="layer" type="xs:string" />
+ <xs:attribute name="appContext" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
</xs:complexType>
</xs:element>
Modified:
tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/PersistentProviderRegistrations.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/PersistentProviderRegistrations.java?rev=1815826&r1=1815825&r2=1815826&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/PersistentProviderRegistrations.java
(original)
+++
tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/PersistentProviderRegistrations.java
Mon Nov 20 18:13:15 2017
@@ -123,14 +123,9 @@ final class PersistentProviderRegistrati
for (Provider provider : providers.providers) {
writer.write(" <provider className=\"");
writer.write(provider.getClassName());
- writer.write("\" layer=\"");
- writer.write(provider.getLayer());
- writer.write("\" appContext=\"");
- writer.write(provider.getAppContext());
- if (provider.getDescription() != null) {
- writer.write("\" description=\"");
- writer.write(provider.getDescription());
- }
+ writeOptional("layer", provider.getLayer(), writer);
+ writeOptional("appContext", provider.getAppContext(), writer);
+ writeOptional("description", provider.getDescription(),
writer);
writer.write("\">\n");
for (Entry<String,String> entry :
provider.getProperties().entrySet()) {
writer.write(" <property name=\"");
@@ -171,6 +166,14 @@ final class PersistentProviderRegistrati
}
}
+
+ private static void writeOptional(String name, String value, Writer
writer) throws IOException {
+ if (value != null) {
+ writer.write("\" " + name + "=\"");
+ writer.write(value);
+ }
+ }
+
public static class Providers {
private final List<Provider> providers = new ArrayList<>();
Added: tomcat/trunk/test/conf/jaspic-test-04.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/conf/jaspic-test-04.xml?rev=1815826&view=auto
==============================================================================
--- tomcat/trunk/test/conf/jaspic-test-04.xml (added)
+++ tomcat/trunk/test/conf/jaspic-test-04.xml Mon Nov 20 18:13:15 2017
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<jaspic-providers xmlns="http://tomcat.apache.org/xml"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://tomcat.apache.org/xml
jaspic-providers.xsd"
+ version="1.0">
+ <provider className="a" description="d"/>
+</jaspic-providers>
\ No newline at end of file
Propchange: tomcat/trunk/test/conf/jaspic-test-04.xml
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestPersistentProviderRegistrations.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestPersistentProviderRegistrations.java?rev=1815826&r1=1815825&r2=1815826&view=diff
==============================================================================
---
tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestPersistentProviderRegistrations.java
(original)
+++
tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestPersistentProviderRegistrations.java
Mon Nov 20 18:13:15 2017
@@ -84,4 +84,50 @@ public class TestPersistentProviderRegis
Assert.assertTrue("Failed to clean up [" + f + "]", f.delete());
}
}
+
+
+ @Test
+ public void testLoadProviderWithoutLayerAndAC() {
+ File f = new File("test/conf/jaspic-test-04.xml");
+ Providers providers = PersistentProviderRegistrations.loadProviders(f);
+ validateNoLayerAndAC(providers);
+ }
+
+
+ private void validateNoLayerAndAC(Providers providers) {
+ Assert.assertEquals(1, providers.getProviders().size());
+ Provider p = providers.getProviders().get(0);
+ Assert.assertEquals("a", p.getClassName());
+ Assert.assertNull(p.getLayer());
+ Assert.assertNull(p.getAppContext());
+ Assert.assertEquals("d", p.getDescription());
+ }
+
+
+ @Test
+ public void testSaveProviderWithoutLayerAndAC() {
+ File f = new File("test/conf/jaspic-test-05.xml");
+ if (f.exists()) {
+ Assert.assertTrue(f.delete());
+ }
+
+ // Create a config and write it out
+ Providers initialProviders = new Providers();
+ Provider p = new Provider();
+ p.setClassName("a");
+ p.setDescription("d");
+ initialProviders.addProvider(p);
+ PersistentProviderRegistrations.writeProviders(initialProviders, f);
+
+ // Read it back
+ Providers loadedProviders =
PersistentProviderRegistrations.loadProviders(f);
+
+ try {
+ validateNoLayerAndAC(loadedProviders);
+ } finally {
+ if (f.exists()) {
+ f.delete();
+ }
+ }
+ }
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1815826&r1=1815825&r2=1815826&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Mon Nov 20 18:13:15 2017
@@ -104,6 +104,11 @@
<code>RegistrationContext</code> has been registered using the default
registration ID. Patch provided by Lazar. (markt)
</fix>
+ <fix>
+ <bug>61781</bug>: Enable JASPIC provider registrations to be persisted
+ when the layer and/or application context are <code>null</code>. Patch
+ provided by Lazar. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]