> 2022年8月4日 01:31,[email protected] 写道:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> schultz pushed a commit to branch main
> in repository https://gitbox.apache.org/repos/asf/tomcat.git
>
>
> The following commit(s) were added to refs/heads/main by this push:
> new 9adbac09bc Move logic to export MemoryUserDatabase to XML to be
> completely inside MemoryUserDatabase.save().
> 9adbac09bc is described below
>
> commit 9adbac09bc30e150ddfa6f0303c1b42e0b3160e9
> Author: Christopher Schultz <[email protected]>
> AuthorDate: Wed Aug 3 13:30:18 2022 -0400
>
> Move logic to export MemoryUserDatabase to XML to be completely inside
> MemoryUserDatabase.save().
>
> Also deprecated and discontinue usage of MemoryUSer, MemoryRole, and
> MemoryGroup classes.
> ---
> java/org/apache/catalina/users/MemoryGroup.java | 2 +
> java/org/apache/catalina/users/MemoryRole.java | 2 +
> java/org/apache/catalina/users/MemoryUser.java | 2 +
> .../apache/catalina/users/MemoryUserDatabase.java | 72 +++++++++++++++++++---
> webapps/docs/changelog.xml | 6 +-
> 5 files changed, 73 insertions(+), 11 deletions(-)
>
> diff --git a/java/org/apache/catalina/users/MemoryGroup.java
> b/java/org/apache/catalina/users/MemoryGroup.java
> index dfd02c4dcf..9de5b959f9 100644
> --- a/java/org/apache/catalina/users/MemoryGroup.java
> +++ b/java/org/apache/catalina/users/MemoryGroup.java
> @@ -28,7 +28,9 @@ import org.apache.tomcat.util.security.Escape;
> *
> * @author Craig R. McClanahan
> * @since 4.1
> + * @deprecated Use {@link GenericGroup} instead.
> */
> +@Deprecated
> public class MemoryGroup extends GenericGroup<MemoryUserDatabase> {
>
>
> diff --git a/java/org/apache/catalina/users/MemoryRole.java
> b/java/org/apache/catalina/users/MemoryRole.java
> index 3f0f5855c7..08f6cec0bf 100644
> --- a/java/org/apache/catalina/users/MemoryRole.java
> +++ b/java/org/apache/catalina/users/MemoryRole.java
> @@ -26,7 +26,9 @@ import org.apache.tomcat.util.security.Escape;
> *
> * @author Craig R. McClanahan
> * @since 4.1
> + * @deprecated Use {@link GenericRole} instead.
> */
> +@Deprecated
> public class MemoryRole extends GenericRole<MemoryUserDatabase> {
>
>
> diff --git a/java/org/apache/catalina/users/MemoryUser.java
> b/java/org/apache/catalina/users/MemoryUser.java
> index f271fb2b3f..4d241fe6f5 100644
> --- a/java/org/apache/catalina/users/MemoryUser.java
> +++ b/java/org/apache/catalina/users/MemoryUser.java
> @@ -27,7 +27,9 @@ import org.apache.tomcat.util.security.Escape;
> *
> * @author Craig R. McClanahan
> * @since 4.1
> + * @deprecated Use {@link GenericUser} instead.
> */
> +@Deprecated
> public class MemoryUser extends GenericUser<MemoryUserDatabase> {
>
>
> diff --git a/java/org/apache/catalina/users/MemoryUserDatabase.java
> b/java/org/apache/catalina/users/MemoryUserDatabase.java
> index f8bad5cb6f..b0aff0fdf8 100644
> --- a/java/org/apache/catalina/users/MemoryUserDatabase.java
> +++ b/java/org/apache/catalina/users/MemoryUserDatabase.java
> @@ -45,6 +45,7 @@ import org.apache.tomcat.util.digester.Digester;
> import org.apache.tomcat.util.file.ConfigFileLoader;
> import org.apache.tomcat.util.file.ConfigurationSource;
> import org.apache.tomcat.util.res.StringManager;
> +import org.apache.tomcat.util.security.Escape;
> import org.xml.sax.Attributes;
>
> /**
> @@ -295,7 +296,7 @@ public class MemoryUserDatabase implements UserDatabase {
> throw new IllegalArgumentException(msg);
> }
>
> - MemoryGroup group = new MemoryGroup(this, groupname, description);
> + Group group = new GenericGroup(this, groupname, description, null);
> readLock.lock();
> try {
> groups.put(group.getGroupname(), group);
> @@ -320,7 +321,7 @@ public class MemoryUserDatabase implements UserDatabase {
> throw new IllegalArgumentException(msg);
> }
>
> - MemoryRole role = new MemoryRole(this, rolename, description);
> + Role role = new GenericRole(this, rolename, description);
> readLock.lock();
> try {
> roles.put(role.getRolename(), role);
> @@ -347,7 +348,7 @@ public class MemoryUserDatabase implements UserDatabase {
> throw new IllegalArgumentException(msg);
> }
>
> - MemoryUser user = new MemoryUser(this, username, password, fullName);
> + User user = new GenericUser(this, username, password, fullName,
> null, null);
> readLock.lock();
> try {
> users.put(user.getUsername(), user);
> @@ -582,19 +583,70 @@ public class MemoryUserDatabase implements UserDatabase
> {
> // Print entries for each defined role, group, and user
> Iterator<?> values = null;
> values = getRoles();
> - while (values.hasNext()) {
> - writer.print(" ");
> - writer.println(values.next());
> + while(values.hasNext()) {
> + Role role = (Role)values.next();
> + writer.print(" <role rolename=\"");
> + writer.print(Escape.xml(role.getRolename()));
> + writer.print("\"");
> + if(null != role.getDescription()) {
> + writer.print(" description=\"");
> + writer.print(Escape.xml(role.getDescription()));
> + writer.print("\"");
> + }
> + writer.println("/>");
> }
> values = getGroups();
> while (values.hasNext()) {
> - writer.print(" ");
> - writer.println(values.next());
> + Group group = (Group)values.next();
> + writer.print(" <group groupname=\"");
> + writer.print(Escape.xml(group.getName()));
> + writer.print("\"");
> + if(null != group.getDescription()) {
> + writer.print(" description=\"");
> + writer.print(Escape.xml(group.getDescription()));
> + writer.print("\"");
> + }
> + writer.print(" roles=\"");
> + for(Iterator<Role> roles=group.getRoles();
> roles.hasNext(); ) {
> + Role role = roles.next();
> + writer.print(Escape.xml(role.getRolename()));
> + if(roles.hasNext()) {
> + writer.print(',');
> + }
> + }
> + writer.println("\"/>");
> }
> +
> values = getUsers();
> while (values.hasNext()) {
> - writer.print(" ");
> - writer.println(((MemoryUser) values.next()).toXml());
> + User user = (User)values.next();
> + writer.print(" <user username=\"");
> + writer.print(Escape.xml(user.getUsername()));
> + writer.print("\" password=\"");
> + writer.print(Escape.xml(user.getPassword()));
> + writer.print("\"");
> + if(null != user.getFullName()) {
> + writer.print(" fullName=\"");
> + writer.print(Escape.xml(user.getFullName()));
> + writer.print("\"");
> + }
> + writer.print(" groups=\"");
> + for(Iterator<Group> groups=user.getGroups();
> groups.hasNext(); ) {
> + Group group = groups.next();
> + writer.print(Escape.xml(group.getGroupname()));
> + if(groups.hasNext()) {
> + writer.print(',');
> + }
> + }
> + writer.print("\" roles=\"");
> + for(Iterator<Role> roles=user.getRoles();
> roles.hasNext(); ) {
> + Role role = roles.next();
> + writer.print(Escape.xml(role.getRolename()));
> + if(roles.hasNext()) {
> + writer.print(',');
> + }
> + }
> + writer.print("\"/>");
> }
>
> // Print the file epilog
> diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
> index 6a4cf674d0..ad63870d7c 100644
> --- a/webapps/docs/changelog.xml
> +++ b/webapps/docs/changelog.xml
> @@ -120,9 +120,13 @@
> specifiers are case insensitive. (markt)
> </fix>
> <fix>
> - Propertly-escape role and group information when writing
> + Properly-escape role and group information when writing
> MemoryUserDatabase to an XML file. (schultz)
> </fix>
> + <fix>
> + Move control of XML-export logic from individual support classes into
> + MemoryUserDatabase.save(). Deprecate and discontinue use of
> MemoryUser,
> + MemoryRole, and MemoryGroup classes. (schultz)
Missing a </fix> tag.
Han.
> </changelog>
> </subsection>
> <subsection name="Coyote">
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]