This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch fix/permission in repository https://gitbox.apache.org/repos/asf/struts-examples.git
commit 572c5202bfa0563c63ce346c67f92cbdf54ebd84 Author: Lukasz Lenart <lukaszlen...@apache.org> AuthorDate: Thu Mar 6 11:02:13 2025 +0100 Adjusts config to be compatible with Struts 7 stronger security --- .../org/apache/struts/edit/action/EditAction.java | 90 +++++++------- .../java/org/apache/struts/edit/model/Person.java | 134 ++++++++++----------- .../java/org/apache/struts/edit/model/State.java | 58 ++++----- .../apache/struts/edit/service/EditService.java | 4 +- .../struts/edit/service/EditServiceInMemory.java | 67 +++++------ control-tags/src/main/resources/struts.xml | 1 + 6 files changed, 166 insertions(+), 188 deletions(-) diff --git a/control-tags/src/main/java/org/apache/struts/edit/action/EditAction.java b/control-tags/src/main/java/org/apache/struts/edit/action/EditAction.java index 1e527b7..c3235a0 100755 --- a/control-tags/src/main/java/org/apache/struts/edit/action/EditAction.java +++ b/control-tags/src/main/java/org/apache/struts/edit/action/EditAction.java @@ -5,74 +5,66 @@ import org.apache.struts.edit.model.State; import org.apache.struts.edit.service.EditService; import org.apache.struts.edit.service.EditServiceInMemory; import org.apache.struts2.ActionSupport; +import org.apache.struts2.interceptor.parameter.StrutsParameter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** - * Acts as a controller to handle actions - * related to editing a Person. - * @author bruce phillips - * + * Acts as a controller to handle actions related to editing a Person. */ public class EditAction extends ActionSupport { - private static final long serialVersionUID = 1L; + private EditService editService = new EditServiceInMemory(); - private EditService editService = new EditServiceInMemory(); + private Person personBean; + private String[] sports = {"football", "baseball", "basketball"}; + private String[] genders = {"male", "female", "not sure"}; + private List<State> states; + private String[] carModelsAvailable = {"Ford", "Chrysler", "Toyota", "Nissan"}; - private Person personBean; - private String [] sports = {"football", "baseball", "basketball" }; - private String [] genders = {"male", "female", "not sure" }; - private List<State> states ; - private String [] carModelsAvailable = {"Ford","Chrysler","Toyota","Nissan"}; + public String save() throws Exception { + editService.savePerson(getPersonBean()); - public String save() throws Exception { - editService.savePerson( getPersonBean() ); + return SUCCESS; + } - return SUCCESS; - } + public String input() throws Exception { + setPersonBean(editService.getPerson()); - public String input() throws Exception { - setPersonBean( editService.getPerson() ); + return INPUT; + } - return INPUT; - } + @StrutsParameter(depth = 2) + public Person getPersonBean() { + return personBean; + } - public Person getPersonBean() { - return personBean; - } + public void setPersonBean(Person person) { + personBean = person; + } - public void setPersonBean(Person person) { - personBean = person; - } + public List<String> getSports() { + return Arrays.asList(sports); + } - public List<String> getSports() { - return Arrays.asList(sports); - } + public List<String> getGenders() { + return Arrays.asList(genders); + } - public List<String> getGenders() { - return Arrays.asList(genders); - } + public List<State> getStates() { + states = new ArrayList<>(); + states.add(new State("AZ", "Arizona")); + states.add(new State("CA", "California")); + states.add(new State("FL", "Florida")); + states.add(new State("KS", "Kansas")); + states.add(new State("NY", "New York")); + return states; + } - - public List<State> getStates() { - - states = new ArrayList<>(); - states.add( new State("AZ", "Arizona") ); - states.add( new State("CA", "California") ); - states.add( new State("FL", "Florida") ); - states.add( new State("KS", "Kansas") ); - states.add( new State("NY", "New York") ); - - return states; - } - - - - public String [] getCarModelsAvailable() { - return carModelsAvailable; - } + public String[] getCarModelsAvailable() { + return carModelsAvailable; + } } diff --git a/control-tags/src/main/java/org/apache/struts/edit/model/Person.java b/control-tags/src/main/java/org/apache/struts/edit/model/Person.java index ec80aaf..3bc12e7 100755 --- a/control-tags/src/main/java/org/apache/struts/edit/model/Person.java +++ b/control-tags/src/main/java/org/apache/struts/edit/model/Person.java @@ -2,111 +2,101 @@ package org.apache.struts.edit.model; import java.util.Arrays; - - /** * Models a Person who registers. - * @author bruce phillips - * */ -public class Person -{ +public class Person { private String firstName; private String lastName; private String sport; private String gender; private String residency; private boolean over21; - private String [] carModels; + private String[] carModels; private String email; private String phoneNumber; - public String getFirstName() - { + public String getFirstName() { return firstName; } - public void setFirstName(String firstName) - { + public void setFirstName(String firstName) { this.firstName = firstName; } - public String getLastName() - { + public String getLastName() { return lastName; } - public void setLastName(String lastName) - { + public void setLastName(String lastName) { this.lastName = lastName; } - public void setSport(String sport) { - this.sport = sport; - } + public void setSport(String sport) { + this.sport = sport; + } - public void setGender(String gender) { - this.gender = gender; - } + public void setGender(String gender) { + this.gender = gender; + } - public String getGender() { - return gender; - } + public String getGender() { + return gender; + } - public String getSport() { - return sport; - } + public String getSport() { + return sport; + } - public void setResidency(String residency) { - this.residency = residency; - } + public void setResidency(String residency) { + this.residency = residency; + } - public String getResidency() { - return residency; - } + public String getResidency() { + return residency; + } - public void setOver21(boolean over21) { - this.over21 = over21; - } + public void setOver21(boolean over21) { + this.over21 = over21; + } - public boolean isOver21() { - return over21; - } + public boolean isOver21() { + return over21; + } - public void setCarModels(String [] carModels) { - this.carModels = carModels; - } + public void setCarModels(String[] carModels) { + this.carModels = carModels; + } - public String [] getCarModels() { - return carModels; - } + public String[] getCarModels() { + return carModels; + } - public String toString() - { + public String toString() { return "First Name: " + getFirstName() + " | " + - " Last Name: " + getLastName() + " | " + - " Favorite Sport: " + getSport() + " | " + - " Gender: " + getGender() + " | " + - " Residency: " + getResidency() + " | " + - " Over 21: " + isOver21() + " | " + - " Car models: " + Arrays.asList( getCarModels() ) + " | " + - " Email: " + getEmail() + " | " + - " Phone: " + getPhoneNumber(); - } - - public void setEmail(String email) { - this.email = email; - } - - public String getEmail() { - return email; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public String getPhoneNumber() { - return phoneNumber; - } + " Last Name: " + getLastName() + " | " + + " Favorite Sport: " + getSport() + " | " + + " Gender: " + getGender() + " | " + + " Residency: " + getResidency() + " | " + + " Over 21: " + isOver21() + " | " + + " Car models: " + Arrays.asList(getCarModels()) + " | " + + " Email: " + getEmail() + " | " + + " Phone: " + getPhoneNumber(); + } + + public void setEmail(String email) { + this.email = email; + } + + public String getEmail() { + return email; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getPhoneNumber() { + return phoneNumber; + } } diff --git a/control-tags/src/main/java/org/apache/struts/edit/model/State.java b/control-tags/src/main/java/org/apache/struts/edit/model/State.java index 97109dc..cbd4489 100755 --- a/control-tags/src/main/java/org/apache/struts/edit/model/State.java +++ b/control-tags/src/main/java/org/apache/struts/edit/model/State.java @@ -1,33 +1,33 @@ package org.apache.struts.edit.model; public class State { - - private String stateAbbr; - - private String stateName; - - public State (String stateAbbr, String stateName) { - this.stateAbbr = stateAbbr; - this.stateName = stateName; - } - - public void setStateAbbr(String stateAbbr) { - this.stateAbbr = stateAbbr; - } - - public String getStateAbbr() { - return stateAbbr; - } - - public void setStateName(String stateName) { - this.stateName = stateName; - } - - public String getStateName() { - return stateName; - } - - public String toString() { - return getStateAbbr() ; - } + + private String stateAbbr; + + private String stateName; + + public State(String stateAbbr, String stateName) { + this.stateAbbr = stateAbbr; + this.stateName = stateName; + } + + public void setStateAbbr(String stateAbbr) { + this.stateAbbr = stateAbbr; + } + + public String getStateAbbr() { + return stateAbbr; + } + + public void setStateName(String stateName) { + this.stateName = stateName; + } + + public String getStateName() { + return stateName; + } + + public String toString() { + return getStateAbbr(); + } } diff --git a/control-tags/src/main/java/org/apache/struts/edit/service/EditService.java b/control-tags/src/main/java/org/apache/struts/edit/service/EditService.java index 5b36bf5..b32fb91 100755 --- a/control-tags/src/main/java/org/apache/struts/edit/service/EditService.java +++ b/control-tags/src/main/java/org/apache/struts/edit/service/EditService.java @@ -4,8 +4,8 @@ import org.apache.struts.edit.model.Person; public interface EditService { - Person getPerson() ; + Person getPerson(); - void savePerson(Person personBean); + void savePerson(Person personBean); } diff --git a/control-tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java b/control-tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java index bf2d188..1037f1c 100755 --- a/control-tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java +++ b/control-tags/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java @@ -1,49 +1,44 @@ package org.apache.struts.edit.service; - - import org.apache.struts.edit.model.Person; /** * Implement Services needed to edit and save * a Person object's state. In this implementation * the Person object's state is stored in memory - * @author brucephillips - * */ - public class EditServiceInMemory implements EditService { - private static Person person ; - private static String [] carModels = {"Ford","Nissan"}; - - static { - person = new Person(); - person.setFirstName("Bruce"); - person.setLastName("Phillips"); - person.setEmail("bphill...@ku.edu"); - person.setSport("basketball"); - person.setGender("not sure"); - person.setResidency("KS"); - person.setOver21(true); - person.setCarModels( carModels); - person.setPhoneNumber("123-456-9999"); - } - - public Person getPerson() { - return EditServiceInMemory.person; - } - - public void savePerson(Person personBean) { - EditServiceInMemory.person.setFirstName(personBean.getFirstName() ); - EditServiceInMemory.person.setLastName(personBean.getLastName() ); - EditServiceInMemory.person.setSport(personBean.getSport() ); - EditServiceInMemory.person.setGender( personBean.getGender() ); - EditServiceInMemory.person.setResidency( personBean.getResidency() ); - EditServiceInMemory.person.setOver21( personBean.isOver21() ); - EditServiceInMemory.person.setCarModels(personBean.getCarModels() ); - EditServiceInMemory.person.setEmail( personBean.getEmail() ); - EditServiceInMemory.person.setPhoneNumber( personBean.getPhoneNumber() ); - } + private static Person person; + private static String[] carModels = {"Ford", "Nissan"}; + + static { + person = new Person(); + person.setFirstName("Bruce"); + person.setLastName("Phillips"); + person.setEmail("bphill...@ku.edu"); + person.setSport("basketball"); + person.setGender("not sure"); + person.setResidency("KS"); + person.setOver21(true); + person.setCarModels(carModels); + person.setPhoneNumber("123-456-9999"); + } + + public Person getPerson() { + return EditServiceInMemory.person; + } + + public void savePerson(Person personBean) { + EditServiceInMemory.person.setFirstName(personBean.getFirstName()); + EditServiceInMemory.person.setLastName(personBean.getLastName()); + EditServiceInMemory.person.setSport(personBean.getSport()); + EditServiceInMemory.person.setGender(personBean.getGender()); + EditServiceInMemory.person.setResidency(personBean.getResidency()); + EditServiceInMemory.person.setOver21(personBean.isOver21()); + EditServiceInMemory.person.setCarModels(personBean.getCarModels()); + EditServiceInMemory.person.setEmail(personBean.getEmail()); + EditServiceInMemory.person.setPhoneNumber(personBean.getPhoneNumber()); + } } diff --git a/control-tags/src/main/resources/struts.xml b/control-tags/src/main/resources/struts.xml index 750b70f..3473cb6 100755 --- a/control-tags/src/main/resources/struts.xml +++ b/control-tags/src/main/resources/struts.xml @@ -6,6 +6,7 @@ <constant name="struts.devMode" value="true"/> <constant name="struts.enable.DynamicMethodInvocation" value="true"/> + <constant name="struts.allowlist.packageNames" value="org.apache.struts.edit.model"/> <package name="basicstruts2" extends="struts-default"> <default-action-ref name="index"/>