Added: 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/StoreRegistry.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/StoreRegistry.java?rev=1399731&view=auto
==============================================================================
--- 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/StoreRegistry.java
 (added)
+++ 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/StoreRegistry.java
 Thu Oct 18 16:37:42 2012
@@ -0,0 +1,203 @@
+/*
+ * 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.util.HashMap;
+import java.util.Map;
+
+import javax.naming.directory.DirContext;
+
+import org.apache.catalina.LifecycleListener;
+import org.apache.catalina.Manager;
+import org.apache.catalina.Realm;
+import org.apache.catalina.Valve;
+import org.apache.catalina.ha.CatalinaCluster;
+import org.apache.catalina.ha.ClusterDeployer;
+import org.apache.catalina.tribes.ChannelReceiver;
+import org.apache.catalina.tribes.ChannelSender;
+import org.apache.catalina.tribes.MembershipService;
+import org.apache.catalina.tribes.MessageListener;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+
+/**
+ * Central StoreRegistry for all server.xml elements
+ * 
+ * @author Peter Rossbach
+ *  
+ */
+public class StoreRegistry {
+    private static Log log = LogFactory.getLog(StoreRegistry.class);
+
+    private Map descriptors = new HashMap();
+
+    private String encoding = "UTF-8";
+
+    private String name;
+
+    private String version;
+
+    // Access Information
+    private static Class interfaces[] = { CatalinaCluster.class,
+            ChannelSender.class, ChannelReceiver.class,
+            MembershipService.class, ClusterDeployer.class, Realm.class,
+            Manager.class, DirContext.class, LifecycleListener.class,
+            Valve.class, MessageListener.class };
+
+    /**
+     * @return Returns the name.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @param name
+     *            The name to set.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @return Returns the version.
+     */
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * @param version
+     *            The version to set.
+     */
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    /**
+     * Find a description for id. Handle interface search when no direct match
+     * found.
+     * 
+     * @param id
+     * @return The description
+     */
+    public StoreDescription findDescription(String id) {
+        if (log.isDebugEnabled())
+            log.debug("search descriptor " + id);
+        StoreDescription desc = (StoreDescription) descriptors.get(id);
+        if (desc == null) {
+            Class aClass = null;
+            try {
+                aClass = Class.forName(id, true, this.getClass()
+                        .getClassLoader());
+            } catch (ClassNotFoundException e) {
+                log.error("ClassName:" + id, e);
+            }
+            if (aClass != null) {
+                desc = (StoreDescription) descriptors.get(aClass.getName());
+                for (int i = 0; desc == null && i < interfaces.length; i++) {
+                    if (interfaces[i].isAssignableFrom(aClass)) {
+                        desc = (StoreDescription) descriptors.get(interfaces[i]
+                                .getName());
+                    }
+                }
+            }
+        }
+        if (log.isDebugEnabled())
+            if (desc != null)
+                log.debug("find descriptor " + id + "#" + desc.getTag() + "#"
+                        + desc.getStoreFactoryClass());
+            else
+                log.debug(("Can't find descriptor for key " + id));
+        return desc;
+    }
+
+    /**
+     * Find Description by class
+     * 
+     * @param aClass
+     * @return The description
+     */
+    public StoreDescription findDescription(Class aClass) {
+        return findDescription(aClass.getName());
+    }
+
+    /**
+     * Find factory from classname
+     * 
+     * @param aClassName
+     * @return The factory
+     */
+    public IStoreFactory findStoreFactory(String aClassName) {
+        StoreDescription desc = findDescription(aClassName);
+        if (desc != null)
+            return desc.getStoreFactory();
+        else
+            return null;
+
+    }
+
+    /**
+     * find factory from class
+     * 
+     * @param aClass
+     * @return The factory
+     */
+    public IStoreFactory findStoreFactory(Class aClass) {
+        return findStoreFactory(aClass.getName());
+    }
+
+    /**
+     * Register a new description
+     * 
+     * @param desc
+     */
+    public void registerDescription(StoreDescription desc) {
+        String key = desc.getId();
+        if (key == null || "".equals(key))
+            key = desc.getTagClass();
+        descriptors.put(key, desc);
+        if (log.isDebugEnabled())
+            log.debug("register store descriptor " + key + "#" + desc.getTag()
+                    + "#" + desc.getTagClass());
+    }
+
+    public StoreDescription unregisterDescription(StoreDescription desc) {
+        String key = desc.getId();
+        if (key == null || "".equals(key))
+            key = desc.getTagClass();
+        return (StoreDescription) descriptors.remove(key);
+    }
+
+    // Attributes
+
+    /**
+     * @return The encoding
+     */
+    public String getEncoding() {
+        return encoding;
+    }
+
+    /**
+     * @param string
+     */
+    public void setEncoding(String string) {
+        encoding = string;
+    }
+
+}

Added: 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WatchedResourceSF.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WatchedResourceSF.java?rev=1399731&view=auto
==============================================================================
--- 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WatchedResourceSF.java
 (added)
+++ 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WatchedResourceSF.java
 Thu Oct 18 16:37:42 2012
