Author: remm
Date: Mon Nov 17 16:44:24 2014
New Revision: 1640186

URL: http://svn.apache.org/r1640186
Log:
Add CredentialHandler support to storeconfig.

Added:
    tomcat/trunk/java/org/apache/catalina/storeconfig/CredentialHandlerSF.java
Modified:
    tomcat/trunk/java/org/apache/catalina/realm/NestedCredentialHandler.java
    tomcat/trunk/java/org/apache/catalina/storeconfig/RealmSF.java
    tomcat/trunk/java/org/apache/catalina/storeconfig/server-registry.xml

Modified: 
tomcat/trunk/java/org/apache/catalina/realm/NestedCredentialHandler.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/NestedCredentialHandler.java?rev=1640186&r1=1640185&r2=1640186&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/realm/NestedCredentialHandler.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/realm/NestedCredentialHandler.java 
Mon Nov 17 16:44:24 2014
@@ -57,4 +57,9 @@ public class NestedCredentialHandler imp
     public void addCredentialHandler(CredentialHandler handler) {
         credentialHandlers.add(handler);
     }
+
+    public CredentialHandler[] getCredentialHandlers() {
+        return credentialHandlers.toArray(new CredentialHandler[0]);
+    }
+
 }

Added: 
tomcat/trunk/java/org/apache/catalina/storeconfig/CredentialHandlerSF.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/storeconfig/CredentialHandlerSF.java?rev=1640186&view=auto
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/storeconfig/CredentialHandlerSF.java 
(added)
+++ tomcat/trunk/java/org/apache/catalina/storeconfig/CredentialHandlerSF.java 
Mon Nov 17 16:44:24 2014
@@ -0,0 +1,86 @@
+/*
+ * 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.catalina.storeconfig;
+
+import java.io.PrintWriter;
+
+import org.apache.catalina.CredentialHandler;
+import org.apache.catalina.realm.NestedCredentialHandler;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+
+/**
+ * Store server.xml Element CredentialHandler
+ */
+public class CredentialHandlerSF extends StoreFactoryBase {
+
+    private static Log log = LogFactory.getLog(CredentialHandlerSF.class);
+
+    @Override
+    public void store(PrintWriter aWriter, int indent, Object aElement)
+            throws Exception {
+        if (aElement instanceof NestedCredentialHandler) {
+            StoreDescription elementDesc = getRegistry().findDescription(
+                    aElement.getClass());
+
+            if (elementDesc != null) {
+                if (log.isDebugEnabled())
+                    log.debug(sm.getString("factory.storeTag",
+                            elementDesc.getTag(), aElement));
+                getStoreAppender().printIndent(aWriter, indent + 2);
+                getStoreAppender().printOpenTag(aWriter, indent + 2, aElement,
+                            elementDesc);
+                storeChildren(aWriter, indent + 2, aElement, elementDesc);
+                getStoreAppender().printIndent(aWriter, indent + 2);
+                getStoreAppender().printCloseTag(aWriter, elementDesc);
+            } else {
+                if (log.isWarnEnabled())
+                    log.warn(sm.getString("factory.storeNoDescriptor",
+                            aElement.getClass()));
+            }
+        } else {
+            super.store(aWriter, indent, aElement);
+        }
+    }
+
+    /**
+     * Store the specified Realm properties and child (Realm)
+     *
+     * @param aWriter
+     *            PrintWriter to which we are storing
+     * @param indent
+     *            Number of spaces to indent this element
+     * @param aRealm
+     *            Realm whose properties are being stored
+     *
+     * @exception Exception
+     *                if an exception occurs while storing
+     */
+    @Override
+    public void storeChildren(PrintWriter aWriter, int indent, Object aRealm,
+            StoreDescription parentDesc) throws Exception {
+        if (aRealm instanceof NestedCredentialHandler) {
+            NestedCredentialHandler nestedCredentialHandler = 
(NestedCredentialHandler) aRealm;
+
+            // Store nested <CredentialHandler> element
+            CredentialHandler[] credentialHandlers = 
nestedCredentialHandler.getCredentialHandlers();
+            storeElementArray(aWriter, indent, credentialHandlers);
+        }
+    }
+
+}
\ No newline at end of file

Modified: tomcat/trunk/java/org/apache/catalina/storeconfig/RealmSF.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/storeconfig/RealmSF.java?rev=1640186&r1=1640185&r2=1640186&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/storeconfig/RealmSF.java (original)
+++ tomcat/trunk/java/org/apache/catalina/storeconfig/RealmSF.java Mon Nov 17 
16:44:24 2014
@@ -19,6 +19,7 @@ package org.apache.catalina.storeconfig;
 
 import java.io.PrintWriter;
 
+import org.apache.catalina.CredentialHandler;
 import org.apache.catalina.Realm;
 import org.apache.catalina.realm.CombinedRealm;
 import org.apache.juli.logging.Log;
@@ -81,6 +82,11 @@ public class RealmSF extends StoreFactor
             Realm[] realms = combinedRealm.getNestedRealms();
             storeElementArray(aWriter, indent, realms);
         }
+        // Store nested <CredentialHandler> element
+        CredentialHandler credentialHandler = ((Realm) 
aRealm).getCredentialHandler();
+        if (credentialHandler != null) {
+            storeElement(aWriter, indent, credentialHandler);
+        }
     }
 
 }
\ No newline at end of file

Modified: tomcat/trunk/java/org/apache/catalina/storeconfig/server-registry.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/storeconfig/server-registry.xml?rev=1640186&r1=1640185&r2=1640186&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/storeconfig/server-registry.xml 
(original)
+++ tomcat/trunk/java/org/apache/catalina/storeconfig/server-registry.xml Mon 
Nov 17 16:44:24 2014
@@ -158,13 +158,21 @@
         tag="Realm"
         standard="false"
         default="false"
-        children="false"
+        children="true"
         tagClass="org.apache.catalina.Realm"
         storeFactoryClass="org.apache.catalina.storeconfig.RealmSF">
         <TransientAttribute>domain</TransientAttribute>
         <TransientAttribute>realmPath</TransientAttribute>
      </Description>
      <Description
+        tag="CredentialHandler"
+        standard="false"
+        default="false"
+        children="false"
+        tagClass="org.apache.catalina.CredentialHandler"
+        
storeFactoryClass="org.apache.catalina.storeconfig.CredentialHandlerSF">
+     </Description>
+     <Description
         tag="Parameter"
         standard="true"
         default="false"



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to