Hello,
I've created a Spring service by adding the @RooService annotation to an interface and providing an implementation (see java code below) and I now systematically get the following NPE from the Roo Shell:
Here are the interface and the classes:Code:NullPointerException at org.springframework.roo.addon.layers.service.ServiceInterfaceLocatorImpl.getServiceInterfaces(ServiceInterfaceLocatorImpl.java:44)
Code:import java.util.Map; import org.springframework.roo.addon.layers.service.RooService; import com.kadjoukor.domain.Member; import com.kadjoukor.domain.Message; @RooService(domainTypes = Message.class) public interface MessageService { Map<Member, Message> retrieveLatestMessages(Member member); }Code:import java.util.Collection; import java.util.HashMap; import java.util.Map; import com.kadjoukor.domain.Member; import com.kadjoukor.domain.Message; public class MessageServiceImpl implements MessageService { @Override public Map<Member, Message> retrieveLatestMessages(Member member) { Collection<Message> sentMessages = member.getSentMessages(); Collection<Message> receivedMessages = member.getReceivedMessages(); Map<Member, Message> latestMessages = new HashMap<Member, Message>(); for (Message receivedMessage : receivedMessages) { Member sender = receivedMessage.getSender(); latestMessages.put(sender, receivedMessage); } for (Message sentMessage : sentMessages) { Member recipient = sentMessage.getRecipient(); if (sentMessage.getSendDate().after(latestMessages.get(recipient).getSendDate())) { latestMessages.put(recipient, sentMessage); } } return latestMessages; } }I am pretty sure it is something to do with a reserved keyword as all my other service work fine and don't cause the Roo shell to throw such an exception.Code:import java.util.Date; import javax.persistence.Column; import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.roo.addon.equals.RooEquals; import org.springframework.roo.addon.javabean.RooJavaBean; import org.springframework.roo.addon.jpa.activerecord.RooJpaActiveRecord; import org.springframework.roo.addon.tostring.RooToString; @RooJavaBean @RooToString @RooEquals @RooJpaActiveRecord public class Message { @NotNull @ManyToOne private Member sender; @NotNull @ManyToOne private Member recipient; @NotNull @Temporal(TemporalType.TIMESTAMP) @DateTimeFormat(pattern = "dd/MM/yyyy HH:mm:ss") private Date sendDate; @NotNull @Lob @Size(min = 5, max = 500) @Column(length = 500) private String message; }
Regards,
J.
P.S. I have opened an jira here: https://jira.springsource.org/browse/ROO-3308


Reply With Quote
