From d9d8e6cfbdc57bd97293a42881252ca520802929 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 03 Nov 2014 10:42:57 +0000
Subject: [PATCH] JPEGSyntaxImpl.java: Extracted methods isValidJfif() and isValidExif() for readability.
---
opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/JPEGSyntaxImpl.java | 70 +++++++++++++++++------------------
1 files changed, 34 insertions(+), 36 deletions(-)
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/JPEGSyntaxImpl.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/JPEGSyntaxImpl.java
index 2195e84..7f46346 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/JPEGSyntaxImpl.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/JPEGSyntaxImpl.java
@@ -27,13 +27,11 @@
package org.forgerock.opendj.ldap.schema;
-import static org.forgerock.opendj.ldap.schema.SchemaConstants.EMR_OCTET_STRING_OID;
-import static org.forgerock.opendj.ldap.schema.SchemaConstants.OMR_OCTET_STRING_OID;
-import static org.forgerock.opendj.ldap.schema.SchemaConstants.SYNTAX_JPEG_NAME;
-
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.opendj.ldap.ByteSequence;
+import static org.forgerock.opendj.ldap.schema.SchemaConstants.*;
+
/**
* This class implements the JPEG attribute syntax. This is actually
* two specifications - JPEG and JFIF. As an extension we allow JPEG
@@ -46,6 +44,7 @@
return EMR_OCTET_STRING_OID;
}
+ @Override
public String getName() {
return SYNTAX_JPEG_NAME;
}
@@ -55,6 +54,7 @@
return OMR_OCTET_STRING_OID;
}
+ @Override
public boolean isHumanReadable() {
return false;
}
@@ -73,43 +73,41 @@
* @return <CODE>true</CODE> if the provided value is acceptable for use
* with this syntax, or <CODE>false</CODE> if not.
*/
+ @Override
public boolean valueIsAcceptable(final Schema schema, final ByteSequence value,
final LocalizableMessageBuilder invalidReason) {
+ return schema.allowMalformedJPEGPhotos() || isValidJfif(value) || isValidExif(value);
+ }
- if (!schema.allowMalformedJPEGPhotos()) {
- /* JFIF files start:
- * 0xff 0xd8 0xff 0xe0 LH LL 0x4a 0x46 0x49 0x46 ...
- * SOI APP0 len "JFIF"
- *
- * Exif files (from most digital cameras) start:
- * 0xff 0xd8 0xff 0xe1 LH LL 0x45 0x78 0x69 0x66 ...
- * SOI APP1 len "Exif"
- *
- * So all legal values must be at least 10 bytes long
- */
- if (value.length() < 10) {
- return false;
- }
-
- if (value.byteAt(0) != (byte) 0xff && value.byteAt(1) != (byte) 0xd8) {
- return false;
- }
-
- if (value.byteAt(2) == (byte) 0xff && value.byteAt(3) == (byte) 0xe0
+ /**
+ * Exif files (from most digital cameras) start:
+ * <pre>
+ * 0xff 0xd8 0xff 0xe1 LH LL 0x45 0x78 0x69 0x66 ...
+ * SOI APP1 len "Exif"
+ * </pre>
+ * So all legal values must be at least 10 bytes long
+ */
+ private boolean isValidJfif(final ByteSequence value) {
+ return value.length() >= 10
+ && value.byteAt(0) == (byte) 0xff || value.byteAt(1) == (byte) 0xd8
+ && value.byteAt(2) == (byte) 0xff && value.byteAt(3) == (byte) 0xe0
&& value.byteAt(6) == 'J' && value.byteAt(7) == 'F'
- && value.byteAt(8) == 'I' && value.byteAt(9) == 'F') {
- return true;
- }
+ && value.byteAt(8) == 'I' && value.byteAt(9) == 'F';
+ }
- if (value.byteAt(2) == (byte) 0xff && value.byteAt(3) == (byte) 0xe1
+ /**
+ * Exif files (from most digital cameras) start:
+ * <pre>
+ * 0xff 0xd8 0xff 0xe1 LH LL 0x45 0x78 0x69 0x66 ...
+ * SOI APP1 len "Exif"
+ * </pre>
+ * So all legal values must be at least 10 bytes long
+ */
+ private boolean isValidExif(final ByteSequence value) {
+ return value.length() >= 10
+ && value.byteAt(0) == (byte) 0xff || value.byteAt(1) == (byte) 0xd8
+ && value.byteAt(2) == (byte) 0xff && value.byteAt(3) == (byte) 0xe1
&& value.byteAt(6) == 'E' && value.byteAt(7) == 'x'
- && value.byteAt(8) == 'i' && value.byteAt(9) == 'f') {
- return true;
- }
-
- // No JFIF or Exif header found
- return false;
- }
- return true;
+ && value.byteAt(8) == 'i' && value.byteAt(9) == 'f';
}
}
--
Gitblit v1.10.0