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 2004/03/09 19:03:11 UTC
cvs commit: incubator-geronimo/modules/naming/src/test/org/apache/geronimo/naming/java ContextBuilderTest.java
djencks 2004/03/09 10:03:11
Modified: modules/naming maven.xml project.xml
modules/naming/src/java/org/apache/geronimo/naming/deployment
ENCHelper.java
modules/naming/src/java/org/apache/geronimo/naming/java
ComponentContextBuilder.java ReadOnlyContext.java
modules/naming/src/schema geronimo-naming.xsd
modules/naming/src/test/org/apache/geronimo/naming/java
ContextBuilderTest.java
Added: modules/naming/src/java/org/apache/geronimo/naming/deployment
ENCConfigBuilder.java LocalRefDConfigBean.java
RefAdapter.java RemoteRefDConfigBean.java
modules/naming/src/java/org/apache/geronimo/naming/jmx
JMXObjectFactory.java JMXRefAddr.java
JMXReferenceFactory.java
Removed: modules/naming/src/java/org/apache/geronimo/naming/deployment
EJBLocalRefDConfigBean.java EJBRefDConfigBean.java
MessageDestinationRefDConfigBean.java
ResourceEnvRefDConfigBean.java
ResourceRefDConfigBean.java
modules/naming/src/java/org/apache/geronimo/naming/proxy
CFContainer.java EJBContainer.java
ExternalProxy.java ProxyFactory.java
ProxyManager.java
Log:
Remove proxy idea, introduce geronimo-specific References
Revision Changes Path
1.2 +3 -3 incubator-geronimo/modules/naming/maven.xml
Index: maven.xml
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/naming/maven.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- maven.xml 14 Feb 2004 16:55:28 -0000 1.1
+++ maven.xml 9 Mar 2004 18:03:11 -0000 1.2
@@ -5,13 +5,13 @@
<project default="default"
xmlns:xmlbeans="geronimo:xmlbeans">
- <preGoal name="java:compile">
+ <!--preGoal name="java:compile">
<xmlbeans:schema2java
sourcedir="${basedir}/src"
sourceschema="schema/geronimo-naming.xsd"
xmlconfigs="${basedir}/src/schema/xmlconfig.xml"
targetdir="${basedir}/target/xmlbeans"
cataloglocation="${basedir}/../../specs/schema/src/catalog/resolver-catalog.xml"/>
- </preGoal>
+ </preGoal-->
</project>
1.7 +22 -1 incubator-geronimo/modules/naming/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/naming/project.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- project.xml 19 Feb 2004 09:00:28 -0000 1.6
+++ project.xml 9 Mar 2004 18:03:11 -0000 1.7
@@ -72,6 +72,27 @@
<artifactId>geronimo-spec-jta</artifactId>
<version>${pom.currentVersion}</version>
</dependency>
+
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib-full</artifactId>
+ <version>2.0-RC2</version>
+ <url>http://cglib.sf.net/</url>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.0.3</version>
+ <url>http://jakarta.apache.org/commons/logging/</url>
+ </dependency>
+
+ <dependency>
+ <groupId>mx4j</groupId>
+ <artifactId>mx4j</artifactId>
+ <version>SNAPSHOT</version>
+ </dependency>
+
</dependencies>
<build>
1.4 +185 -141 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/deployment/ENCHelper.java
Index: ENCHelper.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/deployment/ENCHelper.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ENCHelper.java 25 Feb 2004 09:57:57 -0000 1.3
+++ ENCHelper.java 9 Mar 2004 18:03:11 -0000 1.4
@@ -22,13 +22,9 @@
import javax.enterprise.deploy.model.DDBean;
import javax.enterprise.deploy.spi.DConfigBean;
+import javax.enterprise.deploy.spi.exceptions.BeanNotFoundException;
import javax.enterprise.deploy.spi.exceptions.ConfigurationException;
-import org.apache.geronimo.xbeans.geronimo.GerEjbLocalRefType;
-import org.apache.geronimo.xbeans.geronimo.GerEjbRefType;
-import org.apache.geronimo.xbeans.geronimo.GerMessageDestinationRefType;
-import org.apache.geronimo.xbeans.geronimo.GerResourceEnvRefType;
-import org.apache.geronimo.xbeans.geronimo.GerResourceRefType;
import org.apache.xmlbeans.SchemaTypeLoader;
import org.apache.xmlbeans.XmlBeans;
@@ -38,194 +34,222 @@
* @version $Revision$ $Date$
*/
public class ENCHelper {
- static final SchemaTypeLoader SCHEMA_TYPE_LOADER = XmlBeans.typeLoaderUnion(new SchemaTypeLoader[] {
+ static final SchemaTypeLoader SCHEMA_TYPE_LOADER = XmlBeans.typeLoaderUnion(new SchemaTypeLoader[]{
XmlBeans.typeLoaderForClassLoader(org.apache.geronimo.xbeans.j2ee.String.class.getClassLoader()),
- XmlBeans.typeLoaderForClassLoader(GerEjbRefType.class.getClassLoader())
});
- public static final String[] ENC_XPATHS = {
- "ejb-ref",
- "ejb-local-ref",
- "message-destination-ref",
- "resource-env-ref",
- "resource-ref",
+ public static final String[][] ENC_XPATHS = {
+ {"ejb-ref"},
+ {"ejb-local-ref"},
+ {"message-destination-ref"},
+ {"resource-env-ref"},
+ {"resource-ref"},
+ };
+
+ public static final String[][] NAME_XPATHS = {
+ {"ejb-ref-name"},
+ {"ejb-ref-name"},
+ {"message-destination-ref-name"},
+ {"resource-env-ref-name"},
+ {"res-ref-name"}
};
private final DDBean ddBean;
private final XmlEnvRefs envRefs;
- private EJBRefDConfigBean[] ejbRefs;
+ private final String[] xpaths;
+ private final String[] namePaths;
- private EJBLocalRefDConfigBean[] ejbLocalRefs;
- private MessageDestinationRefDConfigBean[] messageDestinationRefs;
- private ResourceEnvRefDConfigBean[] resourceEnvRefs;
- private ResourceRefDConfigBean[] resourceRefs;
+ private LocalRefDConfigBean[] ejbRefs;
- public ENCHelper(DDBean ddBean, XmlEnvRefs envRefs) {
+ private LocalRefDConfigBean[] ejbLocalRefs;
+ private LocalRefDConfigBean[] messageDestinationRefs;
+ private LocalRefDConfigBean[] resourceEnvRefs;
+ private LocalRefDConfigBean[] resourceRefs;
+
+ public ENCHelper(DDBean ddBean, XmlEnvRefs envRefs, String[] xpaths, String[] namePaths) {
this.ddBean = ddBean;
this.envRefs = envRefs;
- DDBean[] ddEjbRefs = ddBean.getChildBean(ENC_XPATHS[0]);
+ this.xpaths = xpaths;
+ this.namePaths = namePaths;
+ DDBean[] ddEjbRefs = ddBean.getChildBean(xpaths[0]);
if (ddEjbRefs == null) {
ddEjbRefs = new DDBean[0];
}
- ejbRefs = new EJBRefDConfigBean[ddEjbRefs.length];
- GerEjbRefType[] xmlEjbRefs = envRefs.getEjbRefs();
+ ejbRefs = new RemoteRefDConfigBean[ddEjbRefs.length];
+ RefAdapter[] xmlEjbRefs = envRefs.getEjbRefs();
Map ejbRefMap = new HashMap();
for (int i = 0; i < xmlEjbRefs.length; i++) {
- GerEjbRefType xmlEjbRef = xmlEjbRefs[i];
- ejbRefMap.put(xmlEjbRef.getEjbRefName().getStringValue(), xmlEjbRef.getUri());
+ RefAdapter refAdapter = xmlEjbRefs[i];
+ ejbRefMap.put(refAdapter.getRefName(), refAdapter);
envRefs.removeEjbRef(0);
}
for (int i = 0; i < ddEjbRefs.length; i++) {
- DDBean ddEjbRef = ddEjbRefs[i];
- String name = ddEjbRef.getText("ejb-ref-name")[0];
- GerEjbRefType xmlEjbRef = envRefs.addNewEjbRef();
- xmlEjbRef.addNewEjbRefName().setStringValue(name);
- if (ejbRefMap.get(name) != null) {
- xmlEjbRef.setUri((String)ejbRefMap.get(name));
+ DDBean ddRef = ddEjbRefs[i];
+ String name = ddRef.getText(namePaths[0])[0];
+ RefAdapter refAdapter;
+ if (ejbRefMap.get(name) == null) {
+ refAdapter = envRefs.addNewEjbRef();
+ refAdapter.setRefName(name);
+ } else {
+ refAdapter = (RefAdapter) ejbRefMap.get(name);
+ envRefs.setEjbRef(i, refAdapter);
}
- ejbRefs[i] = new EJBRefDConfigBean(ddEjbRef, xmlEjbRef);
+ ejbRefs[i] = new RemoteRefDConfigBean(ddRef, refAdapter, namePaths[0]);
}
- DDBean[] ddEjbLocalRefs = ddBean.getChildBean(ENC_XPATHS[1]);
+ DDBean[] ddEjbLocalRefs = ddBean.getChildBean(xpaths[1]);
if (ddEjbLocalRefs == null) {
ddEjbLocalRefs = new DDBean[0];
}
- ejbLocalRefs = new EJBLocalRefDConfigBean[ddEjbLocalRefs.length];
- GerEjbLocalRefType[] xmlEjbLocalRefs = envRefs.getEjbLocalRefs();
- Map EjbLocalRefMap = new HashMap();
+ ejbLocalRefs = new LocalRefDConfigBean[ddEjbLocalRefs.length];
+ RefAdapter[] xmlEjbLocalRefs = envRefs.getEjbLocalRefs();
+ Map ejbLocalRefMap = new HashMap();
for (int i = 0; i < xmlEjbLocalRefs.length; i++) {
- GerEjbLocalRefType xmlEjbLocalRef = xmlEjbLocalRefs[i];
- EjbLocalRefMap.put(xmlEjbLocalRef.getEjbRefName().getStringValue(), xmlEjbLocalRef.getUri());
+ RefAdapter refAdapter = xmlEjbLocalRefs[i];
+ ejbLocalRefMap.put(refAdapter.getRefName(), refAdapter);
envRefs.removeEjbLocalRef(0);
}
for (int i = 0; i < ddEjbLocalRefs.length; i++) {
- DDBean ddEjbLocalRef = ddEjbLocalRefs[i];
- String name = ddEjbLocalRef.getText("ejb-ref-name")[0];
- GerEjbLocalRefType xmlEjbLocalRef = envRefs.addNewEjbLocalRef();
- xmlEjbLocalRef.addNewEjbRefName().setStringValue(name);
- if (EjbLocalRefMap.get(name) != null) {
- xmlEjbLocalRef.setUri((String)EjbLocalRefMap.get(name));
+ DDBean ddRef = ddEjbLocalRefs[i];
+ String name = ddRef.getText(namePaths[1])[0];
+ RefAdapter refAdapter;
+ if (ejbLocalRefMap.get(name) == null) {
+ refAdapter = envRefs.addNewEjbLocalRef();
+ refAdapter.setRefName(name);
+ } else {
+ refAdapter = (RefAdapter) ejbLocalRefMap.get(name);
+ envRefs.setEjbLocalRef(i, refAdapter);
}
- ejbLocalRefs[i] = new EJBLocalRefDConfigBean(ddEjbLocalRef, xmlEjbLocalRef);
+ ejbLocalRefs[i] = new LocalRefDConfigBean(ddRef, refAdapter, namePaths[1]);
}
- DDBean[] ddMessageDestinationRefs = ddBean.getChildBean(ENC_XPATHS[2]);
+ DDBean[] ddMessageDestinationRefs = ddBean.getChildBean(xpaths[2]);
if (ddMessageDestinationRefs == null) {
ddMessageDestinationRefs = new DDBean[0];
}
- messageDestinationRefs = new MessageDestinationRefDConfigBean[ddMessageDestinationRefs.length];
- GerMessageDestinationRefType[] xmlMessageDestinationRefs = envRefs.getMessageDestinationRefs();
- Map MessageDestinationRefMap = new HashMap();
+ messageDestinationRefs = new LocalRefDConfigBean[ddMessageDestinationRefs.length];
+ RefAdapter[] xmlMessageDestinationRefs = envRefs.getMessageDestinationRefs();
+ Map messageDestinationRefMap = new HashMap();
for (int i = 0; i < xmlMessageDestinationRefs.length; i++) {
- GerMessageDestinationRefType xmlMessageDestinationRef = xmlMessageDestinationRefs[i];
- MessageDestinationRefMap.put(xmlMessageDestinationRef.getMessageDestinationRefName().getStringValue(), xmlMessageDestinationRef.getUri());
+ RefAdapter refAdapter = xmlMessageDestinationRefs[i];
+ messageDestinationRefMap.put(refAdapter.getRefName(), refAdapter);
envRefs.removeMessageDestinationRef(0);
}
for (int i = 0; i < ddMessageDestinationRefs.length; i++) {
- DDBean ddMessageDestinationRef = ddMessageDestinationRefs[i];
- String name = ddMessageDestinationRef.getText("message-destination-ref-name")[0];
- GerMessageDestinationRefType xmlMessageDestinationRef = envRefs.addNewMessageDestinationRef();
- xmlMessageDestinationRef.addNewMessageDestinationRefName().setStringValue(name);
- if (MessageDestinationRefMap.get(name) != null) {
- xmlMessageDestinationRef.setUri((String)MessageDestinationRefMap.get(name));
+ DDBean ddRef = ddMessageDestinationRefs[i];
+ String name = ddRef.getText(namePaths[2])[0];
+ RefAdapter refAdapter;
+ if (messageDestinationRefMap.get(name) == null) {
+ refAdapter = envRefs.addNewMessageDestinationRef();
+ refAdapter.setRefName(name);
+ } else {
+ refAdapter = (RefAdapter) messageDestinationRefMap.get(name);
+ envRefs.setMessageDestinationRef(i, refAdapter);
}
- messageDestinationRefs[i] = new MessageDestinationRefDConfigBean(ddMessageDestinationRef, xmlMessageDestinationRef);
- }
+ //??? local or remote
+ messageDestinationRefs[i] = new RemoteRefDConfigBean(ddRef, refAdapter, namePaths[2]);
+ }
- DDBean[] ddResourceEnvRefs = ddBean.getChildBean(ENC_XPATHS[3]);
+ DDBean[] ddResourceEnvRefs = ddBean.getChildBean(xpaths[3]);
if (ddResourceEnvRefs == null) {
ddResourceEnvRefs = new DDBean[0];
}
- resourceEnvRefs = new ResourceEnvRefDConfigBean[ddResourceEnvRefs.length];
- GerResourceEnvRefType[] xmlResourceEnvRefs = envRefs.getResourceEnvRefs();
- Map ResourceEnvRefMap = new HashMap();
+ resourceEnvRefs = new LocalRefDConfigBean[ddResourceEnvRefs.length];
+ RefAdapter[] xmlResourceEnvRefs = envRefs.getResourceEnvRefs();
+ Map resourceEnvRefMap = new HashMap();
for (int i = 0; i < xmlResourceEnvRefs.length; i++) {
- GerResourceEnvRefType xmlResourceEnvRef = xmlResourceEnvRefs[i];
- ResourceEnvRefMap.put(xmlResourceEnvRef.getResourceEnvRefName().getStringValue(), xmlResourceEnvRef.getUri());
+ RefAdapter refAdapter = xmlResourceEnvRefs[i];
+ resourceEnvRefMap.put(refAdapter.getRefName(), refAdapter);
envRefs.removeResourceEnvRef(0);
}
for (int i = 0; i < ddResourceEnvRefs.length; i++) {
- DDBean ddResourceEnvRef = ddResourceEnvRefs[i];
- String name = ddResourceEnvRef.getText("resource-env-ref-name")[0];
- GerResourceEnvRefType xmlResourceEnvRef = envRefs.addNewResourceEnvRef();
- xmlResourceEnvRef.addNewResourceEnvRefName().setStringValue(name);
- if (ResourceEnvRefMap.get(name) != null) {
- xmlResourceEnvRef.setUri((String)ResourceEnvRefMap.get(name));
+ DDBean ddRef = ddResourceEnvRefs[i];
+ String name = ddRef.getText(namePaths[3])[0];
+ RefAdapter refAdapter;
+ if (resourceEnvRefMap.get(name) == null) {
+ refAdapter = envRefs.addNewResourceEnvRef();
+ refAdapter.setRefName(name);
+ } else {
+ refAdapter = (RefAdapter) resourceEnvRefMap.get(name);
+ envRefs.setResourceEnvRef(i, refAdapter);
}
- resourceEnvRefs[i] = new ResourceEnvRefDConfigBean(ddResourceEnvRef, xmlResourceEnvRef);
+ resourceEnvRefs[i] = new LocalRefDConfigBean(ddRef, refAdapter, namePaths[3]);
}
- DDBean[] ddResourceRefs = ddBean.getChildBean(ENC_XPATHS[4]);
+ DDBean[] ddResourceRefs = ddBean.getChildBean(xpaths[4]);
if (ddResourceRefs == null) {
ddResourceRefs = new DDBean[0];
}
- resourceRefs = new ResourceRefDConfigBean[ddResourceRefs.length];
- GerResourceRefType[] xmlResourceRefs = envRefs.getResourceRefs();
- Map ResourceRefMap = new HashMap();
+ resourceRefs = new LocalRefDConfigBean[ddResourceRefs.length];
+ RefAdapter[] xmlResourceRefs = envRefs.getResourceRefs();
+ Map resourceRefMap = new HashMap();
for (int i = 0; i < xmlResourceRefs.length; i++) {
- GerResourceRefType xmlResourceRef = xmlResourceRefs[i];
- ResourceRefMap.put(xmlResourceRef.getResRefName().getStringValue(), xmlResourceRef.getUri());
+ RefAdapter refAdapter = xmlResourceRefs[i];
+ resourceRefMap.put(refAdapter.getRefName(), refAdapter);
envRefs.removeResourceRef(0);
}
for (int i = 0; i < ddResourceRefs.length; i++) {
- DDBean ddResourceRef = ddResourceRefs[i];
- String name = ddResourceRef.getText("res-ref-name")[0];
- GerResourceRefType xmlResourceRef = envRefs.addNewResourceRef();
- xmlResourceRef.addNewResRefName().setStringValue(name);
- if (ResourceRefMap.get(name) != null) {
- xmlResourceRef.setUri((String)ResourceRefMap.get(name));
+ DDBean ddRef = ddResourceRefs[i];
+ String name = ddRef.getText(namePaths[4])[0];
+ RefAdapter refAdapter;
+ if (resourceRefMap.get(name) == null) {
+ refAdapter = envRefs.addNewResourceRef();
+ refAdapter.setRefName(name);
+ } else {
+ refAdapter = (RefAdapter) resourceRefMap.get(name);
+ envRefs.setResourceRef(i, refAdapter);
}
- resourceRefs[i] = new ResourceRefDConfigBean(ddResourceRef, xmlResourceRef);
+ resourceRefs[i] = new LocalRefDConfigBean(ddRef, refAdapter, namePaths[4]);
}
}
public DConfigBean getDConfigBean(DDBean ddBean) throws ConfigurationException {
String xpath = ddBean.getXpath();
- if (xpath.equals(ENC_XPATHS[0])) {
- String name = ddBean.getText("ejb-ref-name")[0];
+ if (xpath.equals(xpaths[0])) {
+ String name = ddBean.getText(namePaths[0])[0];
for (int i = 0; i < ejbRefs.length; i++) {
- EJBRefDConfigBean ejbRef = ejbRefs[i];
- if (ejbRef.getEjbRefName().equals(name)) {
+ LocalRefDConfigBean ejbRef = ejbRefs[i];
+ if (ejbRef.getRefName().equals(name)) {
return ejbRef;
}
}
throw new ConfigurationException("no such ejb-ref-name" + name);
- } else if (xpath.equals(ENC_XPATHS[1])) {
- String name = ddBean.getText("ejb-ref-name")[0];
+ } else if (xpath.equals(xpaths[1])) {
+ String name = ddBean.getText(namePaths[1])[0];
for (int i = 0; i < ejbLocalRefs.length; i++) {
- EJBLocalRefDConfigBean ejbLocalRef = ejbLocalRefs[i];
- if (ejbLocalRef.getEjbRefName().equals(name)) {
+ LocalRefDConfigBean ejbLocalRef = ejbLocalRefs[i];
+ if (ejbLocalRef.getRefName().equals(name)) {
return ejbLocalRef;
}
}
throw new ConfigurationException("no such ejb-ref-name" + name);
- } else if (xpath.equals(ENC_XPATHS[2])) {
- String name = ddBean.getText("message-destination-ref-name")[0];
+ } else if (xpath.equals(xpaths[2])) {
+ String name = ddBean.getText(namePaths[2])[0];
for (int i = 0; i < messageDestinationRefs.length; i++) {
- MessageDestinationRefDConfigBean messageDestinationRef = messageDestinationRefs[i];
- if (messageDestinationRef.getMessageDestinationRefName().equals(name)) {
+ LocalRefDConfigBean messageDestinationRef = messageDestinationRefs[i];
+ if (messageDestinationRef.getRefName().equals(name)) {
return messageDestinationRef;
}
}
throw new ConfigurationException("no such ejb-ref-name" + name);
- } else if (xpath.equals(ENC_XPATHS[3])) {
- String name = ddBean.getText("resource-env-ref-name")[0];
+ } else if (xpath.equals(xpaths[3])) {
+ String name = ddBean.getText(namePaths[3])[0];
for (int i = 0; i < resourceEnvRefs.length; i++) {
- ResourceEnvRefDConfigBean resourceEnvRef = resourceEnvRefs[i];
- if (resourceEnvRef.getResourceEnvRefName().equals(name)) {
+ LocalRefDConfigBean resourceEnvRef = resourceEnvRefs[i];
+ if (resourceEnvRef.getRefName().equals(name)) {
return resourceEnvRef;
}
}
throw new ConfigurationException("no such ejb-ref-name" + name);
- } else if (xpath.equals(ENC_XPATHS[4])) {
- String name = ddBean.getText("res-ref-name")[0];
+ } else if (xpath.equals(xpaths[4])) {
+ String name = ddBean.getText(namePaths[4])[0];
for (int i = 0; i < resourceRefs.length; i++) {
- ResourceRefDConfigBean resourceRef = resourceRefs[i];
- if (resourceRef.getResourceRefName().equals(name)) {
+ LocalRefDConfigBean resourceRef = resourceRefs[i];
+ if (resourceRef.getRefName().equals(name)) {
return resourceRef;
}
}
@@ -234,54 +258,74 @@
throw new ConfigurationException("Unrecognized XPath: " + ddBean.getXpath());
}
}
- /*
- public void removeDConfigBean(DConfigBean dcBean) throws BeanNotFoundException {
- DDBean ddBean = dcBean.getDDBean();
- String xpath = ddBean.getXpath();
- String name = ddBean.getText();
- if (xpath.endsWith("ejb-ref/ejb-ref-name")) {
- if (ejbRefs.remove(name) == null) {
- throw new BeanNotFoundException("No DConfigBean found with name: " + name);
- }
- } else if (xpath.endsWith("ejb-local-ref/ejb-ref-name")) {
- if (ejbLocalRefs.remove(name) == null) {
- throw new BeanNotFoundException("No DConfigBean found with name: " + name);
- }
- } else if (xpath.endsWith("service-ref/service-ref-name")) {
- if (serviceRefs.remove(name) == null) {
- throw new BeanNotFoundException("No DConfigBean found with name: " + name);
- }
- } else if (xpath.endsWith("resource-ref/res-ref-name")) {
- if (resourceRefs.remove(name) == null) {
- throw new BeanNotFoundException("No DConfigBean found with name: " + name);
- }
- } else {
- throw new BeanNotFoundException("Unrecognized XPath: " + xpath);
- }
- }
+ public void removeDConfigBean(DConfigBean dcBean) throws BeanNotFoundException {
+ DDBean ddBean = dcBean.getDDBean();
+ String xpath = ddBean.getXpath();
+ String name = ddBean.getText();
+ /*
+ if (xpath.endsWith("ejb-ref/ejb-ref-name")) {
+ if (ejbRefs.remove(name) == null) {
+ throw new BeanNotFoundException("No DConfigBean found with name: " + name);
+ }
+ } else if (xpath.endsWith("ejb-local-ref/ejb-ref-name")) {
+ if (ejbLocalRefs.remove(name) == null) {
+ throw new BeanNotFoundException("No DConfigBean found with name: " + name);
+ }
+ } else if (xpath.endsWith("service-ref/service-ref-name")) {
+ if (serviceRefs.remove(name) == null) {
+ throw new BeanNotFoundException("No DConfigBean found with name: " + name);
+ }
+ } else if (xpath.endsWith("resource-ref/res-ref-name")) {
+ if (resourceRefs.remove(name) == null) {
+ throw new BeanNotFoundException("No DConfigBean found with name: " + name);
+ }
+ } else {
+ throw new BeanNotFoundException("Unrecognized XPath: " + xpath);
+ }
+ */
+ }
- */
public interface XmlEnvRefs {
- GerEjbRefType[] getEjbRefs();
- GerEjbRefType addNewEjbRef();
+ RefAdapter[] getEjbRefs();
+
+ RefAdapter addNewEjbRef();
+
+ void setEjbRef(int i, RefAdapter refAdapter);
+
void removeEjbRef(int i);
- GerEjbLocalRefType[] getEjbLocalRefs();
- GerEjbLocalRefType addNewEjbLocalRef();
+ RefAdapter[] getEjbLocalRefs();
+
+ RefAdapter addNewEjbLocalRef();
+
+ void setEjbLocalRef(int i, RefAdapter refAdapter);
+
void removeEjbLocalRef(int i);
- GerMessageDestinationRefType[] getMessageDestinationRefs();
- GerMessageDestinationRefType addNewMessageDestinationRef();
+ RefAdapter[] getMessageDestinationRefs();
+
+ RefAdapter addNewMessageDestinationRef();
+
+ void setMessageDestinationRef(int i, RefAdapter refAdapter);
+
void removeMessageDestinationRef(int i);
- GerResourceEnvRefType[] getResourceEnvRefs();
- GerResourceEnvRefType addNewResourceEnvRef();
+ RefAdapter[] getResourceEnvRefs();
+
+ RefAdapter addNewResourceEnvRef();
+
+ void setResourceEnvRef(int i, RefAdapter refAdapter);
+
void removeResourceEnvRef(int i);
- GerResourceRefType[] getResourceRefs();
- GerResourceRefType addNewResourceRef();
+ RefAdapter[] getResourceRefs();
+
+ RefAdapter addNewResourceRef();
+
+ void setResourceRef(int i, RefAdapter refAdapter);
+
void removeResourceRef(int i);
}
1.1 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java
Index: ENCConfigBuilder.java
===================================================================
/**
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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.naming.deployment;
import java.util.Map;
import javax.naming.NamingException;
import org.apache.geronimo.xbeans.j2ee.EnvEntryType;
import org.apache.geronimo.xbeans.j2ee.ResourceRefType;
import org.apache.geronimo.deployment.DeploymentException;
import org.apache.geronimo.naming.java.ComponentContextBuilder;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/03/09 18:03:11 $
*
* */
public class ENCConfigBuilder {
public static void addEnvEntries(EnvEntryType[] envEntries, ComponentContextBuilder builder) throws DeploymentException {
for (int i = 0; i < envEntries.length; i++) {
EnvEntryType envEntry = envEntries[i];
String name = envEntry.getEnvEntryName().getStringValue();
String type = envEntry.getEnvEntryType().getStringValue();
String text = envEntry.getEnvEntryValue().getStringValue();
try {
builder.addEnvEntry(name, type, text);
} catch (NumberFormatException e) {
throw new DeploymentException("Invalid env-entry value for name: " + name, e);
} catch (NamingException e) {
throw new DeploymentException("Invalid env-entry definition for name: " + name, e);
}
}
}
public static void addResourceRefs(ResourceRefType[] resourceRefs, ClassLoader cl, Map refAdapterMap, ComponentContextBuilder builder) throws DeploymentException {
for (int i = 0; i < resourceRefs.length; i++) {
ResourceRefType resourceRef = resourceRefs[i];
String name = resourceRef.getResRefName().getStringValue();
String type = resourceRef.getResType().getStringValue();
Class iface = null;
try {
iface = cl.loadClass(type);
} catch (ClassNotFoundException e) {
throw new DeploymentException("could not load class " + type, e);
}
RefAdapter refAdapter = (RefAdapter) refAdapterMap.get(name);
try {
builder.addResourceRef(name, iface, refAdapter);
} catch (NamingException e) {
throw new DeploymentException("Invalid env-entry definition for name: " + name, e);
}
}
}
}
1.1 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/deployment/LocalRefDConfigBean.java
Index: LocalRefDConfigBean.java
===================================================================
/**
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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.naming.deployment;
import javax.enterprise.deploy.model.DDBean;
import org.apache.geronimo.deployment.plugin.DConfigBeanSupport;
import org.apache.xmlbeans.SchemaTypeLoader;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/03/09 18:03:11 $
*/
public class LocalRefDConfigBean extends DConfigBeanSupport {
protected final RefAdapter ref;
public LocalRefDConfigBean(DDBean ddBean, RefAdapter ref, String namePath) {
super(ddBean, ref.getXmlObject());
this.ref = ref;
assert ddBean.getChildBean(namePath)[0].equals(getRefName());
}
String getRefName() {
return ref.getRefName();
}
public String getExternalUri() {
return ref.getExternalUri();
}
public void setExternalUri(String targetURI) {
ref.setExternalUri(targetURI);
}
public String getKernelName() {
return ref.getKernelName();
}
public void setKernelName(String kernelName) {
ref.setKernelName(kernelName);
}
public String getTargetName() {
return ref.getTargetName();
}
public void setTargetName(String targetName) {
ref.setTargetName(targetName);
}
protected SchemaTypeLoader getSchemaTypeLoader() {
return ENCHelper.SCHEMA_TYPE_LOADER;
}
}
1.1 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/deployment/RefAdapter.java
Index: RefAdapter.java
===================================================================
package org.apache.geronimo.naming.deployment;
import org.apache.xmlbeans.XmlObject;
/**
* adapting wrapper for different xml objects generated for different schema incusions.
*
* @version $Revision: 1.1 $ $Date: 2004/03/09 18:03:11 $
*
* */
public interface RefAdapter {
XmlObject getXmlObject();
void setXmlObject(XmlObject xmlObject);
String getRefName();
void setRefName(String name);
String getServerName();
void setServerName(String serverName);
String getKernelName();
void setKernelName(String kernelName);
String getTargetName();
void setTargetName(String targetName);
String getExternalUri();
void setExternalUri(String externalURI);
}
1.1 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/deployment/RemoteRefDConfigBean.java
Index: RemoteRefDConfigBean.java
===================================================================
/**
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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.naming.deployment;
import javax.enterprise.deploy.model.DDBean;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/03/09 18:03:11 $
*
* */
public class RemoteRefDConfigBean extends LocalRefDConfigBean {
public RemoteRefDConfigBean(DDBean ddBean, RefAdapter ref, String namePath) {
super (ddBean, ref, namePath);
}
public String getServerName() {
return ref.getServerName();
}
public void setServerName(String serverName) {
ref.setServerName(serverName);
}
}
1.6 +41 -2 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/java/ComponentContextBuilder.java
Index: ComponentContextBuilder.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/java/ComponentContextBuilder.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ComponentContextBuilder.java 25 Feb 2004 09:57:57 -0000 1.5
+++ ComponentContextBuilder.java 9 Mar 2004 18:03:11 -0000 1.6
@@ -17,9 +17,17 @@
package org.apache.geronimo.naming.java;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.management.MalformedObjectNameException;
import javax.naming.NamingException;
+import javax.naming.Reference;
import javax.transaction.UserTransaction;
+import org.apache.geronimo.naming.deployment.RefAdapter;
+import org.apache.geronimo.naming.jmx.JMXReferenceFactory;
+
/**
*
*
@@ -27,9 +35,11 @@
*/
public class ComponentContextBuilder {
private static final String ENV = "env/";
+ private final JMXReferenceFactory referenceFactory;
private final ReadOnlyContext context;
- public ComponentContextBuilder() {
+ public ComponentContextBuilder(JMXReferenceFactory referenceFactory) {
+ this.referenceFactory = referenceFactory;
this.context = new ReadOnlyContext();
}
@@ -45,6 +55,7 @@
context.internalBind("UserTransaction", userTransaction);
}
+
public void addEnvEntry(String name, String type, String text) throws NamingException, NumberFormatException {
if (context.isFrozen()) {
throw new IllegalStateException("Context has been frozen");
@@ -75,6 +86,34 @@
throw new IllegalArgumentException("Invalid class for env-entry " + name + ", " + type);
}
context.internalBind(ENV + name, value);
+ }
+
+ public void addResourceRef(String name, Class iface, RefAdapter refAdapter) throws NamingException {
+ if (iface == URL.class) {
+ try {
+ context.internalBind(ENV + name, new URL(refAdapter.getExternalUri()));
+ } catch (MalformedURLException e) {
+ throw (NamingException) new NamingException("Could not convert " + refAdapter + " to URL").initCause(e);
+ }
+ } else {
+ Reference ref = null;
+ try {
+ ref = referenceFactory.buildConnectionFactoryReference(refAdapter, iface);
+ } catch (MalformedObjectNameException e) {
+ throw (NamingException) new NamingException("invalid object name").initCause(e);
+ }
+ context.internalBind(ENV + name, ref);
+ }
+ }
+
+ public void addResourceEnvRef(String name, Class iface, RefAdapter refAdapter) throws NamingException {
+ Reference ref = null;
+ try {
+ ref = referenceFactory.buildAdminObjectReference(refAdapter, iface);
+ } catch (MalformedObjectNameException e) {
+ throw (NamingException) new NamingException("invalid object name").initCause(e);
+ }
+ context.internalBind(ENV + name, ref);
}
// todo methods for other references
1.6 +11 -1 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/java/ReadOnlyContext.java
Index: ReadOnlyContext.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/java/ReadOnlyContext.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ReadOnlyContext.java 25 Feb 2004 09:57:57 -0000 1.5
+++ ReadOnlyContext.java 9 Mar 2004 18:03:11 -0000 1.6
@@ -36,6 +36,7 @@
import javax.naming.NamingException;
import javax.naming.NotContextException;
import javax.naming.OperationNotSupportedException;
+import javax.naming.Reference;
import javax.naming.spi.NamingManager;
/**
@@ -198,6 +199,15 @@
if (result instanceof LinkRef) {
LinkRef ref = (LinkRef) result;
result = lookup(ref.getLinkName());
+ }
+ if (result instanceof Reference) {
+ try {
+ result = NamingManager.getObjectInstance(result, null, null, this.env);
+ } catch (NamingException e) {
+ throw e;
+ } catch (Exception e) {
+ throw (NamingException)new NamingException("could not look up : " + name).initCause(e);
+ }
}
if (result instanceof ReadOnlyContext) {
result = new ReadOnlyContext((ReadOnlyContext) result, env);
1.1 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/jmx/JMXObjectFactory.java
Index: JMXObjectFactory.java
===================================================================
/**
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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.naming.jmx;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.Name;
import javax.naming.RefAddr;
import javax.naming.Reference;
import javax.naming.spi.ObjectFactory;
import org.apache.geronimo.kernel.Kernel;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/03/09 18:03:11 $
*
* */
public class JMXObjectFactory implements ObjectFactory {
public Object getObjectInstance(Object obj, Name name, Context nameCtx,
Hashtable environment) throws Exception {
if (obj instanceof Reference) {
Reference ref = (Reference) obj;
RefAddr refAddr = ref.get(0);
if (!(refAddr instanceof JMXRefAddr)) {
throw new IllegalStateException("Invalid ref addr in a Connectionfactory ref: " + refAddr);
}
JMXRefAddr jmxRefAddr = (JMXRefAddr)refAddr;
Kernel kernel;
if (jmxRefAddr.getKernelName() == null) {
kernel = Kernel.getSingleKernel();
} else {
kernel = Kernel.getKernel(jmxRefAddr.getKernelName());
}
Object proxy = kernel.invoke(jmxRefAddr.getTargetName(), "getProxy");
if (!jmxRefAddr.getInterface().isAssignableFrom(proxy.getClass())) {
throw new IllegalStateException("Proxy does not implement expected interface " + jmxRefAddr.getInterface());
}
return proxy;
}
return null;
}
}
1.1 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/jmx/JMXRefAddr.java
Index: JMXRefAddr.java
===================================================================
/**
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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.naming.jmx;
import java.net.URI;
import java.net.URISyntaxException;
import javax.naming.RefAddr;
import javax.management.ObjectName;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/03/09 18:03:11 $
*
* */
public class JMXRefAddr extends RefAddr {
private final static String TYPE = "org.apache.geronimo.naming.jmx.RefType";
private final String serverName;
private final String kernelName;
private final ObjectName targetName;
private final static String SCHEME = "geronimo";
private final Class iface;
public JMXRefAddr(String serverName, String kernelName, ObjectName targetname, Class iface) {
super(TYPE);
this.serverName = serverName;
this.kernelName = kernelName;
this.targetName = targetname;
this.iface = iface;
}
public String getServerName() {
return serverName;
}
public String getKernelName() {
return kernelName;
}
public ObjectName getTargetName() {
return targetName;
}
public Class getInterface() {
return iface;
}
public Object getContent() {
try {
return new URI(SCHEME, kernelName, targetName.toString(), null);
} catch (URISyntaxException e) {
throw (IllegalStateException)new IllegalStateException("invalid jmx ref addr").initCause(e);
}
}
}
1.1 incubator-geronimo/modules/naming/src/java/org/apache/geronimo/naming/jmx/JMXReferenceFactory.java
Index: JMXReferenceFactory.java
===================================================================
/**
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed 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.naming.jmx;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.naming.Reference;
import org.apache.geronimo.naming.deployment.RefAdapter;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/03/09 18:03:11 $
*
* */
public class JMXReferenceFactory {
public static final String BASE_MANAGED_CONNECTION_FACTORY_NAME = "geronimo.management:J2eeType=ManagedConnectionFactory,name=";
public static final String BASE_ADMIN_OBJECT_NAME = "geronimo.management:service=AdminObject,name=";
public JMXReferenceFactory() {
}
public Reference buildConnectionFactoryReference(RefAdapter refAdapter, Class iface) throws MalformedObjectNameException {
Reference ref = new Reference(null, JMXObjectFactory.class.getName(), null);
ref.add(new JMXRefAddr(refAdapter.getServerName(), refAdapter.getKernelName(), ObjectName.getInstance(BASE_MANAGED_CONNECTION_FACTORY_NAME + refAdapter.getTargetName()), iface));
return ref;
}
public Reference buildAdminObjectReference(RefAdapter refAdapter, Class iface) throws MalformedObjectNameException {
Reference ref = new Reference(null, JMXObjectFactory.class.getName(), null);
ref.add(new JMXRefAddr(refAdapter.getServerName(), refAdapter.getKernelName(), ObjectName.getInstance(BASE_ADMIN_OBJECT_NAME + refAdapter.getTargetName()), iface));
return ref;
}
//TODO remotable references should check for externalURI and use a LinkRef if present.
}
1.3 +45 -43 incubator-geronimo/modules/naming/src/schema/geronimo-naming.xsd
Index: geronimo-naming.xsd
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/naming/src/schema/geronimo-naming.xsd,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- geronimo-naming.xsd 14 Feb 2004 01:50:15 -0000 1.2
+++ geronimo-naming.xsd 9 Mar 2004 18:03:11 -0000 1.3
@@ -1,12 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:ger="http://geronimo.apache.org/xml/ns/j2ee"
- targetNamespace="http://geronimo.apache.org/xml/ns/j2ee"
+<xsd:schema
xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
+
+ <xsd:annotation>
+ <xsd:documentation>
+ <![CDATA[
+ Partial schema containing common naming elements which can be included in other schemas.
+ This schema does not define a targetNamespace and so all definitions from this
+ schema instance will end up in the targetNamespace of the including document.
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+
<xsd:import namespace="http://java.sun.com/xml/ns/j2ee" schemaLocation="j2ee_1_4.xsd"/>
<xsd:group name="jndiEnvironmentRefsGroup">
@@ -20,65 +29,58 @@
</xsd:annotation>
<xsd:sequence>
<!--xsd:element name="env-entry"
- type="ger:env-entryType"
+ type="env-entryType"
minOccurs="0" maxOccurs="unbounded"/-->
<xsd:element name="ejb-ref"
- type="ger:ejb-refType"
+ type="remote-refType"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="ejb-local-ref"
- type="ger:ejb-local-refType"
+ type="local-refType"
minOccurs="0" maxOccurs="unbounded"/>
<!-- leave web services out until I know what they do -->
- <!--xsd:group ref="ger:service-refGroup"/-->
+ <!--xsd:group ref="service-refGroup"/-->
<xsd:element name="resource-ref"
- type="ger:resource-refType"
+ type="local-refType"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="resource-env-ref"
- type="ger:resource-env-refType"
+ type="local-refType"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="message-destination-ref"
- type="ger:message-destination-refType"
+ type="remote-refType"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>
- <xsd:complexType name="ejb-refType">
- <xsd:sequence>
- <xsd:element name="ejb-ref-name" type="j2ee:ejb-ref-nameType"/>
- <xsd:element name="uri" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <!-- has exactly same content as ejb-refType, might not be needed -->
- <xsd:complexType name="ejb-local-refType">
- <xsd:sequence>
- <xsd:element name="ejb-ref-name" type="j2ee:ejb-ref-nameType"/>
- <xsd:element name="uri" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="message-destination-refType">
- <xsd:sequence>
- <xsd:element name="message-destination-ref-name"
- type="j2ee:jndi-nameType"/>
- <xsd:element name="uri" type="xsd:string"/>
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="resource-env-refType">
+ <xsd:complexType name="remote-refType">
<xsd:sequence>
- <xsd:element name="resource-env-ref-name"
- type="j2ee:jndi-nameType"/>
- <xsd:element name="uri" type="xsd:string"/>
+ <xsd:element name="ref-name" type="xsd:string"/>
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="server" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="kernel-name" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="target-name" type="xsd:string"/>
+ </xsd:sequence>
+ <xsd:element name="external-uri" type="xsd:string"/>
+ </xsd:choice>
</xsd:sequence>
</xsd:complexType>
- <xsd:complexType name="resource-refType">
- <xsd:sequence>
- <xsd:element name="res-ref-name"
- type="j2ee:jndi-nameType"/>
- <xsd:element name="uri" type="xsd:string"/>
- </xsd:sequence>
+ <xsd:complexType name="local-refType">
+ <xsd:complexContent>
+ <xsd:restriction base="remote-refType">
+ <xsd:sequence>
+ <xsd:element name="ref-name" type="xsd:string"/>
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="server" type="xsd:string" minOccurs="0" maxOccurs="0"/>
+ <xsd:element name="kernel-name" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="target-name" type="xsd:string"/>
+ </xsd:sequence>
+ <xsd:element name="external-uri" type="xsd:string"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
</xsd:complexType>
</xsd:schema>
1.3 +109 -10 incubator-geronimo/modules/naming/src/test/org/apache/geronimo/naming/java/ContextBuilderTest.java
Index: ContextBuilderTest.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/naming/src/test/org/apache/geronimo/naming/java/ContextBuilderTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ContextBuilderTest.java 25 Feb 2004 09:57:57 -0000 1.2
+++ ContextBuilderTest.java 9 Mar 2004 18:03:11 -0000 1.3
@@ -17,14 +17,25 @@
package org.apache.geronimo.naming.java;
-import java.util.Set;
-import java.util.HashSet;
+import java.util.ArrayList;
import java.util.Arrays;
-import javax.naming.NamingException;
-import javax.naming.NamingEnumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.ObjectName;
import javax.naming.NameClassPair;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
import junit.framework.TestCase;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoFactory;
+import org.apache.geronimo.gbean.jmx.GBeanMBean;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.naming.deployment.RefAdapter;
+import org.apache.geronimo.naming.jmx.JMXReferenceFactory;
+import org.apache.xmlbeans.XmlObject;
/**
*
@@ -34,6 +45,8 @@
public class ContextBuilderTest extends TestCase {
private ComponentContextBuilder builder;
+ private List proxy;
+
public void testFreeze() {
ReadOnlyContext context = builder.getContext();
assertTrue(context.isFrozen());
@@ -58,8 +71,8 @@
public void testEnvEntries() throws Exception {
String stringVal = "Hello World";
Character charVal = new Character('H');
- Byte byteVal = new Byte((byte)12);
- Short shortVal = new Short((short)12345);
+ Byte byteVal = new Byte((byte) 12);
+ Short shortVal = new Short((short) 12345);
Integer intVal = new Integer(12345678);
Long longVal = new Long(1234567890123456L);
Float floatVal = new Float(123.456);
@@ -77,11 +90,11 @@
ReadOnlyContext context = builder.getContext();
Set actual = new HashSet();
- for (NamingEnumeration e = context.listBindings("env");e.hasMore();) {
+ for (NamingEnumeration e = context.listBindings("env"); e.hasMore();) {
NameClassPair pair = (NameClassPair) e.next();
actual.add(pair.getName());
}
- Set expected = new HashSet(Arrays.asList(new String[] {"string", "char", "byte", "short", "int", "long", "float", "double", "boolean"}));
+ Set expected = new HashSet(Arrays.asList(new String[]{"string", "char", "byte", "short", "int", "long", "float", "double", "boolean"}));
assertEquals(expected, actual);
assertEquals(stringVal, context.lookup("env/string"));
assertEquals(charVal, context.lookup("env/char"));
@@ -94,8 +107,94 @@
assertEquals(booleanVal, context.lookup("env/boolean"));
}
+ public void testResourceEnv() throws Exception {
+ proxy = new ArrayList();
+ builder.addResourceEnvRef("resourceenvref", List.class, new RefAdapter() {
+ public XmlObject getXmlObject() {
+ return null;
+ }
+
+ public void setXmlObject(XmlObject xmlObject) {
+ }
+
+ public String getRefName() {
+ return "resourceenvref";
+ }
+
+ public void setRefName(String name) {
+ }
+
+ public String getServerName() {
+ return null;
+ }
+
+ public void setServerName(String serverName) {
+ }
+
+ public String getKernelName() {
+ return "test.kernel";
+ }
+
+ public void setKernelName(String kernelName) {
+ }
+
+ public String getTargetName() {
+ return "testAdminObject";
+ }
+
+ public void setTargetName(String targetName) {
+ }
+
+ public String getExternalUri() {
+ return null;
+ }
+
+ public void setExternalUri(String externalURI) {
+ }
+
+ });
+ ReadOnlyContext roc = builder.getContext();
+ Kernel kernel = new Kernel("test.kernel", "test.domain");
+ kernel.boot();
+ try {
+ assertEquals(kernel, Kernel.getKernel("test.kernel"));
+ ObjectName proxyFactoryName = ObjectName.getInstance(JMXReferenceFactory.BASE_ADMIN_OBJECT_NAME + "testAdminObject");
+ GBeanMBean gbean = new GBeanMBean(getGbeanInfo());
+ gbean.setAttribute("Content", proxy);
+ kernel.loadGBean(proxyFactoryName, gbean);
+ kernel.startGBean(proxyFactoryName);
+ Object o = roc.lookup("env/resourceenvref");
+ assertEquals(proxy, o);
+ } finally {
+ kernel.shutdown();
+ }
+ }
+
protected void setUp() throws Exception {
super.setUp();
- builder = new ComponentContextBuilder();
+ JMXReferenceFactory referenceFactory = new JMXReferenceFactory();
+ builder = new ComponentContextBuilder(referenceFactory);
+ }
+
+ public static class TestProxyFactory {
+
+ private Object proxy;
+
+ public TestProxyFactory(Object proxy) {
+ this.proxy = proxy;
+ }
+
+ public Object getProxy() {
+ return proxy;
+ }
+
+ }
+
+ public GBeanInfo getGbeanInfo() {
+ GBeanInfoFactory infoFactory = new GBeanInfoFactory(TestProxyFactory.class);
+ infoFactory.addAttribute("Content", true);
+ infoFactory.addOperation("getProxy");
+ infoFactory.setConstructor(new String[] {"Content"}, new Class[] {Object.class});
+ return infoFactory.getBeanInfo();
}
}