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>