Author: indika
Date: Tue May 12 14:47:25 2009
New Revision: 773914
URL: http://svn.apache.org/viewvc?rev=773914&view=rev
Log:
Add a capability of reusing a secret callback handler instance that being used
by the application that starts synapse.
Added:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandler.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandlerCache.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.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/SecretConfigurationConstants.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.java?rev=773914&r1=773913&r2=773914&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.java
Tue May 12 14:47:25 2009
@@ -36,6 +36,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.commons.util.RMIRegistryController;
+import org.apache.synapse.commons.util.secret.SecretConfigurationConstants;
+import org.apache.synapse.commons.util.secret.SecretCallbackHandler;
import
org.apache.synapse.commons.util.datasource.DataSourceInformationRepository;
import org.apache.synapse.commons.util.datasource.DataSourceHelper;
import org.apache.synapse.commons.util.datasource.DataSourceConstants;
@@ -49,6 +51,7 @@
import org.apache.synapse.core.axis2.*;
import org.apache.synapse.eventing.SynapseEventSource;
import org.apache.synapse.task.*;
+import
org.apache.synapse.security.secret.handler.SharedSecretCallbackHandlerCache;
import java.util.*;
@@ -131,6 +134,7 @@
deployMediatorExtensions();
initTaskHelper(serverContextInformation);
initDataSourceHelper(serverContextInformation);
+ initSharedSecretCallbackHandlerCache(serverContextInformation);
initialized = true;
}
@@ -630,7 +634,7 @@
}
/**
- * Initating DataSourceHelper with a new datasource information repository
or
+ * Initiating DataSourceHelper with a new datasource information
repository or
* reusing an existing repository.
*
* @param serverContextInformation ServerContextInformation instance
@@ -649,6 +653,22 @@
}
/**
+ * Initiating SharedSecretCallbackHandlerCache reusing an existing
SecretCallbackHandler instance -
+ * a SecretCallbackHandler passed when start synapse.
+ *
+ * @param information ServerContextInformation instance
+ */
+ private void initSharedSecretCallbackHandlerCache(ServerContextInformation
information) {
+ SharedSecretCallbackHandlerCache cache =
SharedSecretCallbackHandlerCache.getInstance();
+ Object handler =
+ information.getProperty(
+
SecretConfigurationConstants.PROP_SECRET_CALLBACK_HANDLER);
+ if (handler instanceof SecretCallbackHandler) {
+ cache.setSecretCallbackHandler((SecretCallbackHandler) handler);
+ }
+ }
+
+ /**
* Initialize TaskHelper - with any existing TaskDescriptionRepository
and TaskScheduler
* or without those
* @param serverContextInformation ServerContextInformation instance
Modified:
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=773914&r1=773913&r2=773914&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SecretManagerSecretCallbackHandler.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SecretManagerSecretCallbackHandler.java
Tue May 12 14:47:25 2009
@@ -33,8 +33,8 @@
protected void handleSingleSecretCallback(SingleSecretCallback
singleSecretCallback) {
if (!secretManager.isInitialized()) {
- if (log.isDebugEnabled()) {
- log.debug("SecretManager has not been initialized.Cannot
collect secrets");
+ if (log.isWarnEnabled()) {
+ log.warn("SecretManager has not been initialized.Cannot
collect secrets.");
}
return;
}
Added:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandler.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandler.java?rev=773914&view=auto
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandler.java
(added)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandler.java
Tue May 12 14:47:25 2009
@@ -0,0 +1,46 @@
+/*
+ * 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.AbstractSecretCallbackHandler;
+import org.apache.synapse.commons.util.secret.SingleSecretCallback;
+import org.apache.synapse.commons.util.secret.SecretCallbackHandler;
+import org.apache.synapse.commons.util.secret.SecretCallback;
+
+/**
+ * SecretCallbackHandler that uses an existing SecretCallbackHandler instance
+ * provided when starting server
+ */
+public class SharedSecretCallbackHandler extends AbstractSecretCallbackHandler
{
+
+ private SecretCallbackHandler secretCallbackHandler =
+
SharedSecretCallbackHandlerCache.getInstance().getSecretCallbackHandler();
+
+ protected void handleSingleSecretCallback(SingleSecretCallback
singleSecretCallback) {
+
+ if (secretCallbackHandler == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("There is no shared SecretCallbackHandler. " +
+ "Please use any other SecretCallbackHandler
implementaions");
+ }
+ return;
+ }
+ secretCallbackHandler.handle(new
SecretCallback[]{singleSecretCallback});
+ }
+}
Added:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandlerCache.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandlerCache.java?rev=773914&view=auto
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandlerCache.java
(added)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/security/secret/handler/SharedSecretCallbackHandlerCache.java
Tue May 12 14:47:25 2009
@@ -0,0 +1,48 @@
+/*
+ * 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.SecretCallbackHandler;
+
+/**
+ * Keep shared SecretCallbackHandler instance.
+ */
+public class SharedSecretCallbackHandlerCache {
+
+ private static SharedSecretCallbackHandlerCache ourInstance
+ = new SharedSecretCallbackHandlerCache();
+
+ private SecretCallbackHandler secretCallbackHandler;
+
+ public static SharedSecretCallbackHandlerCache getInstance() {
+ return ourInstance;
+ }
+
+ private SharedSecretCallbackHandlerCache() {
+ }
+
+ public void setSecretCallbackHandler(SecretCallbackHandler
secretCallbackHandler) {
+ this.secretCallbackHandler = secretCallbackHandler;
+ }
+
+ public SecretCallbackHandler getSecretCallbackHandler() {
+ return secretCallbackHandler;
+ }
+}
Modified:
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretConfigurationConstants.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretConfigurationConstants.java?rev=773914&r1=773913&r2=773914&view=diff
==============================================================================
---
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretConfigurationConstants.java
(original)
+++
synapse/trunk/java/modules/utils/src/main/java/org/apache/synapse/commons/util/secret/SecretConfigurationConstants.java
Tue May 12 14:47:25 2009
@@ -25,4 +25,5 @@
public static final String PROP_PASSWORD = "password";
public static final String PROP_PASSWORD_PROVIDER = "passwordProvider";
public static final String PROP_PASSWORD_PROMPT = "passwordPrompt";
+ public static final String PROP_SECRET_CALLBACK_HANDLER =
"SharedSecretCallbackHandler";
}