Author: iocanel
Date: Sun Sep 16 16:05:34 2012
New Revision: 1385295
URL: http://svn.apache.org/viewvc?rev=1385295&view=rev
Log:
[KARAF-1836] Added a login module name completer.
Added:
karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/completers/LoginModuleNameCompleter.java
Modified:
karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
Added:
karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/completers/LoginModuleNameCompleter.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/completers/LoginModuleNameCompleter.java?rev=1385295&view=auto
==============================================================================
---
karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/completers/LoginModuleNameCompleter.java
(added)
+++
karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/completers/LoginModuleNameCompleter.java
Sun Sep 16 16:05:34 2012
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.karaf.jaas.command.completers;
+
+import java.util.LinkedList;
+import java.util.List;
+import javax.security.auth.login.AppConfigurationEntry;
+import org.apache.karaf.jaas.boot.ProxyLoginModule;
+import org.apache.karaf.jaas.config.JaasRealm;
+import org.apache.karaf.shell.console.Completer;
+import org.apache.karaf.shell.console.completer.StringsCompleter;
+
+public class LoginModuleNameCompleter implements Completer {
+
+ private List<JaasRealm> realms;
+
+ public int complete(String buffer, int cursor, List<String> candidates) {
+ StringsCompleter delegate = new StringsCompleter();
+ try {
+ if (realms != null && !realms.isEmpty())
+ for (JaasRealm realm : realms) {
+ List<String> moduleClassNames =
findLoginModuleClassNames(realm);
+ if (moduleClassNames != null &&
!moduleClassNames.isEmpty())
+ delegate.getStrings().addAll(moduleClassNames);
+ }
+ } catch (Exception e) {
+ // Ignore
+ }
+ return delegate.complete(buffer, cursor, candidates);
+ }
+
+ /**
+ * Finds the login module class name in the {@link JaasRealm} entries.
+ * @param realm
+ * @return
+ */
+ private List<String> findLoginModuleClassNames(JaasRealm realm) {
+ List<String> moduleClassNames = new LinkedList<String>();
+ for (AppConfigurationEntry entry : realm.getEntries()) {
+ String moduleClass = (String)
entry.getOptions().get(ProxyLoginModule.PROPERTY_MODULE);
+ if (moduleClass != null) {
+ moduleClassNames.add(moduleClass);
+ }
+
+ }
+ return moduleClassNames;
+ }
+
+ public List<JaasRealm> getRealms() {
+ return realms;
+ }
+
+ public void setRealms(List<JaasRealm> realms) {
+ this.realms = realms;
+ }
+
+}
Modified:
karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
URL:
http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml?rev=1385295&r1=1385294&r2=1385295&view=diff
==============================================================================
---
karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
(original)
+++
karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
Sun Sep 16 16:05:34 2012
@@ -26,6 +26,8 @@
</action>
<completers>
<ref component-id="realmCompleter" />
+ <ref component-id="moduleClassNameCompleter" />
+ <null/>
</completers>
</command>
<command>
@@ -80,4 +82,8 @@
<property name="realms" ref="realms"/>
</bean>
+ <bean id="moduleClassNameCompleter"
class="org.apache.karaf.jaas.command.completers.LoginModuleNameCompleter">
+ <property name="realms" ref="realms"/>
+ </bean>
+
</blueprint>