package com.l7tech.server.service.resolution;

import com.l7tech.gateway.common.audit.AuditFactory;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.gateway.common.transport.ResolutionConfiguration;
import com.l7tech.message.Message;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;

public class RequirePathResolver extends ServiceResolver<Void> {
   private final AtomicBoolean b = new AtomicBoolean(false);

   public RequirePathResolver(AuditFactory var1) {
      super(var1);
   }

   @Override
   public void configure(ResolutionConfiguration var1) {
      super.configure(var1);
      this.b.set(var1.isPathRequired());
   }

   @Override
   public Result resolve(Map<String, Object> var1, Collection<PublishedService> var2) throws ServiceResolutionException {
      try {
         if (!var1.containsKey(this.PROP_VALUE)) {
            return Result.NOT_APPLICABLE;
         }
      } catch (ServiceResolutionException var7) {
         throw a(var7);
      }

      HashSet var3 = new HashSet();

      for (PublishedService var5 : var2) {
         try {
            if (var5.getRoutingUri() != null) {
               var3.add(var5);
            }
         } catch (ServiceResolutionException var6) {
            throw a(var6);
         }
      }

      return new Result(var3);
   }

   @Override
   public void populateResolutionParameters(Message var1, Map<String, Object> var2) throws ServiceResolutionException {
      try {
         if (this.a(var1)) {
            var2.put(this.PROP_VALUE, null);
         }
      } catch (ServiceResolutionException var3) {
         throw a(var3);
      }
   }

   @Override
   public boolean usesMessageContent() {
      return false;
   }

   @Override
   protected List<Void> buildTargetValues(PublishedService var1) throws ServiceResolutionException {
      return Collections.emptyList();
   }

   @Override
   protected void updateServiceValues(PublishedService var1, List<Void> var2) {
   }

   private boolean a(Message var1) {
      return this.b.get() && UriResolver.canResolveByURI(var1);
   }

   private static ServiceResolutionException a(ServiceResolutionException var0) {
      return var0;
   }
}
