ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/tomcat/util/digester/ObjectCreateRule.java

Path
ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/tomcat/util/digester/ObjectCreateRule.java
Status
scanned
Type
file
Name
ObjectCreateRule.java
Extension
.java
Programming language
Java
Mime type
text/plain
File type
ASCII text, with CRLF line terminators
Tag

      
    
Rootfs path

      
    
Size
5307 (5.2 KB)
MD5
e8633a43d2c542f900ebf03d049bbfab
SHA1
f3cd5b1fcb03ef09d3a003aebe74021518fab045
SHA256
1cddc0fb389fa3b35d467a2f929713fda69fa22461a4e52d054bde62ad5e964a
SHA512

      
    
SHA1_git
9aa720941c2df4421cdcc3410e2e49ca025560dd
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
ObjectCreateRule.java | 5.2 KB |

/* * 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.tomcat.util.digester; import org.xml.sax.Attributes; /** * Rule implementation that creates a new object and pushes it onto the object stack. When the element is complete, the * object will be popped */ public class ObjectCreateRule extends Rule { // ----------------------------------------------------------- Constructors /** * Construct an object create rule with the specified class name. * * @param className Java class name of the object to be created */ public ObjectCreateRule(String className) { this(className, null); } /** * Construct an object create rule with the specified class name and an optional attribute name containing an * override. * * @param className Java class name of the object to be created * @param attributeName Attribute name which, if present, contains an override of the class name to create */ public ObjectCreateRule(String className, String attributeName) { this.className = className; this.attributeName = attributeName; } // ----------------------------------------------------- Instance Variables /** * The attribute containing an override class name if it is present. */ protected String attributeName; /** * The Java class name of the object to be created. */ protected String className; // --------------------------------------------------------- Public Methods /** * Process the beginning of this element. * * @param namespace the namespace URI of the matching element, or an empty string if the parser is not namespace * aware or the element has no namespace * @param name the local name if the parser is namespace aware, or just the element name otherwise * @param attributes The attribute list for this element */ @Override public void begin(String namespace, String name, Attributes attributes) throws Exception { String realClassName = getRealClassName(attributes); if (realClassName == null) { throw new NullPointerException(sm.getString("rule.noClassName", namespace, name)); } // Instantiate the new object and push it on the context stack Class<?> clazz = digester.getClassLoader().loadClass(realClassName); Object instance = clazz.getConstructor().newInstance(); digester.push(instance); StringBuilder code = digester.getGeneratedCode(); if (code != null) { code.append(System.lineSeparator()); code.append(System.lineSeparator()); code.append(realClassName).append(' ').append(digester.toVariableName(instance)).append(" = new "); code.append(realClassName).append("();").append(System.lineSeparator()); } } /** * Return the actual class name of the class to be instantiated. * * @param attributes The attribute list for this element * * @return the class name */ protected String getRealClassName(Attributes attributes) { // Identify the name of the class to instantiate String realClassName = className; if (attributeName != null) { String value = attributes.getValue(attributeName); if (value != null) { realClassName = value; } } return realClassName; } /** * Process the end of this element. * * @param namespace the namespace URI of the matching element, or an empty string if the parser is not namespace * aware or the element has no namespace * @param name the local name if the parser is namespace aware, or just the element name otherwise */ @Override public void end(String namespace, String name) throws Exception { Object top = digester.pop(); if (digester.log.isTraceEnabled()) { digester.log.trace("[ObjectCreateRule]{" + digester.match + "} Pop " + top.getClass().getName()); } } /** * Render a printable version of this Rule. */ @Override public String toString() { return "ObjectCreateRule[" + "className=" + className + ", attributeName=" + attributeName + ']'; } }
Detected license expression
apache-2.0
Detected license expression (SPDX)
Apache-2.0
Percentage of license text
21.6
Copyrights

      
    
Holders

      
    
Authors

      
    
License detections License expression License expression SPDX
apache_2_0-4bde3f57-78aa-4201-96bf-531cba09e7de apache-2.0 Apache-2.0
URL Start line End line
http://www.apache.org/licenses/LICENSE-2.0 9 9