Im creating a Discord Bot using SpringBoot Project (with H2 DB) and i have a little problem on it.
Im trying to save an specific object (memberTributeRepository.save(member)
) using my repository class, but im getting a nullPointerException when put the autowired annotation.
Some one can help me?
Below are some excerpts from code:
REPOSITORY CLASS
@Repository
public interface MemberTributeRepository extends CrudRepository<MemberTribute, Long> {
}
Below, the class that im getting nullPointerException with Autowired annotation:
@Service
public class MemberTributeService {
@Autowired
MemberTributeRepository memberTributeRepository;
public String loadTributesFromApi() {
return ConectaApiAlbion.loadTributes();
}
public JSONArray processJsonFromApi() {
JSONArray jsonArray = new JSONArray(loadTributesFromApi());
return jsonArray;
}
public List<MemberTribute> buildListOfTributes() {
List<MemberTribute> listOfMemberTribute = new ArrayList<>();
for (int i = 0; i < processJsonFromApi().length(); i++) {
MemberTribute member = new MemberTribute();
member.setId(processJsonFromApi().getJSONObject(i).getString("Id"));
member.setGuildName(processJsonFromApi().getJSONObject(i).getString("GuildName"));
member.setName(processJsonFromApi().getJSONObject(i).getString("Name"));
Gathering gathering = buidingGathering(i);
member.setLifetimeStatistics(new LifetimeStatistics(gathering, LocalDateTime.now()));
listOfMemberTribute.add(member);
System.out.println("Salvando o membro: " + member.getName());
//NullPointer happens below, when i try to save my object 'member'
memberTributeRepository.save(member);
}
return listOfMemberTribute;
}
public Gathering buidingGathering(int i) {
Gathering gathering = new Gathering();
JSONObject PATH_TO_GATHERING = processJsonFromApi()
.getJSONObject(i)
.getJSONObject("LifetimeStatistics")
.getJSONObject("Gathering");
gathering.setTotalFibe(PATH_TO_GATHERING.getJSONObject("Fiber").getLong("Total"));
gathering.setTotalHide(PATH_TO_GATHERING.getJSONObject("Hide").getLong("Total"));
gathering.setTotalOre(PATH_TO_GATHERING.getJSONObject("Ore").getLong("Total"));
gathering.setTotalRock(PATH_TO_GATHERING.getJSONObject("Rock").getLong("Total"));
gathering.setTotalWood(PATH_TO_GATHERING.getJSONObject("Wood").getLong("Total"));
return gathering;
}
}
Now, the last one is the class that i use to call MemberTributeService
@Component
public class Start extends ListenerAdapter {
private static String AUTHOR = "";
public static void jdaBuilder () throws LoginException {
JDA jda = JDABuilder.createDefault("xxxxxxxxxxxxxxxTOKENxxxxxxxxxxxxxxxxxx").build();
jda.addEventListener(new Start());
}
@Override
public void onMessageReceived(MessageReceivedEvent event) {
MemberTributeService service = new MemberTributeService();
AUTHOR = event.getAuthor().getName();
if (event.getAuthor().isBot()) return;
if (event.getMessage().getContentRaw().startsWith("/bot")) {
if (event.getMessage().getContentRaw().toLowerCase().contains("tributos")) {
event.getChannel().sendMessage("Eai " + AUTHOR + ", só de boas? ").queue();
List<MemberTribute> listMemberTribute = service.buildListOfTributes();
for (int i = 0; i < listMemberTribute.size(); i++) {
event.getChannel().sendMessage("-------------------\n" + "Nome: " + listMemberTribute.get(i).getName() +
"\nTotal Fiber: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalFibe() +
"\nTotal Ore: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalOre() +
"\n Total Wood: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalWood() +
"\n Total Rock: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalRock() +
"\n Total Hide: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalHide())
.queue();
}
} else {
event.getChannel().sendMessage("Opa.. " + AUTHOR + ", não reconheci seu comando." +
"\n tenta utilizar /bot antes! ").queue();
}
}
}
}