Author: indika
Date: Mon Mar  9 05:59:00 2009
New Revision: 751592

URL: http://svn.apache.org/viewvc?rev=751592&view=rev
Log:
add Jlined based  , Secret Manager based , secret handlers
add Jlined dependency

Added:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/JlineSecretCallbackHandler.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SecretManagerSecretCallbackHandler.java
    
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/AbstractSecretCallbackHandler.java
Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Mediator.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/repository/filebased/FileBaseSecretRepositoryProvider.java
    
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/MultiSecretCallback.java
    
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallback.java
    
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallbackHandler.java
    
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SingleSecretCallback.java
    synapse/trunk/java/pom.xml

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Mediator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Mediator.java?rev=751592&r1=751591&r2=751592&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Mediator.java 
(original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Mediator.java 
Mon Mar  9 05:59:00 2009
@@ -19,7 +19,6 @@
 
 package org.apache.synapse;
 
-import org.apache.synapse.MessageContext;
 
 /**
  * All Synapse mediators must implement this Mediator interface. As a message 
passes

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java?rev=751592&r1=751591&r2=751592&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/SecretManager.java
 Mon Mar  9 05:59:00 2009
@@ -80,7 +80,8 @@
         }
 
         if (assertValidPasswords(identityStorePassword, identityKeyPassword, 
trustStorePassword)) {
-            init(configurationProperties, identityStorePassword, 
identityKeyPassword, trustStorePassword);
+            init(configurationProperties, identityStorePassword,
+                    identityKeyPassword, trustStorePassword);
         }
     }
 
@@ -246,7 +247,8 @@
             String configurationFile = MiscellaneousUtil.getProperty(
                     keyStoreProperties, SECRET_MANAGER_CONF, 
DEFAULT_CONF_LOCATION);
 
-            Properties configurationProperties = 
MiscellaneousUtil.loadProperties(configurationFile);
+            Properties configurationProperties = 
MiscellaneousUtil.loadProperties(
+                    configurationFile);
             if (configurationProperties == null || 
configurationProperties.isEmpty()) {
                 if (log.isDebugEnabled()) {
                     log.debug("Configuration properties can not be loaded form 
: " +

Added: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/JlineSecretCallbackHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/JlineSecretCallbackHandler.java?rev=751592&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/JlineSecretCallbackHandler.java
 (added)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/JlineSecretCallbackHandler.java
 Mon Mar  9 05:59:00 2009
@@ -0,0 +1,62 @@
+/*
+ *  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.synapse.security.secret.handler;
+
+import jline.ConsoleReader;
+import org.apache.synapse.commons.util.secret.SingleSecretCallback;
+import org.apache.synapse.commons.util.secret.AbstractSecretCallbackHandler;
+
+import java.io.IOException;
+
+/**
+ * JlineBased SecretCallbackHandler , get the required secret using command
+ * line and propagates to the application that need secret *
+ */
+public class JlineSecretCallbackHandler extends AbstractSecretCallbackHandler {
+
+    private final static String DEFAULT_PROMPT = "enter password> ";
+
+    protected void handleSingleSecretCallback(SingleSecretCallback 
singleSecretCallback) {
+        String prompt = singleSecretCallback.getPrompt();
+        if (prompt == null || "".equals(prompt)) {
+            prompt = DEFAULT_PROMPT;
+        }
+        String password = readPassword(prompt);
+        if (password != null && !"".equals(password)) {
+            singleSecretCallback.setSecret(password);
+        }
+    }
+
+    /**
+     * Heper method to read the password from Jline cmd
+     *
+     * @param prompt The prompt to request password
+     * @return Password
+     */
+    private String readPassword(String prompt) {
+        ConsoleReader reader;
+        try {
+            reader = new ConsoleReader();
+            Character mask = 0;
+            return reader.readLine(prompt, mask);
+        } catch (IOException ignored) {
+        }
+        return null;
+    }
+}

Added: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SecretManagerSecretCallbackHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SecretManagerSecretCallbackHandler.java?rev=751592&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SecretManagerSecretCallbackHandler.java
 (added)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SecretManagerSecretCallbackHandler.java
 Mon Mar  9 05:59:00 2009
@@ -0,0 +1,39 @@
+/*
+ *  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.synapse.security.secret.handler;
+
+import org.apache.synapse.commons.util.secret.SingleSecretCallback;
+import org.apache.synapse.commons.util.secret.AbstractSecretCallbackHandler;
+import org.apache.synapse.security.secret.SecretManager;
+
+/**
+ * SecretManager based secret provider , this can be used by other application
+ * to get secret form  SecretManager
+ */
+public class SecretManagerSecretCallbackHandler extends 
AbstractSecretCallbackHandler {
+
+    private final SecretManager secretManager = SecretManager.getInstance();
+
+    protected void handleSingleSecretCallback(SingleSecretCallback 
singleSecretCallback) {
+        String id = singleSecretCallback.getId();
+        if (id != null && !"".equals(id)) {
+            singleSecretCallback.setSecret(secretManager.getSecret(id));
+        }
+    }
+}

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/repository/filebased/FileBaseSecretRepositoryProvider.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/repository/filebased/FileBaseSecretRepositoryProvider.java?rev=751592&r1=751591&r2=751592&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/repository/filebased/FileBaseSecretRepositoryProvider.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/repository/filebased/FileBaseSecretRepositoryProvider.java
 Mon Mar  9 05:59:00 2009
@@ -34,7 +34,8 @@
      *
      * @see org.apache.synapse.security.secret.SecretRepositoryProvider
      */
-    public SecretRepository getSecretRepository(IdentityKeyStoreWrapper 
identity, TrustKeyStoreWrapper trust) {
+    public SecretRepository getSecretRepository(IdentityKeyStoreWrapper 
identity,
+                                                TrustKeyStoreWrapper trust) {
         return new FileBaseSecretRepository(identity, trust);
     }
 }

Added: 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/AbstractSecretCallbackHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/AbstractSecretCallbackHandler.java?rev=751592&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/AbstractSecretCallbackHandler.java
 (added)
+++ 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/AbstractSecretCallbackHandler.java
 Mon Mar  9 05:59:00 2009
@@ -0,0 +1,67 @@
+/*
+ *  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.synapse.commons.util.secret;
+
+
+import java.util.Iterator;
+
+/**
+ * A Base SecretCallbackHandler
+ * This expose API to handle SingleSecretCallback and all other functionality
+ * is implemented by itself
+ */
+public abstract class AbstractSecretCallbackHandler implements 
SecretCallbackHandler {
+
+    public void handle(SecretCallback[] secretCallbacks) {
+
+        if (secretCallbacks == null) {
+            return;
+        }
+
+        for (SecretCallback secretCallback : secretCallbacks) {
+            if (secretCallback instanceof SingleSecretCallback) {
+                handleSingleSecretCallback((SingleSecretCallback) 
secretCallback);
+            } else if (secretCallback instanceof MultiSecretCallback) {
+                handleMultiSecretCallback((MultiSecretCallback) 
secretCallback);
+            }
+        }
+    }
+
+    private void handleMultiSecretCallback(MultiSecretCallback 
multiSecretCallback) {
+
+        for (Iterator<SecretCallback> callbackIterator = 
multiSecretCallback.getSecretCallbacks();
+             callbackIterator.hasNext();) {
+
+            SecretCallback callback = callbackIterator.next();
+            if (callback instanceof SingleSecretCallback) {
+                handleSingleSecretCallback((SingleSecretCallback) callback);
+            } else if (callback instanceof MultiSecretCallback) {
+                handleMultiSecretCallback((MultiSecretCallback) callback);
+            }
+        }
+    }
+
+    /**
+     * Handle A SingleSecretCallback  - fill the secret
+     *
+     * @param singleSecretCallback SingleSecretCallback  instance
+     */
+    protected abstract void handleSingleSecretCallback(SingleSecretCallback 
singleSecretCallback);
+
+}

Modified: 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/MultiSecretCallback.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/MultiSecretCallback.java?rev=751592&r1=751591&r2=751592&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/MultiSecretCallback.java
 (original)
+++ 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/MultiSecretCallback.java
 Mon Mar  9 05:59:00 2009
@@ -18,7 +18,9 @@
  */
 package org.apache.synapse.commons.util.secret;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 /**
  * Represents group of any number of Callbacks - group means, they provide 
secret for a one use
@@ -26,18 +28,25 @@
 
 public class MultiSecretCallback implements SecretCallback {
 
-    private final Map<String, SecretCallback> secretCallbacks =
-            new HashMap<String, SecretCallback>();
-
-    public void addSecretCallback(String id, SecretCallback secretCallback) {
-        secretCallbacks.put(id, secretCallback);
+    /* All the children SecretCallbacks */
+    private final List<SecretCallback> secretCallbacks =
+            new ArrayList<SecretCallback>();
+
+    /**
+     * Add a SecretCallback
+     *
+     * @param secretCallback SecretCallback instance
+     */
+    public void addSecretCallback(SecretCallback secretCallback) {
+        secretCallbacks.add(secretCallback);
     }
 
+    /**
+     * Returns all SecretCallbacks
+     *
+     * @return SecretCallbacks as Iterator
+     */
     public Iterator<SecretCallback> getSecretCallbacks() {
-        return secretCallbacks.values().iterator();
-    }
-
-    public SecretCallback getSecretCallback(String id) {
-        return secretCallbacks.get(id);
+        return secretCallbacks.iterator();
     }
 }

