Forum Discussion

emmanuelflores's avatar
emmanuelflores
Occasional Contributor
6 years ago
Solved

Groovy: second enum class not picked up on compilation

Hello, I'm trying to set up a groovy script that lives in the groovy library, however I keep encountering a compilation error. 

 

The class below is called by another script to pull values from the arrays. The groovy class uses enums from other 2 other groovy classes to reference some data. All 3 classes are in the same script folder. The code looks like the following (note I've cut it down for brevity)

 

 

package somePackage
class SomeBins{

    def log
    def SomeBins(log){
        this.log = log
    }

    def firstBinColors = [
        '3+':FirstBinColorEnum.FIVE, 
        '2.5+':FirstBinColorEnum.FOUR] 
    
    def secondBinColors= [
        '3+':SecondBinColorEnum.EIGHT, 
        '2.5 - 2.75':SecondBinColorEnum.SEVEN,
        '2.0 - 2.25':SecondBinColorEnum.SIX]
    // some functionality that works... 
def getFirstBinColor(bin){ return firstBinColors[bin].getValue() }
def getSecondBinColor(bin){ return secondBinColors[bin].getValue() } }

 

The enums are very similar,but in different files in the same folder, defined as:

package somePackage

public enum FirstBinColorEnum{
    FIVE('74a9cf'),
    FOUR('a6bddb')

    private final String color;

    def FirstBinColorEnum(String color){
        this.color = color
    }

    def getValue(){
        return this.color
    }
}

and

package somePackage

public enum SecondBinColorEnum{
    EIGHT('74a9cf'),
    SEVEN('74a9cf'),
    SIX('a6bddb')

    private final String color;

    def SecondBinColorEnum(String color){
        this.color = color
    }

    def getValue(){
        return this.color
    }
}

When I try running the script an error is always thrown for SecondBinColorEnum. If I take it out, it finds FirstBinColorEnum class. The following is the error it throws

 

Thu Apr 04 17:46:21 MDT 2019: ERROR: An error occurred in the script of the Groovy Script test step [Groovy Script]:
Thu Apr 04 17:46:21 MDT 2019: ERROR: groovy.lang.MissingPropertyException: No such property: SecondBinColorEnum for class: somePackage.SomeBins
   groovy.lang.MissingPropertyException: No such property: SecondBinColorEnum for class: somePackage.SomeBins
   	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
   	at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.getProperty(GetEffectivePogoPropertySite.java:87)
   	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)
   	at somePackage.SomeBins.<init>(SomeBins.groovy)

I am at a complete loss. Initially I had added the firstBinEnum class and worked great. But adding the second one, exactly the same way doesn't seem to work.

Any help from the groovy script gurus would be greatly appreciated. 

  • Well, I figured it out and I'm not sure why it works this way. 

     

    In ReadyAPI I had to use the Enum class directly in a script for it to be loaded or recognized as a class. 

2 Replies

  • emmanuelflores's avatar
    emmanuelflores
    Occasional Contributor

    Well, I figured it out and I'm not sure why it works this way. 

     

    In ReadyAPI I had to use the Enum class directly in a script for it to be loaded or recognized as a class.