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