Modified: 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallback.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallback.java?rev=751592&r1=751591&r2=751592&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallback.java
 (original)
+++ 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallback.java
 Mon Mar  9 05:59:00 2009
@@ -1,7 +1,8 @@
 package org.apache.synapse.commons.util.secret;
 
 /**
- *
+ * Get the required secret from secret providers
+ * This is to be passed to SecretCallbackHandlers and get secret
  */
 public interface SecretCallback {
 }

Modified: 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallbackHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallbackHandler.java?rev=751592&r1=751591&r2=751592&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallbackHandler.java
 (original)
+++ 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretCallbackHandler.java
 Mon Mar  9 05:59:00 2009
@@ -1,9 +1,14 @@
 package org.apache.synapse.commons.util.secret;
 
 /**
- *
+ * Get the required secrets needed from varies secret providers
  */
 public interface SecretCallbackHandler {
 
+    /**
+     * Retrieve the secrets requested in the provided SecretCallbacks.
+     *
+     * @param secretCallbacks secretCallbacks
+     */
     public void handle(SecretCallback[] secretCallbacks);
 }

Modified: 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SingleSecretCallback.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SingleSecretCallback.java?rev=751592&r1=751591&r2=751592&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SingleSecretCallback.java
 (original)
+++ 
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SingleSecretCallback.java
 Mon Mar  9 05:59:00 2009
