Expose dummy OAuthLoginProvider implementation

Since [1] OAuthLoginProvider is required for oauth provider plugin to
work.

[1] https://gerrit-review.googlesource.com/96370

Bug: https://github.com/davido/gerrit-oauth-provider/issues/84
Change-Id: I487858d40d489a8b4e55665aa33a0df89d1150b6
diff --git a/BUILD b/BUILD
index 61d484f..966c97b 100644
--- a/BUILD
+++ b/BUILD
@@ -5,6 +5,7 @@
     srcs = glob(["src/main/java/**/*.java"]),
     manifest_entries = [
         "Gerrit-PluginName: gerrit-oauth-provider",
+        "Gerrit-Module: com.googlesource.gerrit.plugins.oauth.Module",
         "Gerrit-HttpModule: com.googlesource.gerrit.plugins.oauth.HttpModule",
         "Gerrit-InitStep: com.googlesource.gerrit.plugins.oauth.InitOAuth",
         "Implementation-Title: Gerrit OAuth authentication provider",
diff --git a/src/main/java/com/googlesource/gerrit/plugins/oauth/DisabledOAuthLoginProvider.java b/src/main/java/com/googlesource/gerrit/plugins/oauth/DisabledOAuthLoginProvider.java
new file mode 100644
index 0000000..22ae06e
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/oauth/DisabledOAuthLoginProvider.java
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.oauth;
+
+import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.extensions.auth.oauth.OAuthLoginProvider;
+import com.google.gerrit.extensions.auth.oauth.OAuthUserInfo;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.io.IOException;
+
+@Singleton
+class DisabledOAuthLoginProvider implements OAuthLoginProvider {
+  private final String pluginName;
+
+  @Inject
+  DisabledOAuthLoginProvider(@PluginName String pluginName) {
+    this.pluginName = pluginName;
+  }
+
+  @Override
+  public OAuthUserInfo login(String username, String secret)
+      throws IOException {
+    throw new UnsupportedOperationException(
+        "git over oauth is not implemented by " + pluginName + " plugin");
+  }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/oauth/Module.java b/src/main/java/com/googlesource/gerrit/plugins/oauth/Module.java
new file mode 100644
index 0000000..c865e99
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/oauth/Module.java
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.oauth;
+
+import com.google.gerrit.extensions.annotations.Exports;
+import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.extensions.auth.oauth.OAuthLoginProvider;
+import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+
+public class Module extends AbstractModule {
+  private final String pluginName;
+
+  @Inject
+  Module(@PluginName String pluginName) {
+    this.pluginName = pluginName;
+  }
+
+  @Override
+  protected void configure() {
+    bind(OAuthLoginProvider.class)
+      .annotatedWith(Exports.named(pluginName))
+      .to(DisabledOAuthLoginProvider.class);
+  }
+}