Skip to Content
0
Former Member
Feb 07, 2018 at 10:10 PM

Impex for Classfiication Attributes where feature descriptor contain brackets

1030 Views

I am trying to create an impex for updating the feature value associated with a Classification Attribute for a product. However, the feature descriptor has a bracket e.g, Calibration (PSI).

 $productCatalog=myProductCatalog
 $productCatalogName=My Product Catalog
 $catalogVersion=catalogversion(catalog(id[default=$productCatalog]),version[default='Online'])[unique=true,default=$productCatalog:Online]
     $clAttrModifiers=system='MyProductClassification',version='1.0',translator=de.hybris.platform.catalog.jalo.classification.impex.ClassificationAttributeTranslator,lang=EN
     
 $feature1=@Calibration (PSI)[$clAttrModifiers];
   
 INSERT_UPDATE Product;$catalogVersion;code[unique=true];$feature1
 ;myproductcode;12
     

As soon as the Column Descriptor encounters a '(' it assumes Calibration is the qualifier; whereas it should take Calibration (PSI) as the complete qualifier.

Impex throws an excetion:

 Caused by: de.hybris.platform.impex.jalo.header.HeaderValidationException: unknown classification attribute Calibration within system version 'MyProductClassification.1.0' in column 3:@Calibration[HY-0]
         at de.hybris.platform.catalog.jalo.classification.impex.ClassificationAttributeTranslator.lookupAttributeOrAssignment(ClassificationAttributeTranslator.java:208)
         at de.hybris.platform.catalog.jalo.classification.impex.ClassificationAttributeTranslator.init(ClassificationAttributeTranslator.java:167)
         at de.hybris.platform.impex.jalo.header.SpecialColumnDescriptor.createValueTranslator(SpecialColumnDescriptor.java:72)
         at de.hybris.platform.impex.jalo.header.SpecialColumnDescriptor.<init>(SpecialColumnDescriptor.java:38)
         at de.hybris.platform.impex.jalo.translators.AbstractTypeTranslator.translatorColumnDescriptor(AbstractTypeTranslator.java:114)
         at de.hybris.platform.impex.jalo.translators.AbstractTypeTranslator.translateColumnDescriptors(AbstractTypeTranslator.java:78)
         at de.hybris.platform.impex.jalo.header.HeaderDescriptor.<init>(HeaderDescriptor.java:171)   


All the underlying code is in jalo layer. Even without legacy mode being turned on. Reference classes are:

de.hybris.platform.catalog.jalo.classification.impex.ClassificationAttributeTranslator de.hybris.platform.impex.jalo.header.AbstractDescriptor

The method that only returns '@Calibration' when I want the complete qualifier '@Calibration (PSI)'

C

olumnParams de.hybris.platform.impex.jalo.header.AbstractDescriptor.parseColumnDescriptor(String expr) throws HeaderValidationException

Custom Translator kicks in much later, so I cannot extend from ClassificationAttributeTranslator, and all these are Jalo classes with private attributes and no setters :(