package com.l7tech.server.communityschemas;

import com.l7tech.gateway.common.audit.Audit;
import java.io.IOException;

public interface SchemaSourceResolver {
   String getId();

   boolean isTransient();

   boolean isRemote();

   SchemaSourceResolver.SchemaSource getSchemaByTargetNamespace(Audit var1, String var2) throws IOException;

   SchemaSourceResolver.SchemaSource getSchemaByUri(Audit var1, String var2) throws IOException;

   void refreshSchemaByUri(Audit var1, String var2) throws IOException;

   void registerInvalidationListener(SchemaSourceResolver.SchemaInvalidationListener var1);

   final class DefaultSchemaSource implements SchemaSourceResolver.SchemaSource {
      private final String a;
      private final String b;
      private final String c;
      private final boolean d;

      public DefaultSchemaSource(String var1, String var2, SchemaSourceResolver var3) {
         this(var1, var2, var3.getId(), var3.isTransient());
      }

      public DefaultSchemaSource(String var1, String var2, String var3, boolean var4) {
         this.a = var1;
         this.b = var2;
         this.c = var3;
         this.d = var4;
      }

      @Override
      public String getUri() {
         return this.a;
      }

      @Override
      public String getContent() {
         return this.b;
      }

      @Override
      public String getResolverId() {
         return this.c;
      }

      @Override
      public boolean isTransient() {
         return this.d;
      }
   }

   interface SchemaInvalidationListener {
      boolean invalidateSchemaByUri(String var1, boolean var2);
   }

   interface SchemaSource {
      String getUri();

      String getContent();

      boolean isTransient();

      String getResolverId();
   }
}
