Ответ состоящий из списка в Soap

Я делаю SOAP с wsdl в Spring. Пока что я сделал поиск человека по его id. Но мне помимо этого поиска нужно сделать поиск людей возраст которых больше тридцати лет, но я не знаю как вернуть коллекцию состоящих из результата поиска в ответ SOAP сервера. Вот мой код: Код класса PersonForSoap:

package com.soapService.SOAP;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import java.math.BigDecimal;
import java.time.LocalDate;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PersonForSoap", propOrder = {
        "Id",
        "FirstName",
         "LastName",
         "Birthdate",
         "Age",

         "Gender",
         "Name",
         "Salary"

})
public class PersonForSoap {
    @XmlElement(required = true)
    private Integer Id;

    private String FirstName;
    private String LastName;
    private LocalDate Birthdate;
    private Integer Age;

    private Gender Gender;
    private String Name;
    private BigDecimal Salary;

    public BigDecimal getSalary() {
        return Salary;
    }

    public void setSalary(BigDecimal salary) {
        Salary = salary;
    }

    public Integer getId() {
        return Id;
    }

    public void setId(Integer id) {
        Id = id;
    }

    public String getFirstName() {
        return FirstName;
    }

    public void setFirstName(String firstName) {
        FirstName = firstName;
    }

    public String getLastName() {
        return LastName;
    }

    public void setLastName(String lastName) {
        LastName = lastName;
    }

    public LocalDate getBirthdate() {
        return Birthdate;
    }

    public void setBirthdate(LocalDate birthdate) {
        Birthdate = birthdate;
    }

    public Integer getAge() {
        return Age;
    }

    public void setAge(Integer age) {
        Age = age;
    }

    public Gender getGender() {
        return Gender;
    }

    public void setGender(Gender gender) {
        Gender = gender;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }




    public PersonForSoap(Integer id, String firstName, String lastName, LocalDate birthdate, Integer age, Gender gender, String name, BigDecimal salary) {
        Id = id;
        FirstName = firstName;
        LastName = lastName;
        Birthdate = birthdate;
        Age = age;
        Gender = gender;
        Name = name;
        Salary = salary;
    }

    public PersonForSoap()
    {

    }Зук
}

Код класса ListPersonForSoap(репозитория):

package com.soapService.SOAP;

import org.springframework.stereotype.Component;
import org.springframework.util.Assert;

import javax.annotation.PostConstruct;
import java.io.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Stream;

@Component
public class ListPersonForSoap {

    private static final List<PersonForSoap> listPFS = new ArrayList<PersonForSoap>();

    private Repository r;

    final String  fileName="C:\\Users\\Data\\Documents\\SOAP\\target\\classes\\persons.csv";

    @PostConstruct
    public void initData() throws FileNotFoundException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        File f = new File(fileName);
        BufferedReader fin = new BufferedReader(new FileReader(f));

        String line;
        Scanner in = new Scanner(new File(fileName));

        while (in.hasNextLine()) {

            String buf = in.nextLine();
            if (buf.startsWith("id")) {
                ;
            } else {
                String[] bufArray = buf.split(";");

                int id = Integer.parseInt(bufArray[0]);
                String firstName = bufArray[1];
                String lastName = bufArray[2];
                Gender gender = Gender.valueOf(bufArray[3].toUpperCase());
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");

                LocalDate date = LocalDate.parse(bufArray[4], formatter);

                String Name = bufArray[5];

                LocalDate now = LocalDate.now();

                //Period p = new Period(date, now);

                Integer age = (int) ChronoUnit.YEARS.between(date, now);


                BigDecimal money = new BigDecimal(bufArray[6]);

                PersonForSoap bufObject = new PersonForSoap( id,  firstName,  lastName,  date, age, gender, Name, money);

                if (bufObject != null) {
                  listPFS.add(bufObject)  ;
                }

            }

        }



    }

    public PersonForSoap findPerson(Integer id) {
        Assert.notNull(id, "The Person id name must not be null");
        //PersonForSoap personForSoap=new PersonForSoap();
        for (PersonForSoap personForSoap : listPFS) {
            if (personForSoap.getId().equals(id)) {
                return personForSoap;
            }
        }
      //  return listPFS.get(id);
        return null;
    }

    public Stream<PersonForSoap> twoMethod(int age) {
        //BigDecimal valDouble = new BigDecimal(5000);
        return listPFS.stream().filter(s -> s.getAge() > age);


    }

}

