1f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// ================================================================================================= 2f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// ADOBE SYSTEMS INCORPORATED 3f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// Copyright 2006 Adobe Systems Incorporated 4f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// All Rights Reserved 5f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// 6f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms 7f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// of the Adobe license agreement accompanying it. 8f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling// ================================================================================================= 9f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 10f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingpackage com.adobe.xmp.impl; 11f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 12f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingimport com.adobe.xmp.XMPConst; 13f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingimport com.adobe.xmp.XMPError; 14f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingimport com.adobe.xmp.XMPException; 15f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingimport com.adobe.xmp.XMPMeta; 16f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 17f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 18f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling/** 19f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @since 11.08.2006 20f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 21f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberlingclass ParameterAsserts implements XMPConst 22f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling{ 23f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 24f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * private constructor 25f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 26f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling private ParameterAsserts() 27f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 28f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling // EMPTY 29f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 30f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 31f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 32f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 33f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Asserts that an array name is set. 34f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param arrayName an array name 35f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException Array name is null or empty 36f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 37f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static void assertArrayName(String arrayName) throws XMPException 38f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 39f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling if (arrayName == null || arrayName.length() == 0) 40f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 41f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("Empty array name", XMPError.BADPARAM); 42f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 43f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 44f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 45f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 46f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 47f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Asserts that a property name is set. 48f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param propName a property name or path 49f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException Property name is null or empty 50f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 51f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static void assertPropName(String propName) throws XMPException 52f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 53f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling if (propName == null || propName.length() == 0) 54f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 55f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("Empty property name", XMPError.BADPARAM); 56f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 57f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 58f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 59f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 60f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 61f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Asserts that a schema namespace is set. 62f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param schemaNS a schema namespace 63f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException Schema is null or empty 64f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 65f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static void assertSchemaNS(String schemaNS) throws XMPException 66f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 67f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling if (schemaNS == null || schemaNS.length() == 0) 68f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 69f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("Empty schema namespace URI", XMPError.BADPARAM); 70f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 71f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 72f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 73f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 74f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 75f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Asserts that a prefix is set. 76f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param prefix a prefix 77f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException Prefix is null or empty 78f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 79f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static void assertPrefix(String prefix) throws XMPException 80f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 81f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling if (prefix == null || prefix.length() == 0) 82f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 83f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("Empty prefix", XMPError.BADPARAM); 84f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 85f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 86f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 87f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 88f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 89f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Asserts that a specific language is set. 90f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param specificLang a specific lang 91f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException Specific language is null or empty 92f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 93f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static void assertSpecificLang(String specificLang) throws XMPException 94f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 95f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling if (specificLang == null || specificLang.length() == 0) 96f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 97f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("Empty specific language", XMPError.BADPARAM); 98f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 99f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 100f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 101f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 102f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 103f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Asserts that a struct name is set. 104f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param structName a struct name 105f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException Struct name is null or empty 106f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 107f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static void assertStructName(String structName) throws XMPException 108f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 109f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling if (structName == null || structName.length() == 0) 110f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 111f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("Empty array name", XMPError.BADPARAM); 112f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 113f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 114f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 115f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 116f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 117f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Asserts that any string parameter is set. 118f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param param any string parameter 119f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException Thrown if the parameter is null or has length 0. 120f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 121f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static void assertNotNull(Object param) throws XMPException 122f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 123f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling if (param == null) 124f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 125f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("Parameter must not be null", XMPError.BADPARAM); 126f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 127f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling else if ((param instanceof String) && ((String) param).length() == 0) 128f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 129f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("Parameter must not be null or empty", XMPError.BADPARAM); 130f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 131f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 132f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 133f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling 134f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling /** 135f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * Asserts that the xmp object is of this implemention 136f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * ({@link XMPMetaImpl}). 137f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @param xmp the XMP object 138f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling * @throws XMPException A wrong implentaion is used. 139f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling */ 140f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling public static void assertImplementation(XMPMeta xmp) throws XMPException 141f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 142f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling if (xmp == null) 143f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 144f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("Parameter must not be null", 145f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling XMPError.BADPARAM); 146f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 147f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling else if (!(xmp instanceof XMPMetaImpl)) 148f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling { 149f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling throw new XMPException("The XMPMeta-object is not compatible with this implementation", 150f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling XMPError.BADPARAM); 151f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 152f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling } 153f12f744843a67c910ec325fc6dfa73988f67b97cSascha Haeberling}