@@ -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.catalina.storeconfig;
+
+import java.io.PrintWriter;
+
+import org.apache.catalina.core.StandardContext;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+
+/**
+ * @author Peter Rossbach
+ *  
+ */
+public class WatchedResourceSF extends StoreFactoryBase {
+    private static Log log = LogFactory.getLog(WatchedResourceSF.class);
+
+    /*
+     * Store nested Element Value Arrays WatchedResource
+     * 
+     * @see org.apache.catalina.config.IStoreFactory#store(java.io.PrintWriter,
+     *      int, java.lang.Object)
+     */
+    public void store(PrintWriter aWriter, int indent, Object aElement)
+            throws Exception {
+        if (aElement instanceof StandardContext) {
+            StoreDescription elementDesc = getRegistry().findDescription(
+                    aElement.getClass().getName() + ".[WatchedResource]");
+            String[] resources = ((StandardContext) aElement)
+                    .findWatchedResources();
+            if (elementDesc != null) {
+                if (log.isDebugEnabled())
+                    log.debug("store " + elementDesc.getTag() + "( " + aElement
+                            + " )");
+                getStoreAppender().printTagArray(aWriter, "WatchedResource",
+                        indent, resources);
+            }
+        } else
+            log.warn("Descriptor for element" + aElement.getClass()
+                    + ".[WatchedResource] not configured!");
+    }
+}
\ No newline at end of file

Added: 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WrapperLifecycleSF.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WrapperLifecycleSF.java?rev=1399731&view=auto
==============================================================================
--- 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WrapperLifecycleSF.java
 (added)
+++ 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WrapperLifecycleSF.java
 Thu Oct 18 16:37:42 2012
@@ -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.catalina.storeconfig;
+
+import java.io.PrintWriter;
+
+import org.apache.catalina.core.StandardContext;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+
+/**
+ * @author Peter Rossbach
+ *  
+ */
+public class WrapperLifecycleSF extends StoreFactoryBase {
+    private static Log log = LogFactory.getLog(WrapperLifecycleSF.class);
+
+    /*
+     * Store nested Element Value Arrays
+     * 
+     * @see org.apache.catalina.config.IStoreFactory#store(java.io.PrintWriter,
+     *      int, java.lang.Object)
+     */
+    public void store(PrintWriter aWriter, int indent, Object aElement)
+            throws Exception {
+        if (aElement instanceof StandardContext) {
+            StoreDescription elementDesc = getRegistry().findDescription(
+                    aElement.getClass().getName() + ".[WrapperLifecycle]");
+            String[] listeners = ((StandardContext) aElement)
+                    .findWrapperLifecycles();
+            if (elementDesc != null) {
+                if (log.isDebugEnabled())
+                    log.debug("store " + elementDesc.getTag() + "( " + aElement
+                            + " )");
+                getStoreAppender().printTagArray(aWriter, "WrapperLifecycle",
+                        indent, listeners);
+            }
+        } else
+            log.warn("Descriptor for element" + aElement.getClass()
+                    + ".[WrapperLifecycle] not configured!");
+    }
+}
\ No newline at end of file

Added: 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WrapperListenerSF.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WrapperListenerSF.java?rev=1399731&view=auto
==============================================================================
--- 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WrapperListenerSF.java
 (added)
+++ 
tomcat/sandbox/storeconfig6/src/main/java/org/apache/catalina/storeconfig/WrapperListenerSF.java
 Thu Oct 18 16:37:42 2012
@@ -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.catalina.storeconfig;
+
+import java.io.PrintWriter;
+
+import org.apache.catalina.core.StandardContext;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+
+/**
+ * @author Peter Rossbach (p...@apache.org)
+ *  
+ */
+public class WrapperListenerSF extends StoreFactoryBase {
+    private static Log log = LogFactory.getLog(WrapperListenerSF.class);
+
+    /*
+     * Store nested Element Value Arrays
+     * 
+     * @see org.apache.catalina.config.IStoreFactory#store(java.io.PrintWriter,
+     *      int, java.lang.Object)
+     */
+    public void store(PrintWriter aWriter, int indent, Object aElement)
+            throws Exception {
+        if (aElement instanceof StandardContext) {
+            StoreDescription elementDesc = getRegistry().findDescription(
+                    aElement.getClass().getName() + ".[WrapperListener]");
+            String[] listeners = ((StandardContext) aElement)
+                    .findWrapperListeners();
+            if (elementDesc != null) {
+                if (log.isDebugEnabled())
+                    log.debug("store " + elementDesc.getTag() + "( " + aElement
+                            + " )");
+                getStoreAppender().printTagArray(aWriter, "WrapperListener",
+                        indent, listeners);
+            }
+        } else
+            log.warn("Descriptor for element" + aElement.getClass()
+                    + ".[WrapperListener] not configured!");
+    }
+}
\ No newline at end of file

Added: 
tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/LocalStrings.properties?rev=1399731&view=auto
==============================================================================
--- 
tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/LocalStrings.properties
 (added)
+++ 
tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/LocalStrings.properties
 Thu Oct 18 16:37:42 2012
@@ -0,0 +1,17 @@
+# 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.
+
+factory.storeTag=store tag {0} ( Object: {1} )
+factory.storeNoDescriptor=Descriptor for element class {0} not configured!

Added: 
tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/mbeans-descriptors.xml
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/mbeans-descriptors.xml?rev=1399731&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/mbeans-descriptors.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: 
tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml?rev=1399731&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
tomcat/sandbox/storeconfig6/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml



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

Reply via email to