With POJO type parameters, you can handle more complex data structures than simple event input parameters. This document uses an example to describe how to use POJO parameters in SCF and which input parameter formats are supported.
You have logged in to the SCF Console.
The event input parameters used in this document are as follows:
{
"person": {"firstName":"bob","lastName":"zou"},
"city": {"name":"shenzhen"}
}
With the input parameters above, the following content is outputted:
{
"greetings": "Hello bob zou.You are from shenzhen"
}
Based on the input parameters, the following four classes are built:
person
section in the event JSONcity
section in the event JSONPrepare the code by following the steps below for the four classes constructed based on the input parameters and entry function:
Create a project root directory, such as scf_example
.
src\main\java
as the code directory in the project root directory.example
to form the directory structure scf_example\src\main\java\example
.Create files Pojo.java
, RequestClass.java
, PersonClass.java
, CityClass.java
, and ResponseClass.java
in the example
folder with the following contents respectively:
package example;
public class Pojo{
public ResponseClass handle(RequestClass request){
String greetingString = String.format("Hello %s %s.You are from %s", request.person.firstName, request.person.lastName, request.city.name);
return new ResponseClass(greetingString);
}
}
package example;
public class RequestClass {
PersonClass person;
CityClass city;
public PersonClass getPerson() {
return person;
}
public void setPerson(PersonClass person) {
this.person = person;
}
public CityClass getCity() {
return city;
}
public void setCity(CityClass city) {
this.city = city;
}
public RequestClass(PersonClass person, CityClass city) {
this.person = person;
this.city = city;
}
public RequestClass() {
}
}
package example;
public class PersonClass {
String firstName;
String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public PersonClass(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public PersonClass() {
}
}
package example;
public class CityClass {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public CityClass(String name) {
this.name = name;
}
public CityClass() {
}
}
package example;
public class ResponseClass {
String greetings;
public String getGreetings() {
return greetings;
}
public void setGreetings(String greetings) {
this.greetings = greetings;
}
public ResponseClass(String greetings) {
this.greetings = greetings;
}
public ResponseClass() {
}
}
In the example, Maven is chosen to compile and package the code. You can choose another packaging method according to your own conditions.
Create the pom.xml
function in the project root directory and enter the following content:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>examples</groupId>
<artifactId>java-example</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>java-example</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Run the mvn package
command on the command line and make sure that there is a successful compilation message. If the output result is as follows, the packaging is successful:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.800 s
[INFO] Finished at: 2017-08-25T15:42:41+08:00
[INFO] Final Memory: 18M/309M
[INFO] ------------------------------------------------------------------------
If the compilation fails, please modify the code as prompted.
3. The generated package after compilation is located at target\java-example-1.0-SNAPSHOT.jar
.
example.Pojo::handle
.{
"person": {"firstName":"bob","lastName":"zou"},
"city": {"name":"shenzhen"}
}
After clicking "Execute", you can see the return as shown below:
{
"greetings": "Hello bob zou.You are from shenzhen"
}
You can also modify the values of the structures in the test input parameters, and you can see the modification effect after execution.
You can go to the following address and pull the sample code for testing:
https://github.com/tencentyun/scf-demo-java
Was this page helpful?