Skip to content

Commit

Permalink
Support automatic synchronization for "barcode" & "barcodes":
Browse files Browse the repository at this point in the history
  • Loading branch information
stepio committed Jan 5, 2016
1 parent fe346d8 commit 9e7f563
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 4 deletions.
13 changes: 13 additions & 0 deletions jpasskit/src/main/java/de/brendamour/jpasskit/PKBarcode.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
Expand All @@ -27,6 +28,14 @@
public class PKBarcode implements IPKValidateable {

private static final long serialVersionUID = -7661537217765974179L;
private static final List<PKBarcodeFormat> BARCODE_TYPES_BEFORE_IOS_9;
static {
List<PKBarcodeFormat> barcodeTypes = new ArrayList<>(3);
barcodeTypes.add(PKBarcodeFormat.PKBarcodeFormatQR);
barcodeTypes.add(PKBarcodeFormat.PKBarcodeFormatPDF417);
barcodeTypes.add(PKBarcodeFormat.PKBarcodeFormatAztec);
BARCODE_TYPES_BEFORE_IOS_9 = Collections.unmodifiableList(barcodeTypes);
}

private PKBarcodeFormat format;
private String altText;
Expand Down Expand Up @@ -87,6 +96,10 @@ public boolean isValid() {
return getValidationErrors().isEmpty();
}

protected boolean isValidInIosVersionsBefore9() {
return BARCODE_TYPES_BEFORE_IOS_9.contains(getFormat());
}

public List<String> getValidationErrors() {
List<String> validationErrors = new ArrayList<String>(1);

Expand Down
20 changes: 17 additions & 3 deletions jpasskit/src/main/java/de/brendamour/jpasskit/PKPass.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.awt.Color;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -250,20 +251,33 @@ public void setLocations(final List<PKLocation> locations) {

@Deprecated
public PKBarcode getBarcode() {
return barcode;
for (PKBarcode barcode : getBarcodes()) {
if (barcode.isValidInIosVersionsBefore9()) {
return barcode;
}
}
return null;
}

@Deprecated
public void setBarcode(final PKBarcode barcode) {
this.barcode = barcode;
// avoid conflicts with 'setBarcodes' method:
if (barcodes == null || barcodes.size() < 2) {
if (barcode != null) {
setBarcodes(null);
} else {
setBarcodes(Collections.singletonList(barcode));
}
}
}

public List<PKBarcode> getBarcodes() {
return barcodes;
}

public void setBarcodes(final List<PKBarcode> barcodes) {
this.barcodes = barcodes;
this.barcode = null;
}

public PKEventTicket getEventTicket() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,8 @@ protected ObjectWriter configureObjectMapper(final ObjectMapper jsonObjectMapper
filters.addFilter("validateFilter", SimpleBeanPropertyFilter.serializeAllExcept("valid", "validationErrors"));
filters.addFilter("pkPassFilter", SimpleBeanPropertyFilter.serializeAllExcept("valid", "validationErrors", "foregroundColorAsObject",
"backgroundColorAsObject", "labelColorAsObject", "passThatWasSet"));
filters.addFilter("barcodeFilter", SimpleBeanPropertyFilter.serializeAllExcept("valid", "validationErrors", "messageEncodingAsString"));
filters.addFilter("barcodeFilter", SimpleBeanPropertyFilter.serializeAllExcept("valid", "validationErrors", "messageEncodingAsString",
"validInIosVersionsBefore9"));
filters.addFilter("charsetFilter", SimpleBeanPropertyFilter.filterOutAllExcept("name"));
jsonObjectMapper.setSerializationInclusion(Include.NON_NULL);
jsonObjectMapper.addMixIn(Object.class, ValidateFilterMixIn.class);
Expand Down

0 comments on commit 9e7f563

Please sign in to comment.