Hi, 

I see the DefaultServiceMatchingStrategy class does a case-insensitive 
exact match on the service URL passed in.  But couldn't it just call 
serviceManager.findServiceBy() for both URLs and then compare the resulting 
RegisteredService objects?

Or is there a problem with this that I'm not seeing?  Thanks!


/**
 * This version of the service matching strategy matches on the serviceId 
regex, instead of exact matching
 */

@Slf4j
@RequiredArgsConstructor
@Getter
public class ServiceManagerServiceMatchingStrategy  implements 
ServiceMatchingStrategy {
    private final ServicesManager servicesManager;

    @Override
    public boolean matches(final Service service, final Service serviceToMatch) 
{
        try {
            val thisUrl = URLDecoder.decode(service.getId(), 
StandardCharsets.UTF_8.name());
            val serviceUrl = URLDecoder.decode(serviceToMatch.getId(), 
StandardCharsets.UTF_8.name());

            val thisUrlService = servicesManager.findServiceBy(thisUrl);
            val serviceUrlService = servicesManager.findServiceBy(serviceUrl);

            LOGGER.trace("Decoded urls and comparing [{}] with [{}]", thisUrl, 
serviceUrl);
            return thisUrlService!=null && serviceUrlService!=null && 
thisUrlService.compareTo(serviceUrlService)==0;
        } catch (final Exception e) {
            LOGGER.error(e.getMessage(), e);
        }
        return false;
    }
}

-- 
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/e6d93ec4-4421-4d21-a255-352da53df7e4%40apereo.org.

Reply via email to