Author: rhauch
Date: 2008-08-06 15:59:12 -0400 (Wed, 06 Aug 2008)
New Revision: 397
Modified:
trunk/connectors/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatedRepositorySource.java
trunk/connectors/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/FederatedRepositorySourceTest.java
Log:
DNA-115 - Create federation service
http://jira.jboss.com/jira/browse/DNA-115
Simplified how the FederatedRepositorySource implements the JNDI Referenceable interface
by also implementing JNDI's ObjectFactory and eliminating the inner class.
Modified:
trunk/connectors/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatedRepositorySource.java
===================================================================
---
trunk/connectors/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatedRepositorySource.java 2008-08-06
19:51:05 UTC (rev 396)
+++
trunk/connectors/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatedRepositorySource.java 2008-08-06
19:59:12 UTC (rev 397)
@@ -78,7 +78,7 @@
* @author Randall Hauch
*/
@ThreadSafe
-public class FederatedRepositorySource extends AbstractRepositorySource {
+public class FederatedRepositorySource extends AbstractRepositorySource implements
ObjectFactory {
/**
*/
@@ -823,7 +823,7 @@
*/
public synchronized Reference getReference() {
String className = getClass().getName();
- String factoryClassName = NamingContextObjectFactory.class.getName();
+ String factoryClassName = this.getClass().getName();
Reference ref = new Reference(className, factoryClassName, null);
if (getRepositoryName() != null) {
@@ -869,62 +869,56 @@
return ref;
}
- public static class NamingContextObjectFactory implements ObjectFactory {
-
- public NamingContextObjectFactory() {
- }
-
- /**
- * {@inheritDoc}
- */
- public Object getObjectInstance( Object obj,
- javax.naming.Name name,
- Context nameCtx,
- Hashtable<?, ?> environment ) throws
Exception {
- if (obj instanceof Reference) {
- Map<String, String> values = new HashMap<String, String>();
- Reference ref = (Reference)obj;
- Enumeration<?> en = ref.getAll();
- while (en.hasMoreElements()) {
- RefAddr subref = (RefAddr)en.nextElement();
- if (subref instanceof StringRefAddr) {
- String key = subref.getType();
- Object value = subref.getContent();
- if (value != null) values.put(key, value.toString());
- }
+ /**
+ * {@inheritDoc}
+ */
+ public Object getObjectInstance( Object obj,
+ javax.naming.Name name,
+ Context nameCtx,
+ Hashtable<?, ?> environment ) throws Exception
{
+ if (obj instanceof Reference) {
+ Map<String, String> values = new HashMap<String, String>();
+ Reference ref = (Reference)obj;
+ Enumeration<?> en = ref.getAll();
+ while (en.hasMoreElements()) {
+ RefAddr subref = (RefAddr)en.nextElement();
+ if (subref instanceof StringRefAddr) {
+ String key = subref.getType();
+ Object value = subref.getContent();
+ if (value != null) values.put(key, value.toString());
}
- String repositoryName =
values.get(FederatedRepositorySource.REPOSITORY_NAME);
- String sourceName = values.get(FederatedRepositorySource.SOURCE_NAME);
- String username = values.get(FederatedRepositorySource.USERNAME);
- String password = values.get(FederatedRepositorySource.PASSWORD);
- String configurationSourceName =
values.get(FederatedRepositorySource.CONFIGURATION_SOURCE_NAME);
- String projectionRules =
values.get(FederatedRepositorySource.CONFIGURATION_SOURCE_PROJECTION_RULES);
- String connectionFactoriesJndiName =
values.get(FederatedRepositorySource.REPOSITORY_SOURCE_REGISTRY_JNDI_NAME);
- String environmentJndiName =
values.get(FederatedRepositorySource.EXECUTION_CONTEXT_FACTORY_JNDI_NAME);
- String repositoryJndiName =
values.get(FederatedRepositorySource.REPOSITORY_JNDI_NAME);
- String securityDomain =
values.get(FederatedRepositorySource.SECURITY_DOMAIN);
- String retryLimit = values.get(FederatedRepositorySource.RETRY_LIMIT);
+ }
+ String repositoryName =
values.get(FederatedRepositorySource.REPOSITORY_NAME);
+ String sourceName = values.get(FederatedRepositorySource.SOURCE_NAME);
+ String username = values.get(FederatedRepositorySource.USERNAME);
+ String password = values.get(FederatedRepositorySource.PASSWORD);
+ String configurationSourceName =
values.get(FederatedRepositorySource.CONFIGURATION_SOURCE_NAME);
+ String projectionRules =
values.get(FederatedRepositorySource.CONFIGURATION_SOURCE_PROJECTION_RULES);
+ String connectionFactoriesJndiName =
values.get(FederatedRepositorySource.REPOSITORY_SOURCE_REGISTRY_JNDI_NAME);
+ String environmentJndiName =
values.get(FederatedRepositorySource.EXECUTION_CONTEXT_FACTORY_JNDI_NAME);
+ String repositoryJndiName =
values.get(FederatedRepositorySource.REPOSITORY_JNDI_NAME);
+ String securityDomain =
values.get(FederatedRepositorySource.SECURITY_DOMAIN);
+ String retryLimit = values.get(FederatedRepositorySource.RETRY_LIMIT);
- // Create the source instance ...
- FederatedRepositorySource source = new FederatedRepositorySource();
- if (repositoryName != null) source.setRepositoryName(repositoryName);
- if (sourceName != null) source.setName(sourceName);
- if (username != null) source.setUsername(username);
- if (password != null) source.setPassword(password);
- if (configurationSourceName != null)
source.setConfigurationSourceName(configurationSourceName);
- if (projectionRules != null) {
- List<String> rules = StringUtil.splitLines(projectionRules);
- source.setConfigurationSourceProjectionRules(rules.toArray(new
String[rules.size()]));
- }
- if (connectionFactoriesJndiName != null)
source.setRepositorySourceRegistryJndiName(connectionFactoriesJndiName);
- if (environmentJndiName != null)
source.setExecutionContextFactoryJndiName(environmentJndiName);
- if (repositoryJndiName != null)
source.setRepositoryJndiName(repositoryJndiName);
- if (securityDomain != null) source.setSecurityDomain(securityDomain);
- if (retryLimit != null)
source.setRetryLimit(Integer.parseInt(retryLimit));
- return source;
+ // Create the source instance ...
+ FederatedRepositorySource source = new FederatedRepositorySource();
+ if (repositoryName != null) source.setRepositoryName(repositoryName);
+ if (sourceName != null) source.setName(sourceName);
+ if (username != null) source.setUsername(username);
+ if (password != null) source.setPassword(password);
+ if (configurationSourceName != null)
source.setConfigurationSourceName(configurationSourceName);
+ if (projectionRules != null) {
+ List<String> rules = StringUtil.splitLines(projectionRules);
+ source.setConfigurationSourceProjectionRules(rules.toArray(new
String[rules.size()]));
}
- return null;
+ if (connectionFactoriesJndiName != null)
source.setRepositorySourceRegistryJndiName(connectionFactoriesJndiName);
+ if (environmentJndiName != null)
source.setExecutionContextFactoryJndiName(environmentJndiName);
+ if (repositoryJndiName != null)
source.setRepositoryJndiName(repositoryJndiName);
+ if (securityDomain != null) source.setSecurityDomain(securityDomain);
+ if (retryLimit != null) source.setRetryLimit(Integer.parseInt(retryLimit));
+ return source;
}
+ return null;
}
/**
Modified:
trunk/connectors/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/FederatedRepositorySourceTest.java
===================================================================
---
trunk/connectors/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/FederatedRepositorySourceTest.java 2008-08-06
19:51:05 UTC (rev 396)
+++
trunk/connectors/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/FederatedRepositorySourceTest.java 2008-08-06
19:59:12 UTC (rev 397)
@@ -37,6 +37,7 @@
import javax.naming.Name;
import javax.naming.RefAddr;
import javax.naming.Reference;
+import javax.naming.spi.ObjectFactory;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.LoginException;
import org.jboss.dna.spi.DnaLexicon;
@@ -272,7 +273,7 @@
Reference ref = source.getReference();
assertThat(ref.getClassName(), is(FederatedRepositorySource.class.getName()));
- assertThat(ref.getFactoryClassName(),
is(FederatedRepositorySource.NamingContextObjectFactory.class.getName()));
+ assertThat(ref.getFactoryClassName(),
is(FederatedRepositorySource.class.getName()));
Map<String, Object> refAttributes = new HashMap<String, Object>();
Enumeration<RefAddr> enumeration = ref.getAll();
@@ -300,7 +301,7 @@
assertThat(refAttributes.isEmpty(), is(true));
// Recreate the object, use a newly constructed source ...
- FederatedRepositorySource.NamingContextObjectFactory factory = new
FederatedRepositorySource.NamingContextObjectFactory();
+ ObjectFactory factory = new FederatedRepositorySource();
Name name = mock(Name.class);
Context context = mock(Context.class);
Hashtable<?, ?> env = new Hashtable<Object, Object>();