2015-07-09 3 views
0

Я пытаюсь создать пользовательский сценарий поставщика для Rule Designer и создал плагин, чтобы выполнить его через Run Configurations. Я могу создать плагин и запустить DVS Runner; однако, я получаю NullPointerException в IlrDVSRunner. Я не могу разрешить исключение всеми способами. Любая помощь будет высоко оценен.DSV: Custome Сценарий Provider - NullPointerException

MotorScenarioProvider.java

public class MotorScenarioProvider implements IlrScenarioProvider, Serializable { 
private static final long serialVersionUID = 20150702L; 

public MotorScenarioProvider() { 
    super(); 
    System.out.println("MotorScenarioProvider - Constructor"); 
} 

public void initialize(IlrScenarioSuiteExecutionContext context) 
     throws IlrInitializationException { 
    System.out.println("MotorScenarioProvider - Initialize"); 
} 

public int getScenarioCount() throws IlrScenarioProviderException { 
    System.out.println("MotorScenarioProvider - getScenarioCount"); 
    return 1; 
} 

public IlrScenario getScenarioAt(int indx) 
     throws IlrScenarioProviderException { 
    System.out.println("MotorScenarioProvider - getScenarioAt"); 

    IlrScenarioImpl scenario = new IlrScenarioImpl(); 
    Map<String, Object> inputParameters = new HashMap<String, Object>(); 

    //Setting Blank Scenario for testing purpose 
    scenario.setName("Scenario 1"); 
    inputParameters.put("req", new Object()); 
    inputParameters.put("req", new Object()); 
    scenario.setInputParameters(inputParameters); 

    return scenario; 
} 

MotorScenarioProviderRunner.java

public class MotorScenarioProviderRunner extends IlrDVSRunner { 
/** 
* Create a DVS scenario suite descriptor 
* 
* @return The scenario suite descriptor 
*/ 
public IlrScenarioSuiteDescriptor createScenarioSuiteDescriptor() { 
    IlrScenarioSuiteDescriptorFactory scenarioSuiteDescriptorFactory = new IlrScenarioSuiteDescriptorFactory(); 
    IlrScenarioFormatDescriptor formatDescriptor = IlrScenarioFormatDescriptorFactory 
      .getInstance().createScenarioFormatDescriptor(); 
    formatDescriptor 
     .setScenarioProviderClassName(MotorScenarioProvider.class.getName()); 
    IlrScenarioSuiteDescriptor suiteDescriptor = scenarioSuiteDescriptorFactory 
      .createScenarioSuiteDescriptor(formatDescriptor); 
    suiteDescriptor.setKPIEnabled(false); 
    suiteDescriptor.setTestEnabled(true); 
    suiteDescriptor.setProductionRulesetArchive(new IlrRulesetArchive()); 
    System.out.println("MotorScenarioProviderRunner: createScenarioSuiteDescriptor"); 

    suiteDescriptor.add("SCENARIO_NAME", "Scenario 1"); 

    return suiteDescriptor; 
} 

/** 
* The main method run from the {@link IlrDVSLaunchConfigurationDelegate} 
* launch method. 
* 
* @param args 
*   The args needed to run the scenarios and build the scenario 
*   suite descriptor. 
*/ 
public static void main(String[] args) { 
    MotorScenarioProviderRunner runner = new MotorScenarioProviderRunner(); 
    String[] data = runner.extractCustomArgs(args); 
    // TODO read the custom parameters from the 'data' attribute and not 
    // from the 'args' attribute 
    System.out.println("MotorScenarioProviderRunner: main"); 

    try { 
     IlrScenarioSuiteDescriptor scenarioSuite = runner 
       .createScenarioSuiteDescriptor(); 

     if(scenarioSuite == null) 
      System.out.println("scenarioSuite is NULL"); 
     if(args == null) 
      System.out.println("args is NULL"); 

     runner.run(args, scenarioSuite); **//EXCEPTION OCCURS HERE** 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} } 

ответ

0

я выяснял решение этого.

На самом деле, методы IlrDVSRunner.Run ищут тип конфигурации запуска, то есть запуск или отладка в 3-х местах в custum args auto, вставленный из конфигурации запуска.

Первый аргумент в пользовательских аргументов - это пользовательские данные, которые мы предоставим DVS Runner. В моем случае это был мой Провайдер сценария класса, который добавляет данные в сценарий. Поэтому, когда я обновил конфигурацию запуска, поставлю текстовый ящик , который предоставит моему поставщику сценариев класс, в конечном итоге я получаю решение моей проблемы.

Вот мой сценарий Provider XML, который может быть использован для выполнения \ отлаживать XMLs непосредственно в Rule Designer: XML Scenario Provider

Спасибо всем

0

Проблема заключается в том, что вы не загрузили архив набора правил.

Вместо:

suiteDescriptor.setProductionRulesetArchive(new IlrRulesetArchive()); 

использовать что-то вдоль линий:

JarInputStream is = new JarInputStream(new FileInputStream(rulesetJar)); 
IlrRulesetArchive ruleset = IlrRulesetArchive.extractArchive(new IlrJarArchiveLoader(is)); 
suiteDescriptor.setProductionRulesetArchive(ruleset); 
+0

Я уже пытался это задолго до вашего ответа. Но все же NullPointerException. –