In your theme.xml you may want to set a class reference to another style that doesn't exist in that theme or the theme's it inherits from, expecting it to be implemented in any subthemes instead. This is fine assuming everyone implements those classes (they won't). For example:

<?xml version="1.0" encoding="UTF-8"?>
<theme id="payment" refId="provisioning" xmlns="http://metova.com/schemas/model">
	<code>payment</code>
	<application>
		<name>payment</name>
	</application>
	<classes>
		<class name="ActionLabelField-payment" ref="ActionLabelField">
			<style>
				<attribute name="color">rgb(255, 0, 0)</attribute>
				<attribute name="focus-color">rgb(255, 150, 0)</attribute>
			</style>
		</class>
		<class name="CCBitmapField" ref="BitmapField" />
		<class name="SecureBitmapField" ref="BitmapField" />
		<class name="PaymentContainer" ref="Container" />
		<class name="ValidatedVectorChoiceField" ref="ChoiceField" />
	</classes>
</theme>

None of the referenced classes above exist in this theme, provisioning or defaultTheme. An application may use the payment project but not inherit from it's theme.xml, which means none of these classes are ever going to be implemented. During theme generation the generator will try to validate and resolve all classes, but will run into dead ends without ever reaching "default". We could add in code to the generator that works around this, but that is just working around bad programming. Instead the generator will throw an exception specifying what classes cannot be found. You will see a message like this:

[ERROR] - The ClassDescriptor[ActionLabelField] could not be found for ThemeDescriptor[defaultTheme].
[ERROR] - The ClassDescriptor[ActionLabelField] could not be found for ThemeDescriptor[provisioning].
[ERROR] - The ClassDescriptor[ActionLabelField] could not be found for ThemeDescriptor[payment].
[ERROR] com.metova.maven.mobile.h failed: The ClassDescriptor[ActionLabelField] could not be found! First referenced by ClassDescriptor[ActionLabelField-payment] in ThemeDescriptor[payment].

When this happens you should add in a stub for each class like below:

<?xml version="1.0" encoding="UTF-8"?>
<theme id="payment" refId="provisioning" xmlns="http://metova.com/schemas/model">
	<code>payment</code>
	<application>
		<name>payment</name>
	</application>
	<classes>
		<class name="ActionLabelField-payment" ref="ActionLabelField">
			<style>
				<attribute name="color">rgb(255, 0, 0)</attribute>
				<attribute name="focus-color">rgb(255, 150, 0)</attribute>
			</style>
		</class>
		<class name="CCBitmapField" ref="BitmapField" />
		<class name="SecureBitmapField" ref="BitmapField" />
		<class name="PaymentContainer" ref="Container" />
		<class name="ValidatedVectorChoiceField" ref="ChoiceField" />

		<!-- Override Style Stubs -->
		<class name="ActionLabelField" />
		<class name="Container" />
		<class name="ChoiceField" />
		<class name="BitmapField" />
	</classes>
</theme>

The stubs will inherit from "default" if never overridden, otherwise the subtheme classes will be used.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

© 2011 Metova, Inc.