Best EvoMaster code snippet using org.evomaster.client.java.controller.problem.rpc.RPCEndpointsBuilder.ObjectMapper
Source:RPCEndpointsBuilder.java  
1package org.evomaster.client.java.controller.problem.rpc;2import com.fasterxml.jackson.core.JsonProcessingException;3import com.fasterxml.jackson.databind.JsonNode;4import com.fasterxml.jackson.databind.ObjectMapper;5import org.evomaster.client.java.controller.api.dto.AuthenticationDto;6import org.evomaster.client.java.controller.api.dto.CustomizedRequestValueDto;7import org.evomaster.client.java.controller.api.dto.JsonAuthRPCEndpointDto;8import org.evomaster.client.java.controller.problem.rpc.schema.LocalAuthSetupSchema;9import org.evomaster.client.java.controller.problem.rpc.schema.params.*;10import org.evomaster.client.java.controller.problem.rpc.schema.types.*;11import org.evomaster.client.java.controller.api.dto.problem.rpc.RPCType;12import org.evomaster.client.java.controller.problem.rpc.schema.EndpointSchema;13import org.evomaster.client.java.controller.problem.rpc.schema.InterfaceSchema;14import org.evomaster.client.java.utils.SimpleLogger;15import java.lang.annotation.Annotation;16import java.lang.reflect.*;17import java.math.BigDecimal;18import java.math.BigInteger;19import java.nio.ByteBuffer;20import java.util.*;21import java.util.stream.Collectors;22/**23 * created by manzhang on 2021/11/424 */25public class RPCEndpointsBuilder {26    private final static ObjectMapper objectMapper = new ObjectMapper();27    private final static String OBJECT_FLAG = "OBJECT";28    private static String getObjectTypeNameWithFlag(Class<?> clazz, String name) {29        if (isNotCustomizedObject(clazz)) return name;30        return OBJECT_FLAG + ":" + name;31    }32    private static boolean isNotCustomizedObject(Class<?> clazz){33        return PrimitiveOrWrapperType.isPrimitiveOrTypes(clazz) || clazz == String.class ||34                clazz == ByteBuffer.class || clazz.isEnum() || clazz.isArray() ||35                List.class.isAssignableFrom(clazz) || Set.class.isAssignableFrom(clazz);36    }37    /**38     * validate CustomizedRequestValueDto, eg,39     * 1) for any CustomizedRequestValueDto, keyValuePairs and keyValues could not be specified or null at the same time40     * 2) for keyValuePairs, if annotationOnEndpoint or specificEndpointName or specificRequestTypeName are specified, they should have consistent keys...Source:SutController.java  
1package org.evomaster.client.java.controller.internal;2import com.fasterxml.jackson.core.JsonProcessingException;3import com.fasterxml.jackson.databind.ObjectMapper;4import org.eclipse.jetty.server.AbstractNetworkConnector;5import org.eclipse.jetty.server.Server;6import org.eclipse.jetty.server.handler.ErrorHandler;7import org.eclipse.jetty.servlet.ServletContextHandler;8import org.eclipse.jetty.servlet.ServletHolder;9import org.evomaster.client.java.controller.CustomizationHandler;10import org.evomaster.client.java.controller.SutHandler;11import org.evomaster.client.java.controller.api.dto.*;12import org.evomaster.client.java.controller.api.dto.problem.rpc.SeededRPCActionDto;13import org.evomaster.client.java.controller.db.SqlScriptRunnerCached;14import org.evomaster.client.java.controller.internal.db.DbSpecification;15import org.evomaster.client.java.controller.api.dto.problem.rpc.RPCType;16import org.evomaster.client.java.controller.problem.rpc.CustomizedNotNullAnnotationForRPCDto;17import org.evomaster.client.java.controller.problem.rpc.RPCExceptionHandler;18import org.evomaster.client.java.controller.api.dto.problem.rpc.SeededRPCTestDto;19import org.evomaster.client.java.controller.problem.rpc.schema.EndpointSchema;20import org.evomaster.client.java.controller.problem.rpc.schema.InterfaceSchema;21import org.evomaster.client.java.controller.api.dto.problem.rpc.RPCActionDto;22import org.evomaster.client.java.controller.problem.rpc.schema.LocalAuthSetupSchema;23import org.evomaster.client.java.controller.problem.rpc.schema.params.*;24import org.evomaster.client.java.controller.api.dto.database.operations.InsertionResultsDto;25import org.evomaster.client.java.controller.db.DbCleaner;26import org.evomaster.client.java.controller.db.SqlScriptRunner;27import org.evomaster.client.java.controller.internal.db.SchemaExtractor;28import org.evomaster.client.java.controller.internal.db.SqlHandler;29import org.evomaster.client.java.controller.problem.ProblemInfo;30import org.evomaster.client.java.controller.problem.RPCProblem;31import org.evomaster.client.java.controller.problem.rpc.RPCEndpointsBuilder;32import org.evomaster.client.java.instrumentation.BootTimeObjectiveInfo;33import org.evomaster.client.java.instrumentation.staticstate.UnitsInfoRecorder;34import org.evomaster.client.java.utils.SimpleLogger;35import org.evomaster.client.java.controller.api.ControllerConstants;36import org.evomaster.client.java.controller.api.dto.database.execution.ExecutionDto;37import org.evomaster.client.java.controller.api.dto.database.operations.InsertionDto;38import org.evomaster.client.java.controller.api.dto.database.schema.DbSchemaDto;39import org.evomaster.client.java.instrumentation.AdditionalInfo;40import org.evomaster.client.java.instrumentation.TargetInfo;41import org.glassfish.jersey.jackson.JacksonFeature;42import org.glassfish.jersey.logging.LoggingFeature;43import org.glassfish.jersey.server.ResourceConfig;44import org.glassfish.jersey.servlet.ServletContainer;45import java.lang.reflect.InvocationTargetException;46import java.lang.reflect.Method;47import java.net.InetSocketAddress;48import java.sql.Connection;49import java.sql.SQLException;50import java.util.*;51import java.util.concurrent.ConcurrentHashMap;52import java.util.concurrent.CopyOnWriteArrayList;53import java.util.stream.Collectors;54/**55 * Abstract class used to connect to the EvoMaster process, and56 * that is responsible to start/stop/restart the tested application,57 * ie the system under test (SUT)58 */59public abstract class SutController implements SutHandler, CustomizationHandler {60    private int controllerPort = ControllerConstants.DEFAULT_CONTROLLER_PORT;61    private String controllerHost = ControllerConstants.DEFAULT_CONTROLLER_HOST;62    private final SqlHandler sqlHandler = new SqlHandler();63    private Server controllerServer;64    /**65     * If using a SQL Database, gather info about its schema66     */67    private DbSchemaDto schemaDto;68    /**69     * For each action in a test, keep track of the extra heuristics, if any70     */71    private final List<ExtraHeuristicsDto> extras = new CopyOnWriteArrayList<>();72    /**73     * track all tables accessed in a test74     */75    private final List<String> accessedTables = new CopyOnWriteArrayList<>();76    /**77     * a map of table to fk target tables78     */79    private final Map<String, List<String>> fkMap = new ConcurrentHashMap<>();80    /**81     * a map of table to a set of commands which are to insert data into the db82     */83    private final Map<String, List<String>> tableInitSqlMap = new ConcurrentHashMap<>();84    /**85     * a map of interface schemas for RPC service under test86     * - key is full name of the interface87     * - value is extracted interface schema88     */89    private final Map<String, InterfaceSchema> rpcInterfaceSchema = new LinkedHashMap <>();90    /**91     * a map of local auth setup schemas for RPC service under test92     * - key is the index of the auth info which is specified in the driver93     * - value is extracted local auth setup schema94     */95    private final Map<Integer, LocalAuthSetupSchema> localAuthSetupSchemaMap = new LinkedHashMap <>();96    /**97     * handle parsing RPCActionDto based on json string.98     * Note that it is only used for RPC99     */100    private ObjectMapper objectMapper;101    private int actionIndex = -1;102    /**103     * Start the controller as a RESTful server.104     * Use the setters of this class to change the default105     * port and host.106     * <br>107     * This method is blocking until the server is initialized.108     *109     * @return true if there was no problem in starting the controller110     */111    public final boolean startTheControllerServer() {112        //Jersey113        ResourceConfig config = new ResourceConfig();114        config.register(JacksonFeature.class);115        config.register(new EMController(this));116        config.register(LoggingFeature.class);117        //Jetty118        controllerServer = new Server(InetSocketAddress.createUnresolved(119                getControllerHost(), getControllerPort()));120        ErrorHandler errorHandler = new ErrorHandler();121        errorHandler.setShowStacks(true);122        controllerServer.setErrorHandler(errorHandler);123        ServletHolder servlet = new ServletHolder(new ServletContainer(config));124        ServletContextHandler context = new ServletContextHandler(controllerServer,125                ControllerConstants.BASE_PATH + "/*");126        context.addServlet(servlet, "/*");127        try {128            controllerServer.start();129        } catch (Exception e) {130            SimpleLogger.error("Failed to start Jetty: " + e.getMessage());131            controllerServer.destroy();132        }133        //just make sure we start from a clean state134        newSearch();135        SimpleLogger.info("Started controller server on: " + controllerServer.getURI());136        return true;137    }138    public final boolean stopTheControllerServer() {139        try {140            controllerServer.stop();141            return true;142        } catch (Exception e) {143            SimpleLogger.error("Failed to stop the controller server: " + e.toString());144            return false;145        }146    }147    /**148     * @return the actual port in use (eg, if it was an ephemeral 0)149     */150    public final int getControllerServerPort() {151        return ((AbstractNetworkConnector) controllerServer.getConnectors()[0]).getLocalPort();152    }153    public final int getControllerPort() {154        return controllerPort;155    }156    public final void setControllerPort(int controllerPort) {157        this.controllerPort = controllerPort;158    }159    public final String getControllerHost() {160        return controllerHost;161    }162    public final void setControllerHost(String controllerHost) {163        this.controllerHost = controllerHost;164    }165    @Override166    public InsertionResultsDto execInsertionsIntoDatabase(List<InsertionDto> insertions, InsertionResultsDto... previous) {167        Connection connection = getConnectionIfExist();168        if (connection == null) {169            throw new IllegalStateException("No connection to database");170        }171        try {172            return SqlScriptRunner.execInsert(connection, insertions, previous);173        } catch (SQLException e) {174            throw new RuntimeException(e);175        }176    }177    public int getActionIndex(){178        return actionIndex;179    }180    /**181     * Calculate heuristics based on intercepted SQL commands182     *183     * @param sql command as a string184     */185    @Deprecated186    public final void handleSql(String sql) {187        Objects.requireNonNull(sql);188        sqlHandler.handle(sql);189    }190    public final void enableComputeSqlHeuristicsOrExtractExecution(boolean enableSqlHeuristics, boolean enableSqlExecution){191        sqlHandler.setCalculateHeuristics(enableSqlHeuristics);192        sqlHandler.setExtractSqlExecution(enableSqlHeuristics || enableSqlExecution);193    }194    /**195     * This is needed only during test generation (not execution),196     * and it is automatically called by the EM controller after197     * the SUT is started.198     */199    public final void initSqlHandler() {200        sqlHandler.setConnection(getConnectionIfExist());201        sqlHandler.setSchema(getSqlDatabaseSchema());202    }203    /**204     * TODO further handle multiple connections205     * @return sql connection if there exists206     */207    public final Connection getConnectionIfExist(){208        return (getDbSpecifications() == null209                || getDbSpecifications().isEmpty())? null: getDbSpecifications().get(0).connection;210    }211    /**212     *213     * @return whether to employ smart db clean214     */215    public final boolean doEmploySmartDbClean(){216        return getDbSpecifications() != null217                && !getDbSpecifications().isEmpty() && getDbSpecifications().get(0).employSmartDbClean;218    }219    public final void resetExtraHeuristics() {220        sqlHandler.reset();221    }222    public final List<ExtraHeuristicsDto> getExtraHeuristics() {223        if (extras.size() == actionIndex) {224            extras.add(computeExtraHeuristics());225        }226        return new ArrayList<>(extras);227    }228    public final ExtraHeuristicsDto computeExtraHeuristics() {229        ExtraHeuristicsDto dto = new ExtraHeuristicsDto();230        if(sqlHandler.isCalculateHeuristics() || sqlHandler.isExtractSqlExecution()){231            /*232                TODO refactor, once we move SQL analysis into Core233             */234            List<AdditionalInfo> list = getAdditionalInfoList();235            if(!list.isEmpty()) {236                AdditionalInfo last = list.get(list.size() - 1);237                last.getSqlInfoData().stream().forEach(it -> {238//                    String sql = it.getCommand();239                    try {240                        sqlHandler.handle(it);241                    } catch (Exception e){242                        SimpleLogger.error("FAILED TO HANDLE SQL COMMAND: " + it.getCommand());243                        assert false; //we should try to handle all cases in our tests244                    }245                });246            }247        }248        if(sqlHandler.isCalculateHeuristics()) {249            sqlHandler.getDistances().stream()250                    .map(p ->251                            new HeuristicEntryDto(252                                    HeuristicEntryDto.Type.SQL,253                                    HeuristicEntryDto.Objective.MINIMIZE_TO_ZERO,254                                    p.sqlCommand,255                                    p.distance256                            ))257                    .forEach(h -> dto.heuristics.add(h));258        }259        if (sqlHandler.isCalculateHeuristics() || sqlHandler.isExtractSqlExecution()){260            ExecutionDto executionDto = sqlHandler.getExecutionDto();261            dto.databaseExecutionDto = executionDto;262            // set accessed table263            if (executionDto != null){264                accessedTables.addAll(executionDto.deletedData);265                accessedTables.addAll(executionDto.insertedData.keySet());266//                accessedTables.addAll(executionDto.queriedData.keySet());267                accessedTables.addAll(executionDto.insertedData.keySet());268                accessedTables.addAll(executionDto.updatedData.keySet());269            }270        }271        return dto;272    }273    /**274     * perform smart db clean by cleaning the data in accessed table275     */276    public final void cleanAccessedTables(){277        if (getDbSpecifications() == null || getDbSpecifications().isEmpty()) return;278        if (getDbSpecifications().size() > 1)279            throw new RuntimeException("Error: DO NOT SUPPORT MULTIPLE SQL CONNECTION YET");280        DbSpecification emDbClean = getDbSpecifications().get(0);281        if (getConnectionIfExist() == null || !emDbClean.employSmartDbClean) return;282        try {283            setExecutingInitSql(true);284            // clean accessed tables285            Set<String> tableDataToInit = null;286            if (!accessedTables.isEmpty()){287                List<String> tablesToClean = new ArrayList<>();288                getTableToClean(accessedTables, tablesToClean);289                if (!tablesToClean.isEmpty()){290                    if (emDbClean.schemaNames != null && !emDbClean.schemaNames.isEmpty()){291                        emDbClean.schemaNames.forEach(sch-> DbCleaner.clearDatabase(getConnectionIfExist(), sch,  null, tablesToClean, emDbClean.dbType));292                    }else293                        DbCleaner.clearDatabase(getConnectionIfExist(), null,  null, tablesToClean, emDbClean.dbType);294                    tableDataToInit = tablesToClean.stream().filter(a-> tableInitSqlMap.keySet().stream().anyMatch(t-> t.equalsIgnoreCase(a))).collect(Collectors.toSet());295                }296            }297            handleInitSql(tableDataToInit, emDbClean);298        }catch (SQLException e) {299            throw new RuntimeException("SQL Init Execution Error: fail to execute "+e);300        }finally {301            setExecutingInitSql(false);302        }303    }304    private void handleInitSql(Collection<String> tableDataToInit, DbSpecification spec) throws SQLException {305        // init db script306        boolean initAll = initSqlScriptAndGetInsertMap(getConnectionIfExist(), spec);307        if (!initAll && tableDataToInit!= null &&!tableDataToInit.isEmpty()){308            tableDataToInit.forEach(a->{309                tableInitSqlMap.keySet().stream().filter(t-> t.equalsIgnoreCase(a)).forEach(t->{310                    tableInitSqlMap.get(t).forEach(c->{311                        try {312                            SqlScriptRunner.execCommand(getConnectionIfExist(), c);313                        } catch (SQLException e) {314                            throw new RuntimeException("SQL Init Execution Error: fail to execute "+ c + " with error "+e);315                        }316                    });317                });318            });319        }320    }321    /**322     * collect info about what table are manipulated by evo in order to generate data directly into it323     * @param tables a list of name of tables324     */325    public void addTableToInserted(List<String> tables){326        accessedTables.addAll(tables);327    }328    private void getTableToClean(List<String> accessedTables, List<String> tablesToClean){329        for (String t: accessedTables){330            if (!findInCollectionIgnoreCase(t, tablesToClean).isPresent()){331                if (findInMapIgnoreCase(t, fkMap).isPresent()){332                    tablesToClean.add(t);333                    List<String> fk = fkMap.entrySet().stream().filter(e->334                            findInCollectionIgnoreCase(t, e.getValue()).isPresent()335                                    && !findInCollectionIgnoreCase(e.getKey(), tablesToClean).isPresent()).map(Map.Entry::getKey).collect(Collectors.toList());336                    if (!fk.isEmpty())337                        getTableToClean(fk, tablesToClean);338                }else {339                    SimpleLogger.uniqueWarn("Cannot find the table "+t+" in ["+String.join(",", fkMap.keySet())+"]");340                }341            }342        }343    }344    private Optional<String> findInCollectionIgnoreCase(String name, Collection<String> list){345        return list.stream().filter(i-> i.equalsIgnoreCase(name)).findFirst();346    }347    private Optional<? extends Map.Entry<String, ?>> findInMapIgnoreCase(String name, Map<String, ?> list){348        return list.entrySet().stream().filter(x-> x.getKey().equalsIgnoreCase(name)).findFirst();349    }350    /**351     *352     * @param dbSpecification contains info of the db connection353     * @return whether the init script is executed354     */355    private boolean initSqlScriptAndGetInsertMap(Connection connection, DbSpecification dbSpecification) throws SQLException {356        if (dbSpecification.initSqlOnResourcePath == null357                && dbSpecification.initSqlScript == null) return false;358        // TODO to handle initSqlMap for multiple connections359        if (tableInitSqlMap.isEmpty()){360            List<String> all = new ArrayList<>();361            if (dbSpecification.initSqlOnResourcePath != null){362               all.addAll(SqlScriptRunnerCached.extractSqlScriptFromResourceFile(dbSpecification.initSqlOnResourcePath));363            }364            if (dbSpecification.initSqlScript != null){365                all.addAll(SqlScriptRunner.extractSql(dbSpecification.initSqlScript));366            }367            if (!all.isEmpty()){368                // collect insert sql commands map, key is table name, and value is a list sql insert commands369                tableInitSqlMap.putAll(SqlScriptRunner.extractSqlTableMap(all));370                // execute all commands371                SqlScriptRunner.runCommands(connection, all);372                return true;373            }374        }375        return false;376    }377    /**378     * Extra information about the SQL Database Schema, if any is present.379     * Note: this is extracted by querying the database itself.380     * So the database must be up and running.381     *382     * @return a DTO with the schema information383     * @see SutHandler#getDbSpecifications384     */385    public final DbSchemaDto getSqlDatabaseSchema() {386        if (schemaDto != null) {387            return schemaDto;388        }389        if (getDbSpecifications() == null || getDbSpecifications().isEmpty()) {390            return null;391        }392        try {393            schemaDto = SchemaExtractor.extract(getConnectionIfExist());394            Objects.requireNonNull(schemaDto);395            schemaDto.employSmartDbClean = doEmploySmartDbClean();396        } catch (Exception e) {397            SimpleLogger.error("Failed to extract the SQL Database Schema: " + e.getMessage());398            return null;399        }400        if (fkMap.isEmpty()){401            schemaDto.tables.forEach(t->{402                fkMap.putIfAbsent(t.name, new ArrayList<>());403                if (t.foreignKeys!=null && !t.foreignKeys.isEmpty()){404                    t.foreignKeys.forEach(f->{405                        fkMap.get(t.name).add(f.targetTable.toUpperCase());406                    });407                }408            });409        }410        return schemaDto;411    }412    /**413     *414     * @return a map from the name of interface to extracted interface415     */416    public final Map<String, InterfaceSchema> getRPCSchema(){417        return rpcInterfaceSchema;418    }419    /**420     *421     * @return a map of auth local method422     */423    public Map<Integer, LocalAuthSetupSchema> getLocalAuthSetupSchemaMap() {424        return localAuthSetupSchemaMap;425    }426    /**427     * extract endpoints info of the RPC interface by reflection based on the specified service interface name428     */429    @Override430    public final void extractRPCSchema(){431        if (objectMapper == null)432            objectMapper = new ObjectMapper();433        if (!rpcInterfaceSchema.isEmpty())434            return;435        if (!(getProblemInfo() instanceof RPCProblem)){436            SimpleLogger.error("Problem ("+getProblemInfo().getClass().getSimpleName()+") is not RPC but request RPC schema.");437            return;438        }439        try {440            RPCEndpointsBuilder.validateCustomizedValueInRequests(getCustomizedValueInRequests());441            RPCEndpointsBuilder.validateCustomizedNotNullAnnotationForRPCDto(specifyCustomizedNotNullAnnotation());442            RPCProblem rpcp = (RPCProblem) getProblemInfo();443            for (String interfaceName: rpcp.getMapOfInterfaceAndClient()){444                InterfaceSchema schema = RPCEndpointsBuilder.build(interfaceName, rpcp.getType(), rpcp.getClient(interfaceName),445                        rpcp.skipEndpointsByName!=null? rpcp.skipEndpointsByName.get(interfaceName):null,446                        rpcp.skipEndpointsByAnnotation!=null?rpcp.skipEndpointsByAnnotation.get(interfaceName):null,...ObjectMapper
Using AI Code Generation
1import com.fasterxml.jackson.databind.ObjectMapper;2import org.evomaster.client.java.controller.problem.rpc.RPCEndpointsBuilder;3import org.evomaster.client.java.controller.problem.rpc.RPCEndpoint;4import org.evomaster.client.java.controller.problem.rpc.RPCProblem;5import org.evomaster.client.java.controller.problem.rpc.RPCResult;6import org.evomaster.client.java.controller.problem.RestProblem;7import org.evomaster.client.java.controller.problem.RestCallResult;8import org.evomaster.client.java.controller.problem.RestCallAction;9import org.evomaster.client.java.controller.problem.RestIndividual;10import org.evomaster.client.java.controller.problem.RestAction;11import org.evomaster.client.java.controller.problem.RestCallResult;12import org.evomaster.client.java.controller.problem.RestIndividual;13import org.evomaster.client.java.controller.problem.RestCallAction;14import org.evomaster.client.java.controller.problem.RestAction;15import org.evomaster.client.java.controller.problem.RestIndividual;16import org.evomaster.client.java.controller.problem.RestCallAction;17import org.evomaster.client.java.controller.problem.RestAction;18import org.evomaster.client.java.controller.problem.RestIndividual;19import org.evomaster.client.java.controller.problem.RestCallAction;20import org.evomaster.client.java.controller.problem.RestAction;21import org.evomaster.client.java.controller.problem.RestIndividual;22import org.evomaster.client.java.controller.problem.RestCallAction;23import org.evomaster.client.java.controller.problem.RestAction;24import org.evomaster.client.java.controller.problem.RestIndividual;25import org.evomaster.client.java.controller.problem.RestCallAction;26import org.evomaster.client.java.controller.problem.RestAction;27import org.evomaster.client.java.controller.problem.RestIndividual;28import org.evomaster.client.java.controller.problem.RestCallAction;29import org.evomaster.client.java.controller.problem.RestAction;30import org.evomaster.client.java.controller.problem.RestIndividual;31import org.evomaster.client.java.controller.problem.RestCallAction;32import org.evomaster.client.java.controller.problem.RestAction;33import org.evomaster.client.java.controller.problem.RestIndividual;34import org.evomaster.client.java.controller.problem.RestCallAction;35import org.evomaster.client.java.controller.problem.RestAction;36import org.evomaster.client.java.controller.problem.RestIndividual;37import org.evomaster.client.java.controller.problem.RestCallAction;38import org.evomaster.client.java.controller.problem.RestAction;39import org.evomaster.client.java.controller.problem.RestIndividual;40import org.evomaster.client.java.controller.problem.RestObjectMapper
Using AI Code Generation
1public class 3 {2    public static void main(String[] args) throws IOException {3        ObjectMapper objectMapper = new ObjectMapper();4        objectMapper.registerModule(new JavaTimeModule());5        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);6        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);7        objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);8        objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, true);9        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);10        objectMapper.configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS, false);11        objectMapper.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false);12        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);13        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);14        objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);15        objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);16        objectMapper.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true);17        objectMapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);18        objectMapper.configure(SerializationFeature.WRITE_DATES_WITH_ZONE_ID, true);19        objectMapper.configure(DeserializationFeature.READ_DATES_WITH_ZONE_ID, true);20        objectMapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);21        objectMapper.configure(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, true);22        objectMapper.configure(SerializationFeature.WRITE_DATES_WITH_ZONE_ID, true);23        objectMapper.configure(DeserializationFeature.READ_DATES_WITH_ZONE_ID, true);24        objectMapper.configure(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, true);ObjectMapper
Using AI Code Generation
1import org.evomaster.client.java.controller.problem.rpc.RPCEndpointsBuilder;2import org.evomaster.client.java.controller.problem.rpc.RPCEndpoints;3import org.evomaster.client.java.controller.problem.rpc.RPCRequest;4import org.evomaster.client.java.controller.problem.rpc.RPCResult;5import org.evomaster.client.java.controller.problem.rpc.RPCResponse;6import org.evomaster.client.java.controller.problem.rpc.RPCException;7import org.evomaster.client.java.controller.problem.rpc.RPCExceptionType;8import org.evomaster.client.java.controller.problem.rpc.RPCResponseDto;9import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoType;10import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBody;11import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyType;12import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyError;13import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyResult;14import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyVoid;15import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyUnknown;16import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyException;17import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionType;18import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionMessage;19import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionStackTrace;20import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionCause;21import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionCauseType;22import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionCauseMessage;23import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionCauseStackTrace;24import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionCauseCause;25import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionCauseCauseType;26import org.evomaster.client.java.controller.problem.rpc.RPCResponseDtoBodyExceptionCauseCauseMessage;27import org.evomaster.client.java.controller.problem.rpc.RObjectMapper
Using AI Code Generation
1package com.mycompany.app;2import com.fasterxml.jackson.databind.ObjectMapper;3import com.mycompany.app.generated.RPCService;4import com.mycompany.app.generated.RPCService_Service;5import org.evomaster.client.java.controller.problem.rpc.RPCEndpointsBuilder;6import org.evomaster.client.java.controller.problem.rpc.RPCEndpoint;7import org.evomaster.client.java.controller.problem.rpc.RPCResult;8import java.util.List;9{10    public static void main( String[] args )11    {12        RPCService_Service service = new RPCService_Service();13        RPCService rpc = service.getRPCServicePort();14        ObjectMapper objectMapper = new ObjectMapper();15        List<RPCEndpoint> endpoints = RPCEndpointsBuilder.build(rpc, objectMapper);16        for (RPCEndpoint endpoint : endpoints) {17            RPCResult result = endpoint.execute();18            System.out.println(result.getResult());19        }20    }21}22package com.mycompany.app;23import com.fasterxml.jackson.databind.ObjectMapper;24import org.evomaster.client.java.controller.problem.rest.RestCallResult;25import org.evomaster.client.java.controller.problem.rest.RestCallResultBuilder;26import org.evomaster.client.java.controller.problem.rest.RestCallResults;27import org.evomaster.client.java.controller.problem.rest.RestEndpoint;28import org.evomaster.client.java.controller.problem.rest.RestMethod;29import org.evomaster.client.java.controller.problem.rest.param.BodyParam;30import org.evomaster.client.java.controller.problem.rest.param.FormParam;31import org.evomaster.client.java.controller.problem.rest.param.HeaderParam;32import org.evomaster.client.java.controller.problem.rest.param.PathParam;33import org.evomaster.client.java.controller.problem.rest.param.QueryParam;34import org.evomaster.client.java.controller.problem.rest.param.RestParam;35import org.evomaster.client.java.controller.problem.rest.param.RestParamType;36import org.evomaster.client.java.controller.problem.rest.param.UriParam;37import java.util.ArrayList;38import java.util.List;39{40    public static void main( String[] args )41    {42        List<RestParam> params = new ArrayList<>();43        params.add(new PathParam("id",ObjectMapper
Using AI Code Generation
1import org.evomaster.client.java.controller.problem.rpc.RPCEndpointsBuilder;2import org.evomaster.client.java.controller.problem.rpc.RpcCallResult;3import org.evomaster.client.java.controller.problem.rpc.RpcCallResultFormat;4import org.evomaster.client.java.controller.problem.rpc.RpcCallResultOutputFormat;5import org.evomaster.client.java.controller.problem.rpc.RpcCallResultType;6import org.evomaster.client.java.controller.problem.rpc.RpcCallResultTypeFormat;7import org.evomaster.client.java.controller.problem.rpc.RpcCallResultTypeOutputFormat;8import org.evomaster.client.java.controller.problem.rpc.RpcCallResultValue;9import org.evomaster.client.java.controller.problem.rpc.RpcCallResultValueFormat;10import org.evomaster.client.java.controller.problem.rpc.RpcCallResultValueOutputFormat;11import org.evomaster.client.java.controller.problem.rpc.RpcCallResultValueOutputFormat;12import com.fasterxml.jackson.databind.ObjectMapper;13import java.io.IOException;14import java.util.ArrayList;15import java.util.List;16public class Example3 {17    public static void main(String[] args) throws IOException {18        List<String> list = new ArrayList<String>();19        list.add("one");20        list.add("two");21        list.add("three");22        Example3Class1 example3class1 = new Example3Class1();23        Example3Class2 example3class2 = new Example3Class2();24        Example3Class3 example3class3 = new Example3Class3();Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
