Can't import a ThingShape in an extension
I'm trying to load up some objects through an extension I'm writing and I keep running into blocks when I import things. I have right now a ThingTemplate
@ThingworxBaseTemplateDefinition(name = "GenericThing")
@ThingworxPropertyDefinitions(properties = {
@ThingworxPropertyDefinition(name = "Name", description = "Name of thing on Timeli's platform (required). Should be unique.", category = "", baseType = "STRING", isLocalOnly = false, aspects = {
"isPersistent:true", "dataChangeType:VALUE" }), @ThingworxPropertyDefinition(name = "Samples", description = "", category = "", baseType = "THINGNAME", isLocalOnly = false, aspects = {
"thingShape:Samples", "dataChangeType:VALUE" }) })
public class MyThingTemplate extends Thing { ...
and two ThingShape objects, Samples
@ThingworxPropertyDefinitions(properties = {
@ThingworxPropertyDefinition(name = "Samples", description = "", category = "", baseType = "INFOTABLE", isLocalOnly = false, aspects = {
"dataChangeType:VALUE", "isEntityDataShape:true", "dataShape:Sample" }) })
public class Samples extends ThingShape {
and Sample (singular)
@ThingworxPropertyDefinitions(properties = {
@ThingworxPropertyDefinition(name = "Timestamp", description = "", category = "", baseType = "DATETIME", isLocalOnly = false, aspects = {
"dataChangeType:VALUE" }), @ThingworxPropertyDefinition(name = "Value", description = "", category = "", baseType = "NUMBER", isLocalOnly = false, aspects = {
"dataChangeType:VALUE" }) })
public class Sample extends ThingShape {
All objects are stubs in the sense there's as yet no Java code in them.
My metadata.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Entities>
<ExtensionPackages>
<ExtensionPackage dependsOn="" description="" minimumThingWorxVersion="7.2.1" name="penrose" packageVersion="0.0.0004" vendor="">
<JarResources>
<FileResource description="" file="penrose.jar" type="JAR"/>
</JarResources>
</ExtensionPackage>
</ExtensionPackages>
<ThingPackages>
<ThingPackage className="io.timeli.penrose.MyThingTemplate" description="" name="MyThingTemplatePackage"/>
</ThingPackages>
<ThingTemplates>
<ThingTemplate aspect.isEditableExtensionObject="false" description="" name="MyThingTemplate" thingPackage="MyThingTemplatePackage"/>
</ThingTemplates>
<ThingShapes>
<ThingShape aspect.isEditableExtensionObject="false" className="io.timeli.penrose.Samples" description="" name="Samples"/>
<ThingShape aspect.isEditableExtensionObject="false" className="io.timeli.penrose.Sample" description="" name="Sample"/>
</ThingShapes>
</Entities>
It builds on my local, of course, because there's no code to compile. But when I import, I get the following:
Import Failed: Validation Failure: ThingShape Samples Had An Invalid Class Name : [io.timeli.penrose.Samples] - Possibly Missing Extension Package
What am I missing? Please feel free to ask for more information. But it seems to me I've declared the fully qualified classname for Samples in the metadata.xml and the class file is present in the jar. The objects all extend the appropriate base classes. So what else is there to do?

