You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2008/01/26 23:08:27 UTC
svn commit: r615514 - in /geronimo/server/trunk:
framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/
framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/
framework/modules/geronimo-naming/src/test/ja...
Author: djencks
Date: Sat Jan 26 14:08:26 2008
New Revision: 615514
URL: http://svn.apache.org/viewvc?rev=615514&view=rev
Log:
GERONIMO-2971 automatically bind jca resources (connection factories and admin objects) to jndi
Added:
geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanFormatBinding.java (with props)
geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/ResourceBinding.java (with props)
geronimo/server/trunk/framework/modules/geronimo-naming/src/test/java/org/apache/geronimo/gjndi/binding/FormatTest.java (with props)
Modified:
geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/KernelContextGBean.java
geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanBinding.java
geronimo/server/trunk/plugins/connector/transaction/pom.xml
geronimo/server/trunk/plugins/connector/transaction/src/main/plan/plan.xml
Modified: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/KernelContextGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/KernelContextGBean.java?rev=615514&r1=615513&r2=615514&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/KernelContextGBean.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/KernelContextGBean.java Sat Jan 26 14:08:26 2008
@@ -16,6 +16,16 @@
*/
package org.apache.geronimo.gjndi;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+import javax.naming.Name;
+import javax.naming.NamingException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.gbean.AbstractName;
@@ -30,16 +40,6 @@
import org.apache.xbean.naming.context.ContextAccess;
import org.apache.xbean.naming.context.WritableContext;
-import javax.naming.Name;
-import javax.naming.NamingException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
-
/**
* @version $Rev$ $Date$
*/
@@ -49,7 +49,7 @@
private final Kernel kernel;
private final AbstractNameQuery abstractNameQuery;
private final LifecycleListener listener = new ContextLifecycleListener();
- private final Map bindingsByAbstractName = new HashMap();
+ private final Map<AbstractName, Set<Name>> bindingsByAbstractName = new HashMap<AbstractName, Set<Name>>();
public KernelContextGBean(String nameInNamespace, AbstractNameQuery abstractNameQuery, Kernel kernel) throws NamingException {
super(nameInNamespace, Collections.EMPTY_MAP, ContextAccess.MODIFIABLE, false);
@@ -59,15 +59,14 @@
public synchronized void doStart() {
kernel.getLifecycleMonitor().addLifecycleListener(listener, abstractNameQuery);
- Set set = kernel.listGBeans(abstractNameQuery);
- for (Iterator iterator = set.iterator(); iterator.hasNext();) {
- AbstractName abstractName = (AbstractName) iterator.next();
+ Set<AbstractName> set = kernel.listGBeans(abstractNameQuery);
+ for (AbstractName abstractName : set) {
try {
if (kernel.isRunning(abstractName)) {
addBinding(abstractName);
}
} catch (NamingException e) {
- log.error("Error adding binding for " + abstractName);
+ log.error("Error adding binding for " + abstractName, e);
}
}
@@ -83,9 +82,8 @@
private synchronized void destroy() {
kernel.getLifecycleMonitor().removeLifecycleListener(listener);
- Set abstractNames = new HashSet(bindingsByAbstractName.keySet());
- for (Iterator iterator = abstractNames.iterator(); iterator.hasNext();) {
- AbstractName abstractName = (AbstractName) iterator.next();
+ Set<AbstractName> abstractNames = new HashSet<AbstractName>(bindingsByAbstractName.keySet());
+ for (AbstractName abstractName : abstractNames) {
removeBinding(abstractName);
}
bindingsByAbstractName.clear();
@@ -130,7 +128,7 @@
}
// get the gbean
- Object instance = null;
+ Object instance;
try {
instance = kernel.getGBean(abstractName);
} catch (GBeanNotFoundException e) {
@@ -138,15 +136,14 @@
}
// create the bindings for this object
- Map bindings = createBindings(abstractName, instance);
+ Map<Name, Object> bindings = createBindings(abstractName, instance);
if (bindings == null || bindings.isEmpty()) {
return;
}
// bind the value
- for (Iterator iterator = bindings.entrySet().iterator(); iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- Name name = (Name) entry.getKey();
+ for (Map.Entry<Name, Object> entry : bindings.entrySet()) {
+ Name name = entry.getKey();
Object value = entry.getValue();
addBinding(abstractName, name, value);
}
@@ -155,16 +152,17 @@
bindingsByAbstractName.put(abstractName, bindings.keySet());
}
- private Map bindingsByName = new HashMap();
+ private Map<Name, LinkedHashMap<AbstractName, Object>> bindingsByName = new HashMap<Name, LinkedHashMap<AbstractName, Object>>();
private synchronized void addBinding(AbstractName abstractName, Name name, Object value) throws NamingException {
- LinkedHashMap bindings = (LinkedHashMap) bindingsByName.get(name);
+ LinkedHashMap<AbstractName, Object> bindings = bindingsByName.get(name);
if (bindings == null) {
addDeepBinding(name, value, true, true);
- bindings = new LinkedHashMap();
+ bindings = new LinkedHashMap<AbstractName, Object>();
bindings.put(abstractName, value);
bindingsByName.put(name, bindings);
+ log.info("bound gbean " + abstractName + " at name " + name);
} else {
bindings.put(abstractName, value);
}
@@ -176,20 +174,18 @@
* @param abstractName the abstract name of the gbean to unbind
*/
protected synchronized void removeBinding(AbstractName abstractName) {
- Set bindingNames = (Set) bindingsByAbstractName.remove(abstractName);
+ Set<Name> bindingNames = bindingsByAbstractName.remove(abstractName);
if (bindingNames == null) return;
- for (Iterator iterator = bindingNames.iterator(); iterator.hasNext();) {
- Name name = (Name) iterator.next();
+ for (Name name : bindingNames) {
- LinkedHashMap bindings = (LinkedHashMap) bindingsByName.get(name);
+ LinkedHashMap<AbstractName, Object> bindings = bindingsByName.get(name);
if (bindings == null) continue;
if (first(bindings).getKey().equals(abstractName)) {
bindings.remove(abstractName);
- Map.Entry newEntry = first(bindings);
+ Map.Entry<AbstractName, Object> newEntry = first(bindings);
if (newEntry != null) {
- Object newAbstractName = newEntry.getValue();
Object newValue = newEntry.getValue();
try {
addDeepBinding(name, newValue, true, true);
@@ -201,7 +197,7 @@
logged = true;
log.error("Unable to remove binding " + name + " to " + abstractName, e);
}
- if (!logged) log.error("Unable to rebind binding " + name + " to " + newAbstractName);
+ if (!logged) log.error("Unable to rebind binding " + name + " to " + newEntry.getKey());
}
} else {
bindingsByName.remove(name);
@@ -210,6 +206,7 @@
} catch (NamingException e) {
log.error("Unable to remove binding " + name + " to " + abstractName, e);
}
+ log.info("unbound gbean " + abstractName + " at name " + name);
}
} else {
bindings.remove(abstractName);
@@ -217,12 +214,12 @@
}
}
- private static Map.Entry first(LinkedHashMap map) {
+ private static Map.Entry<AbstractName, Object> first(LinkedHashMap<AbstractName, Object> map) {
if (map.isEmpty()) return null;
- return (Map.Entry) map.entrySet().iterator().next();
+ return map.entrySet().iterator().next();
}
- protected Map createBindings(AbstractName abstractName, Object value) throws NamingException {
+ protected Map<Name, Object> createBindings(AbstractName abstractName, Object value) throws NamingException {
// generate a name for this binding
Name name = createBindingName(abstractName, value);
if (name == null) return null;
@@ -231,8 +228,7 @@
value = preprocessVaue(abstractName, name, value);
if (value == null) return null;
- Map bindings = Collections.singletonMap(name, value);
- return bindings;
+ return Collections.singletonMap(name, value);
}
/**
@@ -242,6 +238,7 @@
* @param abstractName the abstract name of the gbean to bind
* @param value the gbean instance
* @return the name under which the gbean should be bound
+ * @throws javax.naming.NamingException should something go wrong
*/
protected Name createBindingName(AbstractName abstractName, Object value) throws NamingException {
String shortName = (String) abstractName.getName().get("name");
@@ -256,6 +253,7 @@
* @param name the name under which the gbean will be bound
* @param value the gbean instance
* @return the value to bind
+ * @throws javax.naming.NamingException should something go wrong
*/
protected Object preprocessVaue(AbstractName abstractName, Name name, Object value) throws NamingException {
return value;
Modified: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanBinding.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanBinding.java?rev=615514&r1=615513&r2=615514&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanBinding.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanBinding.java Sat Jan 26 14:08:26 2008
@@ -16,6 +16,14 @@
*/
package org.apache.geronimo.gjndi.binding;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.gbean.AbstractName;
@@ -28,14 +36,6 @@
import org.apache.geronimo.kernel.lifecycle.LifecycleAdapter;
import org.apache.geronimo.kernel.lifecycle.LifecycleListener;
-import javax.naming.Context;
-import javax.naming.NamingException;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
-
/**
* @version $Rev$ $Date$
*/
@@ -48,7 +48,7 @@
private final Kernel kernel;
private final LifecycleListener listener = new GBeanLifecycleListener();
- private final LinkedHashMap bindings = new LinkedHashMap();
+ private final LinkedHashMap<AbstractName, Object> bindings = new LinkedHashMap<AbstractName, Object>();
public GBeanBinding(Context context, String name, AbstractNameQuery abstractNameQuery, Kernel kernel) {
this.context = context;
@@ -59,9 +59,8 @@
public synchronized void doStart() {
kernel.getLifecycleMonitor().addLifecycleListener(listener, abstractNameQuery);
- Set set = kernel.listGBeans(abstractNameQuery);
- for (Iterator iterator = set.iterator(); iterator.hasNext();) {
- AbstractName abstractName = (AbstractName) iterator.next();
+ Set<AbstractName> set = kernel.listGBeans(abstractNameQuery);
+ for (AbstractName abstractName : set) {
try {
if (kernel.isRunning(abstractName)) {
addBinding(abstractName);
@@ -83,9 +82,8 @@
private synchronized void destroy() {
kernel.getLifecycleMonitor().removeLifecycleListener(listener);
- Set abstractNames = new HashSet(bindings.keySet());
- for (Iterator iterator = abstractNames.iterator(); iterator.hasNext();) {
- AbstractName abstractName = (AbstractName) iterator.next();
+ Set<AbstractName> abstractNames = new HashSet<AbstractName>(bindings.keySet());
+ for (AbstractName abstractName : abstractNames) {
removeBinding(abstractName);
}
bindings.clear();
@@ -130,7 +128,7 @@
}
// get the gbean
- Object instance = null;
+ Object instance;
try {
instance = kernel.getGBean(abstractName);
} catch (GBeanNotFoundException e) {
Added: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanFormatBinding.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanFormatBinding.java?rev=615514&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanFormatBinding.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanFormatBinding.java Sat Jan 26 14:08:26 2008
@@ -0,0 +1,106 @@
+/*
+ * 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.geronimo.gjndi.binding;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.naming.Name;
+import javax.naming.NamingException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gjndi.KernelContextGBean;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.repository.Artifact;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class GBeanFormatBinding extends KernelContextGBean {
+ protected static final Log log = LogFactory.getLog(GBeanFormatBinding.class);
+ private static final Pattern PATTERN = Pattern.compile("(\\{)(\\w+)(})");
+
+ protected final String format;
+ protected final Pattern namePattern;
+
+ public GBeanFormatBinding(String format, String namePattern, String nameInNamespace, AbstractNameQuery abstractNameQuery, Kernel kernel) throws NamingException {
+ super(nameInNamespace, abstractNameQuery, kernel);
+ this.format = format;
+ if (namePattern != null && namePattern.length() > 0) {
+ this.namePattern = Pattern.compile(namePattern);
+ } else {
+ this.namePattern = null;
+ }
+ }
+
+ @Override
+ protected Name createBindingName(AbstractName abstractName, Object value) throws NamingException {
+ String name = abstractName.getNameProperty("name");
+ if (namePattern != null) {
+ Matcher matcher = namePattern.matcher(name);
+ if (!matcher.matches()) {
+ return null;
+ }
+ }
+ Map<String, String> map = new HashMap<String, String>(abstractName.getName());
+ Artifact artifact = abstractName.getArtifact();
+ map.put("groupId", artifact.getGroupId());
+ map.put("artifactId", artifact.getArtifactId());
+ map.put("version", artifact.getVersion().toString());
+ map.put("type", artifact.getType());
+ String fullName = format(format, map);
+ return getNameParser().parse(fullName);
+ }
+
+ static String format(String input, Map<String, String> map) {
+ Matcher matcher = PATTERN.matcher(input);
+ StringBuffer buf = new StringBuffer();
+ while (matcher.find()) {
+ String key = matcher.group(2);
+ String value = map.get(key);
+ matcher.appendReplacement(buf, value);
+ }
+ matcher.appendTail(buf);
+ return buf.toString();
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder builder = GBeanInfoBuilder.createStatic(GBeanFormatBinding.class, KernelContextGBean.GBEAN_INFO, "Context");
+ builder.addAttribute("format", String.class, true);
+ builder.addAttribute("namePattern", String.class, true);
+ builder.setConstructor(new String[]{"format", "namePattern", "nameInNamespace", "abstractNameQuery", "kernel"});
+ GBEAN_INFO = builder.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+
+}
Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanFormatBinding.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanFormatBinding.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/GBeanFormatBinding.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/ResourceBinding.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/ResourceBinding.java?rev=615514&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/ResourceBinding.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/ResourceBinding.java Sat Jan 26 14:08:26 2008
@@ -0,0 +1,68 @@
+/**
+ * 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.geronimo.gjndi.binding;
+
+import javax.naming.NamingException;
+
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.naming.ResourceSource;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ResourceBinding extends GBeanFormatBinding {
+
+ public ResourceBinding(String format, String namePattern, String nameInNamespace, AbstractNameQuery abstractNameQuery, Kernel kernel) throws NamingException {
+ super(format, namePattern, nameInNamespace, abstractNameQuery, kernel);
+ }
+
+ /**
+ * Preprocess the value before it is bound. This is usefult for wrapping values with reference objects.
+ * By default, this method simply return the value.
+ *
+ * @param abstractName the abstract name of the gbean to bind
+ * @param value the gbean instance
+ * @return the value to bind or null if there was a problem
+ */
+ protected Object preprocessVaue(AbstractName abstractName, Object value) {
+ if (!(value instanceof ResourceSource)) {
+ log.info("value at " + abstractName + " is not a ResourceSource: " + value.getClass().getName());
+ return null;
+ }
+ try {
+ return ((ResourceSource) value).$getResource();
+ } catch (Throwable throwable) {
+ log.info("Could not get resource from gbean at " + abstractName,throwable);
+ return null;
+ }
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder builder = GBeanInfoBuilder.createStatic(ResourceBinding.class, GBeanFormatBinding.GBEAN_INFO, "Context");
+ GBEAN_INFO = builder.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+}
\ No newline at end of file
Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/ResourceBinding.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/ResourceBinding.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/main/java/org/apache/geronimo/gjndi/binding/ResourceBinding.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/framework/modules/geronimo-naming/src/test/java/org/apache/geronimo/gjndi/binding/FormatTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-naming/src/test/java/org/apache/geronimo/gjndi/binding/FormatTest.java?rev=615514&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-naming/src/test/java/org/apache/geronimo/gjndi/binding/FormatTest.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-naming/src/test/java/org/apache/geronimo/gjndi/binding/FormatTest.java Sat Jan 26 14:08:26 2008
@@ -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.geronimo.gjndi.binding;
+
+import java.util.Map;
+import java.util.HashMap;
+
+import junit.framework.TestCase;
+import org.apache.geronimo.gbean.GBeanInfo;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class FormatTest extends TestCase {
+
+ public void testPattern() throws Exception {
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("foo", "white");
+ map.put("bar", "black");
+ assertEquals("white/black", GBeanFormatBinding.format("{foo}/{bar}", map));
+ assertEquals("black/black", GBeanFormatBinding.format("{bar}/{bar}", map));
+ assertEquals("java:white/test/black/test", GBeanFormatBinding.format("java:{foo}/test/{bar}/test", map));
+ }
+
+ public void testGBeanInfos() throws Exception {
+ GBeanInfo info = ResourceBinding.getGBeanInfo();
+ info = GBeanFormatBinding.getGBeanInfo();
+ }
+
+}
Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/test/java/org/apache/geronimo/gjndi/binding/FormatTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/test/java/org/apache/geronimo/gjndi/binding/FormatTest.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/framework/modules/geronimo-naming/src/test/java/org/apache/geronimo/gjndi/binding/FormatTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/plugins/connector/transaction/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector/transaction/pom.xml?rev=615514&r1=615513&r2=615514&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector/transaction/pom.xml (original)
+++ geronimo/server/trunk/plugins/connector/transaction/pom.xml Sat Jan 26 14:08:26 2008
@@ -108,6 +108,22 @@
<value>true</value>
<includeVersion>true</includeVersion>
</useMavenDependencies>
+ <instance>
+ <plugin-artifact>
+ <config-xml-content>
+ <gbean name="ResourceBindings" class="org.apache.geronimo.gjndi.binding.ResourceBinding">
+ <attribute name="format">${ResourceBindingsFormat}</attribute>
+ <attribute name="nameInNamespace">${ResourceBindingsNameInNamespace}</attribute>
+ <attribute name="namePattern">${ResourceBindingsNamePattern}</attribute>
+ <attribute name="abstractNameQuery">${ResourceBindingsQuery}</attribute>
+ </gbean>
+ </config-xml-content>
+ <config-substitution key="ResourceBindingsFormat">{groupId}/{artifactId}/{j2eeType}/{name}</config-substitution>
+ <config-substitution key="ResourceBindingsNameInNamespace">jca:</config-substitution>
+ <config-substitution key="ResourceBindingsNamePattern"></config-substitution>
+ <config-substitution key="ResourceBindingsQuery">?#org.apache.geronimo.naming.ResourceSource</config-substitution>
+ </plugin-artifact>
+ </instance>
</configuration>
</plugin>
</plugins>
Modified: geronimo/server/trunk/plugins/connector/transaction/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector/transaction/src/main/plan/plan.xml?rev=615514&r1=615513&r2=615514&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector/transaction/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/connector/transaction/src/main/plan/plan.xml Sat Jan 26 14:08:26 2008
@@ -100,4 +100,10 @@
</reference>
</gbean>
+ <gbean name="ResourceBindings" class="org.apache.geronimo.gjndi.binding.ResourceBinding">
+ <attribute name="format">{groupId}/{artifactId}/{j2eeType}/{name}</attribute>
+ <attribute name="nameInNamespace">jca:</attribute>
+ <attribute name="abstractNameQuery">?#org.apache.geronimo.naming.ResourceSource</attribute>
+ </gbean>
+
</module>