test_class.file: guest/src/test/java/org/koenighotze/jee7hotel/guest/business/guestdataimport/GuestDataProcessorTest.java
test_class.identifier: GuestDataProcessorTest
test_case.body: @Test(expected = IllegalArgumentException.class)
      public void processThrowsExceptionIfInvalidEmail() throws Exception {
          new GuestDataProcessor().processItem("foo bar, invalidemail.de");
      }
test_case.class_method_signature: GuestDataProcessorTest.processThrowsExceptionIfInvalidEmail()
test_case.full_signature: @Test(expected = IllegalArgumentException.class) public void processThrowsExceptionIfInvalidEmail()
test_case.identifier: processThrowsExceptionIfInvalidEmail
test_case.invocations: processItem
test_case.modifiers: @Test(expected = IllegalArgumentException.class) public
test_case.parameters: ()
test_case.return: void
test_case.signature: void processThrowsExceptionIfInvalidEmail()
focal_class.declarator: LOGGER = Logger.getLogger(GuestDataProcessor.class.getName())
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOGGER = Logger.getLogger(GuestDataProcessor.class.getName());
focal_class.type: Logger
focal_class.var_name: LOGGER
focal_class.declarator: jobCtx
focal_class.modifier: private
focal_class.original_string: private JobContext jobCtx;
focal_class.type: JobContext
focal_class.var_name: jobCtx
focal_class.file: guest/src/main/java/org/koenighotze/jee7hotel/guest/business/guestdataimport/GuestDataProcessor.java
focal_class.identifier: GuestDataProcessor
focal_class.interfaces: implements ItemProcessor
focal_class.class_method_signature: GuestDataProcessor.GuestDataProcessor()
focal_class.full_signature: public  GuestDataProcessor()
focal_class.identifier: GuestDataProcessor
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  GuestDataProcessor()
focal_class.class_method_signature: GuestDataProcessor.GuestDataProcessor(JobContext jobContext)
focal_class.full_signature: @Inject public  GuestDataProcessor(JobContext jobContext)
focal_class.identifier: GuestDataProcessor
focal_class.modifiers: @Inject public
focal_class.parameters: (JobContext jobContext)
focal_class.signature:  GuestDataProcessor(JobContext jobContext)
focal_class.class_method_signature: GuestDataProcessor.processItem(Object o)
focal_class.full_signature: @Override public Object processItem(Object o)
focal_class.identifier: processItem
focal_class.modifiers: @Override public
focal_class.parameters: (Object o)
focal_class.return: Object
focal_class.signature: Object processItem(Object o)
focal_method.body: @Override
      public Object processItem(Object o) throws Exception {
          LOGGER.info(() -> "Processing item " + o);
  
          String[] split = ((String) o).split(",");
  
          if (split.length != 3) {
              throw new IllegalArgumentException("Unexpected format in " + o);
          }
  
          String publicId = split[0].trim();
          String name = split[1].trim();
          String email = split[2].trim();
  
          if (!email.matches("\\p{Alnum}+@\\p{Alnum}+.\\p{Alnum}+")) {
              throw new IllegalArgumentException("Unexpected email '" + email + "'");
          }
  
          return new Guest(publicId, name, email);
      }
focal_method.class_method_signature: GuestDataProcessor.processItem(Object o)
focal_method.full_signature: @Override public Object processItem(Object o)
focal_method.identifier: processItem
focal_method.invocations: info split trim trim trim matches
focal_method.modifiers: @Override public
focal_method.parameters: (Object o)
focal_method.return: Object
focal_method.signature: Object processItem(Object o)