AbstractJobEntry extends JobEntryBase implements Cloneable,
    JobEntryInterface { @Override public void loadXML( Node node, List<DatabaseMeta> databaseMetas, List<SlaveServer> slaveServers, Repository repository ) throws KettleXMLException { super.loadXML( node, databaseMetas, slaveServers ); T loaded = createJobConfig(); JobEntrySerializationHelper.read( loaded, node ); setJobConfig( loaded ); } AbstractJobEntry(); protected  AbstractJobEntry( LogChannelInterface logChannelInterface ); T getJobConfig(); void setJobConfig( T jobConfig ); @Override boolean evaluates(); @Override boolean isUnconditional(); @Override String getXML(); @Override void loadXML( Node node, List<DatabaseMeta> databaseMetas, List<SlaveServer> slaveServers,
      Repository repository ); @Override void loadRep( Repository rep, ObjectId id_jobentry, List<DatabaseMeta> databases,
      List<SlaveServer> slaveServers ); @Override void saveRep( Repository rep, ObjectId id_job ); @Override Result execute( Result result, int i ); void setJobResultFailed( Result jobResult ); boolean isValid( T config ); VariableSpace getVariableSpace(); abstract List<String> getValidationWarnings( T config );  }
@Test public void testLoadXml() throws Exception { TestJobEntry jobEntry = new TestJobEntry(); BlockableJobConfig jobConfig = new BlockableJobConfig(); jobConfig.setJobEntryName( "Job Name" ); jobEntry.setJobConfig( jobConfig ); JobEntryCopy jec = new JobEntryCopy( jobEntry ); jec.setLocation( 0, 0 ); String xml = jec.getXML(); Document d = XMLHandler.loadXMLString( xml ); TestJobEntry jobEntry2 = new TestJobEntry(); jobEntry2.loadXML( d.getDocumentElement(), null, null, null ); BlockableJobConfig jobConfig2 = jobEntry2.getJobConfig(); assertEquals( jobConfig.getJobEntryName(), jobConfig2.getJobEntryName() ); }