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}