Changed signature of parse() to take in more general Result
[zxing.git] / core / src / com / google / zxing / client / result / EmailAddressResult.java
index c87da90..9708da9 100644 (file)
@@ -16,6 +16,8 @@
 
 package com.google.zxing.client.result;
 
+import com.google.zxing.Result;
+
 /**
  * Represents a result that encodes an e-mail address, either as a plain address
  * like "joe@example.org" or a mailto: URL like "mailto:joe@example.org".
@@ -26,17 +28,24 @@ public final class EmailAddressResult extends AbstractDoCoMoResult {
 
   private final String emailAddress;
 
-  public EmailAddressResult(String rawText) {
+  private EmailAddressResult(String emailAddress) {
     super(ParsedReaderResultType.EMAIL_ADDRESS);
+    this.emailAddress = emailAddress;
+  }
+
+  public static EmailAddressResult parse(Result result) {
+    String rawText = result.getText();
+    String emailAddress;
     if (rawText.startsWith("mailto:")) {
       // If it starts with mailto:, assume it is definitely trying to be an email address
       emailAddress = rawText.substring(7);
     } else {
       if (!EmailDoCoMoResult.isBasicallyValidEmailAddress(rawText)) {
-        throw new IllegalArgumentException("Invalid email address: " + rawText);
+        return null;
       }
       emailAddress = rawText;
     }
+    return new EmailAddressResult(emailAddress);
   }
 
   public String getEmailAddress() {