static OResultInternal basicSerialize(OExecutionStepInternal step) { OResultInternal result = new OResultInternal(); result.setProperty(OInternalExecutionPlan.JAVA_TYPE, step.getClass().getName()); if (step.getSubSteps() != null && step.getSubSteps().size() > 0) { List<OResult> serializedSubsteps = new ArrayList<>(); for (OExecutionStep substep : step.getSubSteps()) { serializedSubsteps.add(((OExecutionStepInternal) substep).serialize()); } result.setProperty("subSteps", serializedSubsteps); } if (step.getSubExecutionPlans() != null && step.getSubExecutionPlans().size() > 0) { List<OResult> serializedSubPlans = new ArrayList<>(); for (OExecutionPlan substep : step.getSubExecutionPlans()) { serializedSubPlans.add(((OInternalExecutionPlan) substep).serialize()); } result.setProperty("subExecutionPlans", serializedSubPlans); } return result; }
static void basicDeserialize(OResult serialized, OExecutionStepInternal step) throws ClassNotFoundException, IllegalAccessException, InstantiationException { List<OResult> serializedSubsteps = serialized.getProperty("subSteps"); if (serializedSubsteps != null) { for (OResult serializedSub : serializedSubsteps) { String className = serializedSub.getProperty(OInternalExecutionPlan.JAVA_TYPE); OExecutionStepInternal subStep = (OExecutionStepInternal) Class.forName(className).newInstance(); subStep.deserialize(serializedSub); step.getSubSteps().add(subStep); } } List<OResult> serializedPlans = serialized.getProperty("subExecutionPlans"); if (serializedSubsteps != null) { for (OResult serializedSub : serializedPlans) { String className = serializedSub.getProperty(OInternalExecutionPlan.JAVA_TYPE); OInternalExecutionPlan subStep = (OInternalExecutionPlan) Class.forName(className).newInstance(); subStep.deserialize(serializedSub); step.getSubExecutionPlans().add(subStep); } } }