Код класса PersonEndPoint:

package com.soapService.SOAP;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
import org.springframework.ws.server.endpoint.annotation.RequestPayload;
import org.springframework.ws.server.endpoint.annotation.ResponsePayload;

import xmlPackage.PersonDetailsRequest;
import xmlPackage.PersonDetailsResponse;

@Endpoint
public class PersonEndPoint {

    private static final String NAMESPACE_URI = "https://www.howtodoinjava.com/xml/school";

    private ListPersonForSoap listPersonForSoap;

    @Autowired
    public PersonEndPoint(ListPersonForSoap listPersonForSoap) {
        this.listPersonForSoap = listPersonForSoap;
    }

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "PersonDetailsRequest")
    @ResponsePayload
    public PersonDetailsResponse getStudent(@RequestPayload PersonDetailsRequest request) {
        PersonDetailsResponse response = new PersonDetailsResponse();
        response.setPersonForSoap(listPersonForSoap.findPerson(request.getId()));

        return response;
    }

}

Код класса PersonDetailsRequest:

package xmlPackage;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
        "Id"
})
@XmlRootElement(namespace = "https://www.howtodoinjava.com/xml/school",name = "PersonDetailsRequest")
public class PersonDetailsRequest {

    @XmlElement(namespace = "https://www.howtodoinjava.com/xml/school",required = true)
    protected Integer Id;

    public Integer getId() {
        return Id;
    }

    public void setId(Integer id) {
        Id = id;
    }
}

Код класса PersonDetailsResponse:

package xmlPackage;

import com.soapService.SOAP.PersonForSoap;

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
        "personForSoap"
})
@XmlRootElement(name = "PersonDetailsResponse")
public class PersonDetailsResponse {
    @XmlElement(name = "PersonForSoap", required = true)
    protected PersonForSoap personForSoap;

    public PersonForSoap getPersonForSoap() {
        return personForSoap;
    }

    public void setPersonForSoap(PersonForSoap personForSoap) {
        this.personForSoap = personForSoap;
    }
}

Код схемы person.xsd:

  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="https://www.howtodoinjava.com/xml/school"
               targetNamespace="https://www.howtodoinjava.com/xml/school" elementFormDefault="qualified">

        <xs:simpleType name="enum" final="restriction" >
            <xs:restriction base="xs:string">
                <xs:enumeration value="MALE" />
                <xs:enumeration value="FEMALE" />

            </xs:restriction>
        </xs:simpleType>


        <xs:element name="PersonDetailsRequest">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="Id" type="xs:integer"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>

        <xs:element name="PersonDetailsResponse">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="PersonForSoap" type="tns:PersonForSoap"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>

        <xs:complexType name="PersonForSoap">
            <xs:sequence>
                <xs:element name="Id" type="xs:integer"/>
                <xs:element name="FirstName" type="xs:string"/>
                <xs:element name="LastName" type="xs:string"/>


                <xs:element name="Birthdate" type="xs:date"/>
                <xs:element name="Age" type="xs:integer"/>

                <xs:element name="Gender" type="tns:enum"/>

                <xs:element name="Name" type="xs:string"/>

                <xs:element name="Salary" type="xs:decimal"/>


            </xs:sequence>
        </xs:complexType>

    </xs:schema>

Помогите пожалуйста разобраться с данным вопросом.


Ответы (0 шт):