@@ -19,12 +19,16 @@
 package org.apache.synapse.commons.util.secret;
 
 /**
- *
+ * A single secret callback that can be used to collect a single secret
  */
 public class SingleSecretCallback implements SecretCallback {
 
+    /* The secret  */
     private String secret;
+    /* The prompt to be used whenever need to request the password */
     private String prompt;
+    /* The Id to identify the context that secret is going to be used */
+    private String id;
 
     public void setSecret(String secret) {
         this.secret = secret;
@@ -41,4 +45,12 @@
     public void setPrompt(String prompt) {
         this.prompt = prompt;
     }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
 }

Modified: synapse/trunk/java/pom.xml
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/pom.xml?rev=751592&r1=751591&r2=751592&view=diff
==============================================================================
--- synapse/trunk/java/pom.xml (original)
+++ synapse/trunk/java/pom.xml Mon Mar  9 05:59:00 2009
@@ -485,6 +485,12 @@
                 <version>${wso2eventing-api.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>jline</groupId>
+                <artifactId>jline</artifactId>
+                <version>${jline.version}</version>
+            </dependency>
+
         </dependencies>
     </dependencyManagement>
 
@@ -786,7 +792,12 @@
             <groupId>org.wso2.eventing</groupId>
             <artifactId>wso2eventing-api</artifactId>
         </dependency>
-        
+
+        <dependency>
+            <groupId>jline</groupId>
+            <artifactId>jline</artifactId>
+        </dependency>
+
     </dependencies>
 
     <reporting>
@@ -939,6 +950,7 @@
         <saxon.version>8.9</saxon.version>
         <commons_io.version>1.4</commons_io.version>
         <commons-cli.version>1.0</commons-cli.version>
+        <jline.version>0.9.94</jline.version>
 
         <!-- dependencies of Synapse extensions module -->
         <wso2commons.version>1.2</wso2commons.version>


Reply via email to