Когда я тестировал свой код в одном классе "DeploiementController", он работал хорошо. Но теперь я разделил код на 2 класса. Но я столкнулся с проблемой ... Моя IDE хочет, чтобы я поставил в моей переменной "private stati c", поэтому я сделал это. Я знаю, что CategorieNamespace catnamespace = categorienamespacerepository.findBynamespacename(namespacename);
может быть нулевым, это нормально, и поэтому я проверяю его сразу после.
Но проблема в том, что теперь он имеет sh! с исключением нулевого указателя ..
Мой класс DeploiementController:
package com.ent.intra.devops.endpoint;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.ent.intra.devops.errors.NotFoundException;
import com.ent.intra.devops.getterclasses.DeploiementObject;
import com.ent.intra.devops.infrastructure.historydeployment.GenerateNewDeploymentHistory;
@RestController
public class DeploiementController {
//ajouter un element dans historique de deploiement
@PostMapping(value = "/addhistorydeployment")
public String AddHistoriqueDeployment(@RequestBody DeploiementObject deploiementrecu) {
if(deploiementrecu == null) {
throw new NotFoundException("L'objet reçu est vide...");
}else {
String Resultat = GenerateNewDeploymentHistory.AddHistoriqueDeploymentMethod(deploiementrecu);
return Resultat;
}
}
}
Класс GenerateNewDeploiementHistory:
package com.ent.intra.devops.infrastructure.historydeployment;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import com.ent.intra.devops.accessingdatamysql.CategorieNamespaceRepository;
import com.ent.intra.devops.accessingdatamysql.HistoriqueDeploiementRepository;
import com.ent.intra.devops.accessingdatamysql.ServiceNamespaceRepository;
import com.ent.intra.devops.errors.NotFoundException;
import com.ent.intra.devops.getterclasses.CategorieNamespace;
import com.ent.intra.devops.getterclasses.DeploiementObject;
import com.ent.intra.devops.getterclasses.HistoriqueDeploiementObjectInsertion;
import com.ent.intra.devops.getterclasses.ServicesNamespace;
public class GenerateNewDeploymentHistory {
@Autowired
private static HistoriqueDeploiementRepository historiquedeploiementrepository;
@Autowired
private static CategorieNamespaceRepository categorienamespacerepository;
@Autowired
private static ServiceNamespaceRepository servicenamespacerepository;
public static String AddHistoriqueDeploymentMethod(DeploiementObject deploiementrecu) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date date = new Date();
Integer IdNamespace = 0;
Integer IdService = 0;
String namespacename = deploiementrecu.getNamespace();
String servicename = deploiementrecu.getService();
String dateajout = dateFormat.format(date);
System.out.println(namespacename);
// Problem appears here "CategorieNamespace catnamespace...."
// 2020-04-15 11:21:26.743 ERROR 14868 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]
// : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
// [Request processing failed; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException: null
CategorieNamespace catnamespace = categorienamespacerepository.findBynamespacename(namespacename);
ServicesNamespace servnamespace = servicenamespacerepository.findByservicename(servicename);
try {
if(catnamespace != null) {
IdNamespace = catnamespace.getId();
System.out.println("id namespace : " +IdNamespace);
}else {
CategorieNamespace NewNameSpace = new CategorieNamespace();
NewNameSpace.setNamespacename(namespacename);
NewNameSpace.setDateajout(dateajout);
categorienamespacerepository.save(NewNameSpace);
IdNamespace = NewNameSpace.getId();
System.out.println("L'ID Namespace vient d'être crée : "+ IdNamespace);
}
}catch (Exception ex) {
throw new NotFoundException("La recherche du Namespace a échoué.");
}
try {
if(servnamespace != null) {
IdService = servnamespace.getId();
System.out.println("id Service : " +IdService);
}else {
ServicesNamespace NewService = new ServicesNamespace();
NewService.setServicename(servicename);
NewService.setDateajout(dateajout);
servicenamespacerepository.save(NewService);
IdService = NewService.getId();
System.out.println("L'ID Service vient d'être crée : "+ IdService);
}
}catch (Exception ex) {
throw new NotFoundException("La recherche du Service a échoué.");
}
HistoriqueDeploiementObjectInsertion NewHistorique = new HistoriqueDeploiementObjectInsertion();
NewHistorique.setIdnamespace(IdNamespace);
NewHistorique.setIdservicenamespace(IdService);
NewHistorique.setTagversion(deploiementrecu.getTagversion());
NewHistorique.setDatedeploiement(deploiementrecu.getDatedeploiement());
NewHistorique.setDatecreationtag(deploiementrecu.getDatecreationtag());
NewHistorique.setActionby(deploiementrecu.getActionby());
NewHistorique.setDateajout(dateajout);
historiquedeploiementrepository.save(NewHistorique);
return dateajout;
}
}
Я надеюсь понять, что не так :)