public String resolve()

in archaius2-persisted2/src/main/java/com/netflix/archaius/persisted2/ScopePriorityPropertyValueResolver.java [30:59]


    public String resolve(String propName, List<ScopedValue> scopesValues) {
        // Select the first as the starting candidate
        Iterator<ScopedValue> iter = scopesValues.iterator();
        ScopedValue p1 = iter.next();
        
        // For each subsequent variation
        while (iter.hasNext()) {
            ScopedValue p2 = iter.next();
            
            Iterator<Set<String>> s1 = p1.getScopes().values().iterator();
            Iterator<Set<String>> s2 = p2.getScopes().values().iterator();
            
            // Iterate through scopes in priority order
            while (s1.hasNext()) {
                Set<String> v1 = s1.next();
                Set<String> v2 = s2.next();
                if (v1.isEmpty() && !v2.isEmpty()) {
                    p1 = p2;
                    break;
                }
                else if (!v1.isEmpty() && v2.isEmpty()) {
                    break;
                }
                
                // Continue as long as no scope yet or both have scopes
            }
        }
                
        return p1.getValue();
    }