как конвертировать случайный тип в java ArrayList <String>? - PullRequest
0 голосов
/ 18 апреля 2020

Я использую шаблоны правил drools для компиляции моих правил.

При применении шаблона я использовал HashMap с Object в качестве типа значений.
Из-за этого при компиляции правил тип данных случайным образом изменяется на другие типы, такие как String [], (String, String) и т. Д. c ..

, и я получаю несоответствие типов ошибки при компиляции моих правил.

Я пытаюсь убедиться, что мой параметр правила имеет тип ArrayList, но я не знаю, как преобразовать его, поскольку его тип изменяется случайным образом.

Вот как я применил шаблон правила:

private List<String> connections = new ArrayList<>();
connections.add("\""+connection1+"\"");
connections.add("\""+connection2+"\"");
String name ="myname";
templatepath = new File("mypath").getPath();

Map<String, Object> data = new HashMap<String, Object>();
ObjectDataCompiler objectDataCompiler = new ObjectDataCompiler();
data.put("connections", connections);
data.put("name",name);

objectDataCompiler.compile(Arrays.asList(data), newFileInputStream(templatePath));

это шаблон правила:

template header

name
connections

imports ..

template "split"

rule "rule_@{name}" @Propagation(IMMEDIATE)
no-loop true

when

    d: Data()

then

    d.setConnections(@{connections});

end

end template

, а вот класс данных:

public class Data {
   List <String> connections;

   public Decision() {
        connections = new ArrayList<>();
    }

   public void setConnections(List<String> connections){
      this.connections= connections;
    }

    public List<String> getConnections(){
      return this.connections;
   }

}

при проверке журналов правило компилируется следующим образом

rule "rule_myname" @Propagation(IMMEDIATE)
when

    d: Data()
then        

    d.setConnections(["connection1", "connection2"]) ;

end

, и я получаю следующую ошибку: Syntax error on token "(", Expression expected after this token

...