From ce77a716f16a120cf69348323fbc00348040e947 Mon Sep 17 00:00:00 2001 From: Santeri Korri Date: Tue, 25 Feb 2025 15:33:34 +0200 Subject: [PATCH] OK-798 Siivottu actorbeaneja --- .../impl/LaskentakaavaServiceImpl.java | 10 +- ...intaperusteetRekursiivisestiActorBean.java | 221 ------------------ .../util/HakukohteenValintaperusteetUtil.java | 117 ++++++++++ .../ValintaperusteetUtil.java} | 118 +--------- 4 files changed, 125 insertions(+), 341 deletions(-) delete mode 100644 valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/actors/HaeHakukohteenValintaperusteetRekursiivisestiActorBean.java create mode 100644 valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/util/HakukohteenValintaperusteetUtil.java rename valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/{actors/HaeValintaperusteetRekursiivisestiActorBean.java => util/ValintaperusteetUtil.java} (51%) diff --git a/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/LaskentakaavaServiceImpl.java b/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/LaskentakaavaServiceImpl.java index 55719befc..9432dc710 100644 --- a/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/LaskentakaavaServiceImpl.java +++ b/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/LaskentakaavaServiceImpl.java @@ -42,10 +42,10 @@ import fi.vm.sade.service.valintaperusteet.service.exception.LaskentakaavaEiValidiException; import fi.vm.sade.service.valintaperusteet.service.exception.LaskentakaavaMuodostaaSilmukanException; import fi.vm.sade.service.valintaperusteet.service.impl.actors.ActorService; -import fi.vm.sade.service.valintaperusteet.service.impl.actors.HaeHakukohteenValintaperusteetRekursiivisestiActorBean; -import fi.vm.sade.service.valintaperusteet.service.impl.actors.HaeValintaperusteetRekursiivisestiActorBean; +import fi.vm.sade.service.valintaperusteet.service.impl.util.HakukohteenValintaperusteetUtil; import fi.vm.sade.service.valintaperusteet.service.impl.util.LaskentakaavaCache; import fi.vm.sade.service.valintaperusteet.service.impl.util.ObjectGraphUtil; +import fi.vm.sade.service.valintaperusteet.service.impl.util.ValintaperusteetUtil; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -631,8 +631,7 @@ private List convertToAvaimet( Map valintaperusteet = new HashMap<>(); for (Funktiokutsu kutsu : hakukohteenFunktiokutsut) { for (Funktiokutsu k : ObjectGraphUtil.extractObjectsOfType(kutsu, Funktiokutsu.class)) { - HaeValintaperusteetRekursiivisestiActorBean.kasitteleLoppuun( - k, valintaperusteet, hakukohteenValintaperusteet); + ValintaperusteetUtil.haeAvaimet(k, valintaperusteet, hakukohteenValintaperusteet); } } List result = new ArrayList<>(valintaperusteet.values()); @@ -673,8 +672,7 @@ public HakukohteenValintaperusteAvaimetDTO findHakukohteenAvaimet(String oid) { new HakukohteenValintaperusteAvaimetDTO(); for (Funktiokutsu kutsu : funktiokutsut) { for (Funktiokutsu k : ObjectGraphUtil.extractObjectsOfType(kutsu, Funktiokutsu.class)) { - HaeHakukohteenValintaperusteetRekursiivisestiActorBean.kasitteleLoppuun( - k, valintaperusteet); + HakukohteenValintaperusteetUtil.haeAvaimet(k, valintaperusteet); } } return valintaperusteet; diff --git a/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/actors/HaeHakukohteenValintaperusteetRekursiivisestiActorBean.java b/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/actors/HaeHakukohteenValintaperusteetRekursiivisestiActorBean.java deleted file mode 100644 index 66d22a542..000000000 --- a/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/actors/HaeHakukohteenValintaperusteetRekursiivisestiActorBean.java +++ /dev/null @@ -1,221 +0,0 @@ -package fi.vm.sade.service.valintaperusteet.service.impl.actors; - -import static fi.vm.sade.service.valintaperusteet.service.impl.actors.creators.SpringExtension.SpringExtProvider; - -import akka.actor.ActorRef; -import akka.actor.ActorSystem; -import akka.actor.Status; -import akka.actor.UntypedAbstractActor; -import akka.event.Logging; -import akka.event.LoggingAdapter; -import fi.vm.sade.service.valintaperusteet.dao.FunktiokutsuDAO; -import fi.vm.sade.service.valintaperusteet.dto.HakukohteenValintaperusteAvaimetDTO; -import fi.vm.sade.service.valintaperusteet.dto.model.Valintaperustelahde; -import fi.vm.sade.service.valintaperusteet.model.Arvokonvertteriparametri; -import fi.vm.sade.service.valintaperusteet.model.Arvovalikonvertteriparametri; -import fi.vm.sade.service.valintaperusteet.model.Funktioargumentti; -import fi.vm.sade.service.valintaperusteet.model.Funktiokutsu; -import fi.vm.sade.service.valintaperusteet.model.ValintaperusteViite; -import fi.vm.sade.service.valintaperusteet.service.impl.actors.messages.UusiHakukohteenValintaperusteRekursio; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; -import javax.inject.Named; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * Created with IntelliJ IDEA. User: kjsaila Date: 17/12/13 Time: 13:10 To change this template use - * File | Settings | File Templates. - */ -@Named("HaeHakukohteenValintaperusteetRekursiivisestiActorBean") -@Component -@org.springframework.context.annotation.Scope(value = "prototype") -public class HaeHakukohteenValintaperusteetRekursiivisestiActorBean extends UntypedAbstractActor { - - LoggingAdapter log = Logging.getLogger(getContext().system(), this); - - private int funktiokutsuLapset = 0; - - @Autowired private FunktiokutsuDAO funktiokutsuDAO; - - private Funktiokutsu original; - private HakukohteenValintaperusteAvaimetDTO valintaperusteet; - - private ActorRef actorParent = null; - - public HaeHakukohteenValintaperusteetRekursiivisestiActorBean() {} - - public static Funktiokutsu kasitteleLoppuun( - Funktiokutsu funktiokutsu, HakukohteenValintaperusteAvaimetDTO valintaperusteet) { - List tunnisteet = new ArrayList(); - List arvot = new ArrayList(); - List hylkaysperusteet = new ArrayList(); - List minimit = new ArrayList(); - List maksimit = new ArrayList(); - List palautaHaetutArvot = new ArrayList(); - for (ValintaperusteViite vp : funktiokutsu.getValintaperusteviitteet()) { - Valintaperustelahde lahde = vp.getLahde(); - if (lahde.equals(Valintaperustelahde.HAKUKOHTEEN_ARVO) - || lahde.equals(Valintaperustelahde.HAKUKOHTEEN_SYOTETTAVA_ARVO)) { - tunnisteet.add(vp.getTunniste()); - } - if (funktiokutsu.getArvokonvertteriparametrit() != null - && funktiokutsu.getArvokonvertteriparametrit().size() > 0) { - for (Arvokonvertteriparametri ap : funktiokutsu.getArvokonvertteriparametrit()) { - if (ap.getArvo().contains("hakukohde") && ap.getArvo().startsWith("{{")) { - arvot.add(ap.getArvo()); - } - if (ap.getHylkaysperuste().contains("hakukohde") - && ap.getHylkaysperuste().startsWith("{{")) { - hylkaysperusteet.add(ap.getHylkaysperuste()); - } - } - } else if (funktiokutsu.getArvovalikonvertteriparametrit() != null - && funktiokutsu.getArvovalikonvertteriparametrit().size() > 0) { - for (Arvovalikonvertteriparametri ap : funktiokutsu.getArvovalikonvertteriparametrit()) { - if (ap.getMinValue().contains("hakukohde") && ap.getMinValue().startsWith("{{")) { - minimit.add(ap.getMinValue()); - } - if (ap.getMaxValue().contains("hakukohde") && ap.getMaxValue().startsWith("{{")) { - maksimit.add(ap.getMaxValue()); - } - if (ap.getPalautaHaettuArvo().contains("hakukohde") - && ap.getPalautaHaettuArvo().startsWith("{{")) { - palautaHaetutArvot.add(ap.getPalautaHaettuArvo()); - } - } - } - } - if (tunnisteet.size() > 0) { - if (valintaperusteet.getTunnisteet() == null) { - valintaperusteet.setTunnisteet(tunnisteet); - } else { - List temp = valintaperusteet.getTunnisteet(); - temp.addAll(tunnisteet); - valintaperusteet.setTunnisteet(temp); - } - } - - if (arvot.size() > 0) { - if (valintaperusteet.getArvot() == null) { - valintaperusteet.setArvot(arvot); - } else { - List temp = valintaperusteet.getArvot(); - temp.addAll(arvot); - valintaperusteet.setArvot(temp); - } - } - - if (hylkaysperusteet.size() > 0) { - if (valintaperusteet.getHylkaysperusteet() == null) { - valintaperusteet.setHylkaysperusteet(hylkaysperusteet); - } else { - List temp = valintaperusteet.getHylkaysperusteet(); - temp.addAll(hylkaysperusteet); - valintaperusteet.setHylkaysperusteet(temp); - } - } - - if (minimit.size() > 0) { - if (valintaperusteet.getMinimit() == null) { - valintaperusteet.setMinimit(minimit); - } else { - List temp = valintaperusteet.getMinimit(); - temp.addAll(minimit); - valintaperusteet.setMinimit(temp); - } - } - - if (maksimit.size() > 0) { - if (valintaperusteet.getMaksimit() == null) { - valintaperusteet.setMaksimit(maksimit); - } else { - List temp = valintaperusteet.getMaksimit(); - temp.addAll(maksimit); - valintaperusteet.setMaksimit(temp); - } - } - - if (palautaHaetutArvot.size() > 0) { - if (valintaperusteet.getPalautaHaettutArvot() == null) { - valintaperusteet.setPalautaHaettutArvot(palautaHaetutArvot); - } else { - List temp = valintaperusteet.getPalautaHaettutArvot(); - temp.addAll(palautaHaetutArvot); - valintaperusteet.setPalautaHaettutArvot(temp); - } - } - - return funktiokutsu; - } - - public void onReceive(Object message) throws Exception { - if (message instanceof Funktiokutsu) { - Funktiokutsu response = (Funktiokutsu) message; - for (Funktioargumentti arg : original.getFunktioargumentit()) { - if (arg.getFunktiokutsuChild() != null - && arg.getFunktiokutsuChild().getId().equals(response.getId())) { - arg.setFunktiokutsuChild(response); - } else if (arg.getLaskentakaavaChild() != null) { - arg.getLaskentakaavaChild().setFunktiokutsu(response); - } - } - funktiokutsuLapset--; - if (funktiokutsuLapset <= 0) { - original = kasitteleLoppuun(original, valintaperusteet); - ActorRef par = getContext().parent(); - if (par.equals(actorParent)) { - par.tell(original, getSelf()); - } else { - actorParent.tell(original, getSelf()); - } - getContext().stop(self()); - } - } else if (message instanceof UusiHakukohteenValintaperusteRekursio) { - actorParent = sender(); - UusiHakukohteenValintaperusteRekursio viesti = - (UusiHakukohteenValintaperusteRekursio) message; - // original = funktiokutsuDAO.getFunktiokutsunValintaperusteet(viesti.getId()); - valintaperusteet = viesti.getValintaperusteet(); - if (original.getFunktioargumentit() == null || original.getFunktioargumentit().size() == 0) { - self().tell(original, getSelf()); - } else { - funktiokutsuLapset = original.getFunktioargumentit().size(); - for (Funktioargumentti arg : original.getFunktioargumentit()) { - ActorSystem system = getContext().system(); - ActorRef child = - getContext() - .actorOf( - SpringExtProvider.get(system) - .props("HaeHakukohteenValintaperusteetRekursiivisestiActorBean"), - UUID.randomUUID().toString().replaceAll("-", "")); - if (arg.getFunktiokutsuChild() != null) { - child.tell( - new UusiHakukohteenValintaperusteRekursio( - arg.getFunktiokutsuChild().getId(), viesti.getValintaperusteet()), - self()); - } else if (arg.getLaskentakaavaChild() != null) { - child.tell( - new UusiHakukohteenValintaperusteRekursio( - arg.getLaskentakaavaChild().getFunktiokutsu().getId(), - viesti.getValintaperusteet()), - self()); - } - } - } - } else if (message instanceof Exception) { - ActorRef par = getContext().parent(); - if (par.equals(actorParent)) { - par.tell(message, ActorRef.noSender()); - } else { - Throwable ex = (Throwable) message; - actorParent.tell(new Status.Failure(ex), ActorRef.noSender()); - } - getContext().stop(self()); - } else { - unhandled(message); - getContext().stop(getSelf()); - } - } -} diff --git a/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/util/HakukohteenValintaperusteetUtil.java b/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/util/HakukohteenValintaperusteetUtil.java new file mode 100644 index 000000000..e9b4581d9 --- /dev/null +++ b/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/util/HakukohteenValintaperusteetUtil.java @@ -0,0 +1,117 @@ +package fi.vm.sade.service.valintaperusteet.service.impl.util; + +import fi.vm.sade.service.valintaperusteet.dto.HakukohteenValintaperusteAvaimetDTO; +import fi.vm.sade.service.valintaperusteet.dto.model.Valintaperustelahde; +import fi.vm.sade.service.valintaperusteet.model.Arvokonvertteriparametri; +import fi.vm.sade.service.valintaperusteet.model.Arvovalikonvertteriparametri; +import fi.vm.sade.service.valintaperusteet.model.Funktiokutsu; +import fi.vm.sade.service.valintaperusteet.model.ValintaperusteViite; +import java.util.ArrayList; +import java.util.List; + +public class HakukohteenValintaperusteetUtil { + + public static Funktiokutsu haeAvaimet( + Funktiokutsu funktiokutsu, HakukohteenValintaperusteAvaimetDTO valintaperusteet) { + List tunnisteet = new ArrayList(); + List arvot = new ArrayList(); + List hylkaysperusteet = new ArrayList(); + List minimit = new ArrayList(); + List maksimit = new ArrayList(); + List palautaHaetutArvot = new ArrayList(); + for (ValintaperusteViite vp : funktiokutsu.getValintaperusteviitteet()) { + Valintaperustelahde lahde = vp.getLahde(); + if (lahde.equals(Valintaperustelahde.HAKUKOHTEEN_ARVO) + || lahde.equals(Valintaperustelahde.HAKUKOHTEEN_SYOTETTAVA_ARVO)) { + tunnisteet.add(vp.getTunniste()); + } + if (funktiokutsu.getArvokonvertteriparametrit() != null + && funktiokutsu.getArvokonvertteriparametrit().size() > 0) { + for (Arvokonvertteriparametri ap : funktiokutsu.getArvokonvertteriparametrit()) { + if (ap.getArvo().contains("hakukohde") && ap.getArvo().startsWith("{{")) { + arvot.add(ap.getArvo()); + } + if (ap.getHylkaysperuste().contains("hakukohde") + && ap.getHylkaysperuste().startsWith("{{")) { + hylkaysperusteet.add(ap.getHylkaysperuste()); + } + } + } else if (funktiokutsu.getArvovalikonvertteriparametrit() != null + && funktiokutsu.getArvovalikonvertteriparametrit().size() > 0) { + for (Arvovalikonvertteriparametri ap : funktiokutsu.getArvovalikonvertteriparametrit()) { + if (ap.getMinValue().contains("hakukohde") && ap.getMinValue().startsWith("{{")) { + minimit.add(ap.getMinValue()); + } + if (ap.getMaxValue().contains("hakukohde") && ap.getMaxValue().startsWith("{{")) { + maksimit.add(ap.getMaxValue()); + } + if (ap.getPalautaHaettuArvo().contains("hakukohde") + && ap.getPalautaHaettuArvo().startsWith("{{")) { + palautaHaetutArvot.add(ap.getPalautaHaettuArvo()); + } + } + } + } + if (tunnisteet.size() > 0) { + if (valintaperusteet.getTunnisteet() == null) { + valintaperusteet.setTunnisteet(tunnisteet); + } else { + List temp = valintaperusteet.getTunnisteet(); + temp.addAll(tunnisteet); + valintaperusteet.setTunnisteet(temp); + } + } + + if (arvot.size() > 0) { + if (valintaperusteet.getArvot() == null) { + valintaperusteet.setArvot(arvot); + } else { + List temp = valintaperusteet.getArvot(); + temp.addAll(arvot); + valintaperusteet.setArvot(temp); + } + } + + if (hylkaysperusteet.size() > 0) { + if (valintaperusteet.getHylkaysperusteet() == null) { + valintaperusteet.setHylkaysperusteet(hylkaysperusteet); + } else { + List temp = valintaperusteet.getHylkaysperusteet(); + temp.addAll(hylkaysperusteet); + valintaperusteet.setHylkaysperusteet(temp); + } + } + + if (minimit.size() > 0) { + if (valintaperusteet.getMinimit() == null) { + valintaperusteet.setMinimit(minimit); + } else { + List temp = valintaperusteet.getMinimit(); + temp.addAll(minimit); + valintaperusteet.setMinimit(temp); + } + } + + if (maksimit.size() > 0) { + if (valintaperusteet.getMaksimit() == null) { + valintaperusteet.setMaksimit(maksimit); + } else { + List temp = valintaperusteet.getMaksimit(); + temp.addAll(maksimit); + valintaperusteet.setMaksimit(temp); + } + } + + if (palautaHaetutArvot.size() > 0) { + if (valintaperusteet.getPalautaHaettutArvot() == null) { + valintaperusteet.setPalautaHaettutArvot(palautaHaetutArvot); + } else { + List temp = valintaperusteet.getPalautaHaettutArvot(); + temp.addAll(palautaHaetutArvot); + valintaperusteet.setPalautaHaettutArvot(temp); + } + } + + return funktiokutsu; + } +} diff --git a/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/actors/HaeValintaperusteetRekursiivisestiActorBean.java b/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/util/ValintaperusteetUtil.java similarity index 51% rename from valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/actors/HaeValintaperusteetRekursiivisestiActorBean.java rename to valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/util/ValintaperusteetUtil.java index dc72b0fbb..2cb5abcc9 100644 --- a/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/actors/HaeValintaperusteetRekursiivisestiActorBean.java +++ b/valintaperusteet-service/src/main/java/fi/vm/sade/service/valintaperusteet/service/impl/util/ValintaperusteetUtil.java @@ -1,55 +1,23 @@ -package fi.vm.sade.service.valintaperusteet.service.impl.actors; +package fi.vm.sade.service.valintaperusteet.service.impl.util; -import static fi.vm.sade.service.valintaperusteet.service.impl.actors.creators.SpringExtension.SpringExtProvider; - -import akka.actor.ActorRef; -import akka.actor.ActorSystem; -import akka.actor.Status; -import akka.actor.UntypedAbstractActor; -import fi.vm.sade.service.valintaperusteet.dao.FunktiokutsuDAO; import fi.vm.sade.service.valintaperusteet.dto.ValintaperusteDTO; import fi.vm.sade.service.valintaperusteet.dto.model.Valintaperustelahde; import fi.vm.sade.service.valintaperusteet.model.Arvokonvertteriparametri; import fi.vm.sade.service.valintaperusteet.model.Arvovalikonvertteriparametri; -import fi.vm.sade.service.valintaperusteet.model.Funktioargumentti; import fi.vm.sade.service.valintaperusteet.model.Funktiokutsu; import fi.vm.sade.service.valintaperusteet.model.ValintaperusteViite; import fi.vm.sade.service.valintaperusteet.service.impl.LaskentakaavaServiceImpl; -import fi.vm.sade.service.valintaperusteet.service.impl.actors.messages.UusiValintaperusteRekursio; -import fi.vm.sade.service.valintaperusteet.service.impl.util.FunktiokutsuCache; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.regex.Matcher; -import javax.inject.Named; import org.modelmapper.ModelMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Named("HaeValintaperusteetRekursiivisestiActorBean") -@Component -@org.springframework.context.annotation.Scope(value = "prototype") -public class HaeValintaperusteetRekursiivisestiActorBean extends UntypedAbstractActor { - private static Logger LOG = - LoggerFactory.getLogger(HaeValintaperusteetRekursiivisestiActorBean.class); - - private int funktiokutsuLapset = 0; - - @Autowired private FunktiokutsuDAO funktiokutsuDAO; - - private Funktiokutsu original; - private Map valintaperusteet; - private Map hakukohteenValintaperusteet; - - private ActorRef actorParent = null; - @Autowired private FunktiokutsuCache funktiokutsuCache; - - public HaeValintaperusteetRekursiivisestiActorBean() {} +public class ValintaperusteetUtil { + private static Logger LOG = LoggerFactory.getLogger(ValintaperusteetUtil.class); private static String haeTunniste( String mustache, Map hakukohteenValintaperusteet) { @@ -67,7 +35,7 @@ private static String haeTunniste( } } - public static Funktiokutsu kasitteleLoppuun( + public static Funktiokutsu haeAvaimet( Funktiokutsu funktiokutsu, Map valintaperusteet, Map hakukohteenValintaperusteet) { @@ -150,82 +118,4 @@ public static Funktiokutsu kasitteleLoppuun( } return funktiokutsu; } - - public void onReceive(Object message) { - if (message instanceof Funktiokutsu) { - Funktiokutsu response = (Funktiokutsu) message; - for (Funktioargumentti arg : original.getFunktioargumentit()) { - if (arg.getFunktiokutsuChild() != null - && arg.getFunktiokutsuChild().getId().equals(response.getId())) { - arg.setFunktiokutsuChild(response); - } else if (arg.getLaskentakaavaChild() != null - && arg.getLaskentakaavaChild().getFunktiokutsu() == null) { - arg.getLaskentakaavaChild().setFunktiokutsu(response); - } - } - funktiokutsuLapset--; - if (funktiokutsuLapset <= 0) { - original = kasitteleLoppuun(original, valintaperusteet, hakukohteenValintaperusteet); - ActorRef par = getContext().parent(); - if (par.equals(actorParent)) { - par.tell(original, getSelf()); - } else { - actorParent.tell(original, getSelf()); - } - getContext().stop(self()); - } - } else if (message instanceof UusiValintaperusteRekursio) { - actorParent = sender(); - UusiValintaperusteRekursio viesti = (UusiValintaperusteRekursio) message; - original = funktiokutsuCache.get(viesti.getId()); - if (null == original) { - // original = funktiokutsuDAO.getFunktiokutsunValintaperusteet(viesti.getId()); - funktiokutsuCache.add(viesti.getId(), original); - } - valintaperusteet = viesti.getValintaperusteet(); - hakukohteenValintaperusteet = viesti.getHakukohteenValintaperusteet(); - if (original.getFunktioargumentit() == null || original.getFunktioargumentit().size() == 0) { - self().tell(original, getSelf()); - } else { - funktiokutsuLapset = original.getFunktioargumentit().size(); - - for (Funktioargumentti arg : original.getFunktioargumentit()) { - ActorSystem system = getContext().system(); - ActorRef child = - getContext() - .actorOf( - SpringExtProvider.get(system) - .props("HaeValintaperusteetRekursiivisestiActorBean"), - UUID.randomUUID().toString().replaceAll("-", "")); - if (arg.getFunktiokutsuChild() != null) { - child.tell( - new UusiValintaperusteRekursio( - arg.getFunktiokutsuChild().getId(), - viesti.getValintaperusteet(), - viesti.getHakukohteenValintaperusteet()), - self()); - } else if (arg.getLaskentakaavaChild() != null) { - child.tell( - new UusiValintaperusteRekursio( - arg.getLaskentakaavaChild().getFunktiokutsu().getId(), - viesti.getValintaperusteet(), - viesti.getHakukohteenValintaperusteet()), - self()); - } - } - } - } else if (message instanceof Exception) { - ActorRef par = getContext().parent(); - if (par.equals(actorParent)) { - par.tell(message, ActorRef.noSender()); - } else { - Throwable ex = (Throwable) message; - actorParent.tell(new Status.Failure(ex), ActorRef.noSender()); - } - getContext().stop(self()); - } else { - unhandled(message); - getContext().stop(getSelf()); - } - } }