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 2006/09/12 01:51:36 UTC
svn commit: r442387 [4/5] - in /geronimo/server/trunk:
configs/axis-deployer/src/plan/ configs/client-deployer/src/plan/
configs/j2ee-deployer/src/plan/ configs/jetty-deployer/src/plan/
configs/openejb-deployer/src/plan/ configs/tomcat-deployer/src/pla...
Modified: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java?view=diff&rev=442387&r1=442386&r2=442387
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/ENCConfigBuilder.java Mon Sep 11 16:51:32 2006
@@ -17,60 +17,22 @@
package org.apache.geronimo.naming.deployment;
-import java.net.MalformedURLException;
import java.net.URI;
-import java.net.URISyntaxException;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.Set;
-import javax.naming.NamingException;
-import javax.naming.Reference;
-import javax.transaction.UserTransaction;
-import javax.xml.namespace.QName;
+
import org.apache.geronimo.common.DeploymentException;
-import org.apache.geronimo.common.UnresolvedReferenceException;
import org.apache.geronimo.gbean.AbstractNameQuery;
-import org.apache.geronimo.gbean.GBeanData;
-import org.apache.geronimo.j2ee.deployment.EARContext;
-import org.apache.geronimo.j2ee.deployment.Module;
-import org.apache.geronimo.j2ee.deployment.RefContext;
-import org.apache.geronimo.j2ee.deployment.ServiceReferenceBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
-import org.apache.geronimo.kernel.ClassLoading;
-import org.apache.geronimo.kernel.GBeanNotFoundException;
-import org.apache.geronimo.kernel.config.Configuration;
import org.apache.geronimo.kernel.repository.Artifact;
-import org.apache.geronimo.naming.java.ComponentContextBuilder;
-import org.apache.geronimo.naming.reference.GBeanReference;
-import org.apache.geronimo.xbeans.geronimo.naming.GerEjbLocalRefType;
-import org.apache.geronimo.xbeans.geronimo.naming.GerEjbRefType;
import org.apache.geronimo.xbeans.geronimo.naming.GerGbeanLocatorType;
-import org.apache.geronimo.xbeans.geronimo.naming.GerGbeanRefType;
-import org.apache.geronimo.xbeans.geronimo.naming.GerMessageDestinationType;
import org.apache.geronimo.xbeans.geronimo.naming.GerPatternType;
-import org.apache.geronimo.xbeans.geronimo.naming.GerResourceEnvRefType;
import org.apache.geronimo.xbeans.geronimo.naming.GerResourceRefType;
-import org.apache.geronimo.xbeans.geronimo.naming.GerServiceRefType;
-import org.apache.geronimo.xbeans.j2ee.EjbLocalRefType;
-import org.apache.geronimo.xbeans.j2ee.EjbRefType;
-import org.apache.geronimo.xbeans.j2ee.EnvEntryType;
-import org.apache.geronimo.xbeans.j2ee.MessageDestinationRefType;
-import org.apache.geronimo.xbeans.j2ee.MessageDestinationType;
-import org.apache.geronimo.xbeans.j2ee.ParamValueType;
-import org.apache.geronimo.xbeans.j2ee.PortComponentRefType;
-import org.apache.geronimo.xbeans.j2ee.ResourceEnvRefType;
import org.apache.geronimo.xbeans.j2ee.ResourceRefType;
-import org.apache.geronimo.xbeans.j2ee.ServiceRefHandlerType;
-import org.apache.geronimo.xbeans.j2ee.ServiceRefType;
-import org.apache.geronimo.xbeans.j2ee.XsdQNameType;
-import org.apache.geronimo.xbeans.j2ee.XsdStringType;
/**
* @version $Rev:385232 $ $Date$
@@ -79,27 +41,6 @@
private static final String JAXR_CONNECTION_FACTORY_CLASS = "javax.xml.registry.ConnectionFactory";
- public static void registerMessageDestinations(RefContext refContext, String moduleName, MessageDestinationType[] specDestinations, GerMessageDestinationType[] destinations) throws DeploymentException {
- Map nameMap = new HashMap();
- for (int i = 0; i < destinations.length; i++) {
- GerMessageDestinationType destination = destinations[i];
- String name = destination.getMessageDestinationName().trim();
- nameMap.put(name, destination);
- boolean found = false;
- for (int j = 0; j < specDestinations.length; j++) {
- MessageDestinationType specDestination = specDestinations[j];
- if (specDestination.getMessageDestinationName().getStringValue().trim().equals(name)) {
- found = true;
- break;
- }
- }
- if (!found) {
- throw new DeploymentException("No spec DD message-destination for " + name);
- }
- }
- refContext.registerMessageDestionations(moduleName, nameMap);
- }
-
public static AbstractNameQuery getGBeanQuery(String j2eeType, GerGbeanLocatorType gerGbeanLocator) {
AbstractNameQuery abstractNameQuery;
@@ -117,100 +58,6 @@
return abstractNameQuery;
}
-
- static void addEnvEntries(EnvEntryType[] envEntries, ComponentContextBuilder builder, ClassLoader classLoader) throws DeploymentException {
- for (int i = 0; i < envEntries.length; i++) {
- EnvEntryType envEntry = envEntries[i];
- String name = getStringValue(envEntry.getEnvEntryName());
- String type = getStringValue(envEntry.getEnvEntryType());
- String text = getStringValue(envEntry.getEnvEntryValue());
- try {
- builder.addEnvEntry(name, type, text, classLoader);
- } 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);
- }
- }
-
- }
-
- static void addResourceRefs(Configuration earContext, RefContext refContext, ResourceRefType[] resourceRefs, Map refMap, ClassLoader cl, ComponentContextBuilder builder) throws DeploymentException {
- if (refMap == null) {
- refMap = Collections.EMPTY_MAP;
- }
- Map newMap = new HashMap();
- for (Iterator it = refMap.keySet().iterator(); it.hasNext();) {
- String name = (String) it.next();
- newMap.put(name.trim(), refMap.get(name));
- }
- refMap = newMap;
-
- for (int i = 0; i < resourceRefs.length; i++) {
- ResourceRefType resourceRef = resourceRefs[i];
- String name = getStringValue(resourceRef.getResRefName());
- String type = getStringValue(resourceRef.getResType());
- GerResourceRefType gerResourceRef = (GerResourceRefType) refMap.get(name);
- Class iface;
- try {
- iface = cl.loadClass(type);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("could not load class " + type, e);
- }
- Reference ref;
- if (iface == URL.class) {
- if (gerResourceRef == null || !gerResourceRef.isSetUrl()) {
- throw new DeploymentException("No url supplied to resolve: " + name);
- }
- try {
- //TODO expose jsr-77 objects for these guys
- builder.bind(name, new URL(gerResourceRef.getUrl()));
- } catch (MalformedURLException e) {
- throw new DeploymentException("Could not convert " + gerResourceRef.getUrl() + " to URL", e);
- }
- } else {
- //determine jsr-77 type from interface
- String j2eeType;
-
-
- if ("javax.mail.Session".equals(type)) {
- j2eeType = NameFactory.JAVA_MAIL_RESOURCE;
- } else if (JAXR_CONNECTION_FACTORY_CLASS.equals(type)) {
- j2eeType = NameFactory.JAXR_CONNECTION_FACTORY;
- } else {
- j2eeType = NameFactory.JCA_MANAGED_CONNECTION_FACTORY;
- }
- try {
- AbstractNameQuery containerId = getResourceContainerId(name, j2eeType, null, gerResourceRef);
-
- ref = refContext.getConnectionFactoryRef(containerId, iface, earContext);
- builder.bind(name, ref);
- } catch (UnresolvedReferenceException e) {
-
- StringBuffer errorMessage = new StringBuffer("Unable to resolve resource reference '");
- errorMessage.append(name);
- errorMessage.append("' (");
- if (e.isMultiple()) {
- errorMessage.append("Found multiple matching resources. Try being more specific in a resource-ref mapping in your Geronimo deployment plan.");
- } else if (gerResourceRef == null){
- errorMessage.append("Could not auto-map to resource. Try adding a resource-ref mapping to your Geronimo deployment plan.");
- } else if (gerResourceRef.isSetResourceLink()){
- errorMessage.append("Could not find resource '");
- errorMessage.append(gerResourceRef.getResourceLink());
- errorMessage.append("'. Perhaps it has not yet been configured, or your application does not have a dependency declared for that resource module?");
- } else {
- errorMessage.append("Could not find the resource specified in your Geronimo deployment plan:");
- errorMessage.append(gerResourceRef.getPattern());
- }
- errorMessage.append(")");
-
- throw new DeploymentException(errorMessage.toString());
- }
- }
- }
-
- }
-
private static AbstractNameQuery getResourceContainerId(String name, String type, URI moduleURI, GerResourceRefType gerResourceRef) {
AbstractNameQuery containerId;
String module = moduleURI == null ? null : moduleURI.toString();
@@ -226,415 +73,6 @@
return containerId;
}
- static void addResourceEnvRefs(Configuration earContext, RefContext refContext, ResourceEnvRefType[] resourceEnvRefArray, Map refMap, ClassLoader cl, ComponentContextBuilder builder) throws DeploymentException {
- if (refMap == null) {
- refMap = Collections.EMPTY_MAP;
- }
- Map newMap = new HashMap();
- for (Iterator it = refMap.keySet().iterator(); it.hasNext();) {
- String name = (String) it.next();
- newMap.put(name.trim(), refMap.get(name));
- }
- refMap = newMap;
-
- for (int i = 0; i < resourceEnvRefArray.length; i++) {
- ResourceEnvRefType resourceEnvRef = resourceEnvRefArray[i];
- String name = getStringValue(resourceEnvRef.getResourceEnvRefName());
- String type = getStringValue(resourceEnvRef.getResourceEnvRefType());
- Class iface;
- try {
- iface = cl.loadClass(type);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("could not load class " + type, e);
- }
- GerResourceEnvRefType gerResourceEnvRef = (GerResourceEnvRefType) refMap.get(name);
- try {
- AbstractNameQuery containerId = getAdminObjectContainerId(name, gerResourceEnvRef);
- Reference ref = refContext.getAdminObjectRef(containerId, iface, earContext);
-
- builder.bind(name, ref);
- } catch (UnresolvedReferenceException e) {
- throw new DeploymentException("Unable to resolve resource env reference '" + name + "' (" + (e.isMultiple() ? "found multiple matching resources" : "no matching resources found") + ")");
- }
- }
- }
-
- private static AbstractNameQuery getAdminObjectContainerId(String name, GerResourceEnvRefType gerResourceEnvRef) {
- AbstractNameQuery containerId;
- if (gerResourceEnvRef == null) {
- containerId = buildAbstractNameQuery(null, null, name, NameFactory.JCA_ADMIN_OBJECT, NameFactory.RESOURCE_ADAPTER_MODULE);
- } else if (gerResourceEnvRef.isSetMessageDestinationLink()) {
- containerId = buildAbstractNameQuery(null, null, gerResourceEnvRef.getMessageDestinationLink().trim(), NameFactory.JCA_ADMIN_OBJECT, NameFactory.RESOURCE_ADAPTER_MODULE);
- } else if (gerResourceEnvRef.isSetAdminObjectLink()) {
- String moduleURI = null;
- if (gerResourceEnvRef.isSetAdminObjectModule()) {
- moduleURI = gerResourceEnvRef.getAdminObjectModule().trim();
- }
- containerId = buildAbstractNameQuery(null, moduleURI, gerResourceEnvRef.getAdminObjectLink().trim(), NameFactory.JCA_ADMIN_OBJECT, NameFactory.RESOURCE_ADAPTER_MODULE);
- } else {
- //construct name from components
- GerPatternType patternType = gerResourceEnvRef.getPattern();
- containerId = buildAbstractNameQuery(patternType, NameFactory.JCA_ADMIN_OBJECT, NameFactory.RESOURCE_ADAPTER_MODULE, null);
- }
- return containerId;
- }
-
- static void addMessageDestinationRefs(Configuration earContext, RefContext refContext, MessageDestinationRefType[] messageDestinationRefs, ClassLoader cl, ComponentContextBuilder builder) throws DeploymentException {
- for (int i = 0; i < messageDestinationRefs.length; i++) {
- MessageDestinationRefType messageDestinationRef = messageDestinationRefs[i];
- String name = getStringValue(messageDestinationRef.getMessageDestinationRefName());
- String linkName = getStringValue(messageDestinationRef.getMessageDestinationLink());
- String type = getStringValue(messageDestinationRef.getMessageDestinationType());
- Class iface;
- try {
- iface = cl.loadClass(type);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("could not load class " + type, e);
- }
- String moduleURI = null;
- GerMessageDestinationType destination = (GerMessageDestinationType) refContext.getMessageDestination(linkName);
- if (destination != null) {
- if (destination.isSetAdminObjectLink()) {
- if (destination.isSetAdminObjectModule()) {
- moduleURI = destination.getAdminObjectModule().trim();
- }
- linkName = destination.getAdminObjectLink().trim();
- }
- } else {
- //well, we know for sure an admin object is not going to be defined in a modules that can have a message-destination
- int pos = linkName.indexOf('#');
- if (pos > -1) {
- //AMM -- the following line causes blowups; e.g. to look in DayTrader EJB module for a RA -- why is that?!?
- //moduleURI = linkName.substring(0, pos);
- linkName = linkName.substring(pos + 1);
- }
- }
-
- //try to resolve ref based only matching resource-ref-name
- //throws exception if it can't locate ref.
- AbstractNameQuery containerId = buildAbstractNameQuery(null, moduleURI, linkName, NameFactory.JCA_ADMIN_OBJECT, NameFactory.RESOURCE_ADAPTER_MODULE);
- Reference ref = refContext.getAdminObjectRef(containerId, iface, earContext);
- builder.bind(name, ref);
-
- }
-
- }
-
- static void addEJBRefs(Configuration earContext, Configuration ejbContext, RefContext refContext, URI moduleURI, EjbRefType[] ejbRefs, Map ejbRefMap, ClassLoader cl, ComponentContextBuilder builder) throws DeploymentException {
- Map newMap = new HashMap();
- for (Iterator it = ejbRefMap.keySet().iterator(); it.hasNext();) {
- String name = (String) it.next();
- newMap.put(name.trim(), ejbRefMap.get(name));
- }
- ejbRefMap = newMap;
- for (int i = 0; i < ejbRefs.length; i++) {
- EjbRefType ejbRef = ejbRefs[i];
-
- String ejbRefName = getStringValue(ejbRef.getEjbRefName());
- GerEjbRefType remoteRef = (GerEjbRefType) ejbRefMap.get(ejbRefName);
-
- Reference ejbReference = addEJBRef(earContext, ejbContext, refContext, moduleURI, ejbRef, remoteRef, cl);
- builder.bind(ejbRefName, ejbReference);
- }
- }
-
- static Reference addEJBRef(Configuration earContext, Configuration ejbContext, RefContext refContext, URI moduleURI, EjbRefType ejbRef, GerEjbRefType remoteRef, ClassLoader cl) throws DeploymentException {
- String remote = getStringValue(ejbRef.getRemote());
- String refName = getStringValue(ejbRef.getEjbRefName());
- try {
- assureEJBObjectInterface(remote, cl);
- } catch (DeploymentException e) {
- throw new DeploymentException("Error processing 'remote' element for EJB Reference '" + refName + "' for module '" + moduleURI + "': " + e.getMessage());
- }
-
- String home = getStringValue(ejbRef.getHome());
- try {
- assureEJBHomeInterface(home, cl);
- } catch (DeploymentException e) {
- throw new DeploymentException("Error processing 'home' element for EJB Reference '" + refName + "' for module '" + moduleURI + "': " + e.getMessage());
- }
-
- Reference ejbReference;
- boolean isSession = "Session".equals(getStringValue(ejbRef.getEjbRefType()));
-
- if (isSession && remote.equals("javax.management.j2ee.Management") && home.equals("javax.management.j2ee.ManagementHome")) {
- AbstractNameQuery query = new AbstractNameQuery(null, Collections.singletonMap("name", "ejb/mgmt/MEJB"));
- ejbReference = refContext.getEJBRemoteRef(null, ejbContext, null, null, null, null, query, isSession, home, remote);
- } else {
-
- String ejbLink = null;
- if (remoteRef != null && remoteRef.isSetNsCorbaloc()) {
- try {
- AbstractNameQuery cssBean;
- if (remoteRef.isSetCssLink()) {
- String cssLink = remoteRef.getCssLink().trim();
- cssBean = buildAbstractNameQuery(null, null, cssLink, NameFactory.CORBA_CSS, NameFactory.EJB_MODULE);
- } else {
- GerPatternType css = remoteRef.getCss();
- cssBean = buildAbstractNameQuery(css, NameFactory.CORBA_CSS, NameFactory.EJB_MODULE, null);
- }
- ejbReference = refContext.getCORBARemoteRef(earContext,
- cssBean,
- new URI(getStringValue(remoteRef.getNsCorbaloc())),
- getStringValue(remoteRef.getName()),
- home);
- } catch (URISyntaxException e) {
- throw new DeploymentException("Could not construct CORBA NameServer URI: " + remoteRef.getNsCorbaloc(), e);
- }
- } else {
- Artifact targetConfigId = null;
- String optionalModule = moduleURI == null ? null : moduleURI.toString();
- String requiredModule = null;
- AbstractNameQuery containerQuery = null;
- if (remoteRef != null && remoteRef.isSetEjbLink()) {
- ejbLink = remoteRef.getEjbLink();
- } else if (ejbRef.isSetEjbLink()) {
- ejbLink = getStringValue(ejbRef.getEjbLink());
- targetConfigId = ejbContext.getId();
- }
- if (ejbLink != null) {
- String[] bits = ejbLink.split("#");
- if (bits.length == 2) {
- //look only in specified module.
- requiredModule = bits[0];
- if (moduleURI != null) {
- requiredModule = moduleURI.resolve(requiredModule).getPath();
- }
- ejbLink = bits[1];
- }
- } else if (remoteRef != null) {
- GerPatternType patternType = remoteRef.getPattern();
- containerQuery = buildAbstractNameQuery(patternType, null, NameFactory.EJB_MODULE, null);
- }
- ejbReference = refContext.getEJBRemoteRef(refName, ejbContext, ejbLink, requiredModule, optionalModule, targetConfigId, containerQuery, isSession, home, remote);
- }
- }
- return ejbReference;
- }
-
- static void addEJBLocalRefs(Configuration ejbContext, RefContext refContext, URI moduleURI, EjbLocalRefType[] ejbLocalRefs, Map ejbLocalRefMap, ClassLoader cl, ComponentContextBuilder builder) throws DeploymentException {
- Map newMap = new HashMap();
- for (Iterator it = ejbLocalRefMap.keySet().iterator(); it.hasNext();) {
- String name = (String) it.next();
- newMap.put(name.trim(), ejbLocalRefMap.get(name));
- }
- ejbLocalRefMap = newMap;
- for (int i = 0; i < ejbLocalRefs.length; i++) {
- EjbLocalRefType ejbLocalRef = ejbLocalRefs[i];
-
- String ejbRefName = getStringValue(ejbLocalRef.getEjbRefName());
- GerEjbLocalRefType localRef = (GerEjbLocalRefType) ejbLocalRefMap.get(ejbRefName);
-
- Reference ejbReference = addEJBLocalRef(ejbContext, refContext, moduleURI, ejbLocalRef, localRef, cl);
- builder.bind(ejbRefName, ejbReference);
- }
- }
-
- static Reference addEJBLocalRef(Configuration ejbContext, RefContext refContext, URI moduleURI, EjbLocalRefType ejbLocalRef, GerEjbLocalRefType localRef, ClassLoader cl) throws DeploymentException {
- String local = getStringValue(ejbLocalRef.getLocal());
- String refName = getStringValue(ejbLocalRef.getEjbRefName());
- try {
- assureEJBLocalObjectInterface(local, cl);
- } catch (DeploymentException e) {
- throw new DeploymentException("Error processing 'local' element for EJB Local Reference '" + refName + "' for module '" + moduleURI + "': " + e.getMessage());
- }
-
- String localHome = getStringValue(ejbLocalRef.getLocalHome());
- try {
- assureEJBLocalHomeInterface(localHome, cl);
- } catch (DeploymentException e) {
- throw new DeploymentException("Error processing 'local-home' element for EJB Local Reference '" + refName + "' for module '" + moduleURI + "': " + e.getMessage());
- }
-
- boolean isSession = "Session".equals(getStringValue(ejbLocalRef.getEjbRefType()));
-
- String ejbLink = null;
- if (localRef != null && localRef.isSetEjbLink()) {
- ejbLink = localRef.getEjbLink();
- } else if (ejbLocalRef.isSetEjbLink()) {
- ejbLink = getStringValue(ejbLocalRef.getEjbLink());
- }
-
- Artifact targetConfigId = null;
- String optionalModule = moduleURI == null ? null : moduleURI.toString();
- String requiredModule = null;
- AbstractNameQuery containerQuery = null;
- if (localRef != null && localRef.isSetEjbLink()) {
- ejbLink = localRef.getEjbLink();
- } else if (ejbLocalRef.isSetEjbLink()) {
- ejbLink = getStringValue(ejbLocalRef.getEjbLink());
- targetConfigId = ejbContext.getId();
- }
- if (ejbLink != null) {
- String[] bits = ejbLink.split("#");
- if (bits.length == 2) {
- //look only in specified module.
- requiredModule = bits[0];
- ejbLink = bits[1];
- }
- } else if (localRef != null) {
- GerPatternType patternType = localRef.getPattern();
- containerQuery = buildAbstractNameQuery(patternType, null, NameFactory.EJB_MODULE, null);
- }
- return refContext.getEJBLocalRef(refName, ejbContext, ejbLink, requiredModule, optionalModule, targetConfigId, containerQuery, isSession, localHome, local);
- }
-
-//TODO current implementation does not deal with portComponentRef links.
-
- static void addServiceRefs(EARContext earContext, Module module, ServiceRefType[] serviceRefs, Map serviceRefMap, ClassLoader cl, ComponentContextBuilder builder) throws DeploymentException {
- Map newMap = new HashMap();
- for (Iterator it = serviceRefMap.keySet().iterator(); it.hasNext();) {
- String name = (String) it.next();
- newMap.put(name.trim(), serviceRefMap.get(name));
- }
- serviceRefMap = newMap;
-
- RefContext refContext = earContext.getRefContext();
-
- for (int i = 0; i < serviceRefs.length; i++) {
- ServiceRefType serviceRef = serviceRefs[i];
- String name = getStringValue(serviceRef.getServiceRefName());
- GerServiceRefType serviceRefType = (GerServiceRefType) serviceRefMap.get(name);
-// Map credentialsNameMap = (Map) serviceRefCredentialsNameMap.get(name);
- String serviceInterfaceName = getStringValue(serviceRef.getServiceInterface());
- assureInterface(serviceInterfaceName, "javax.xml.rpc.Service", "[Web]Service", cl);
- Class serviceInterface;
- try {
- serviceInterface = cl.loadClass(serviceInterfaceName);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("Could not load service interface class: " + serviceInterfaceName, e);
- }
- URI wsdlURI = null;
- if (serviceRef.isSetWsdlFile()) {
- try {
- wsdlURI = new URI(getStringValue(serviceRef.getWsdlFile().getStringValue()));
- } catch (URISyntaxException e) {
- throw new DeploymentException("could not construct wsdl uri from " + serviceRef.getWsdlFile().getStringValue(), e);
- }
- }
- URI jaxrpcMappingURI = null;
- if (serviceRef.isSetJaxrpcMappingFile()) {
- try {
- jaxrpcMappingURI = new URI(getStringValue(serviceRef.getJaxrpcMappingFile()));
- } catch (URISyntaxException e) {
- throw new DeploymentException("Could not construct jaxrpc mapping uri from " + serviceRef.getJaxrpcMappingFile(), e);
- }
- }
- QName serviceQName = null;
- if (serviceRef.isSetServiceQname()) {
- serviceQName = serviceRef.getServiceQname().getQNameValue();
- }
- Map portComponentRefMap = new HashMap();
- PortComponentRefType[] portComponentRefs = serviceRef.getPortComponentRefArray();
- if (portComponentRefs != null) {
- for (int j = 0; j < portComponentRefs.length; j++) {
- PortComponentRefType portComponentRef = portComponentRefs[j];
- String portComponentLink = getStringValue(portComponentRef.getPortComponentLink());
- String serviceEndpointInterfaceType = getStringValue(portComponentRef.getServiceEndpointInterface());
- assureInterface(serviceEndpointInterfaceType, "java.rmi.Remote", "ServiceEndpoint", cl);
- Class serviceEndpointClass;
- try {
- serviceEndpointClass = cl.loadClass(serviceEndpointInterfaceType);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("could not load service endpoint class " + serviceEndpointInterfaceType, e);
- }
- portComponentRefMap.put(serviceEndpointClass, portComponentLink);
- }
- }
- ServiceRefHandlerType[] handlers = serviceRef.getHandlerArray();
- List handlerInfos = buildHandlerInfoList(handlers, cl);
-
-//we could get a Reference or the actual serializable Service back.
- Object ref = refContext.getServiceReference(serviceInterface, wsdlURI, jaxrpcMappingURI, serviceQName, portComponentRefMap, handlerInfos, serviceRefType, earContext, module, cl);
- builder.bind(name, ref);
- }
-
- }
-
- private static List buildHandlerInfoList(ServiceRefHandlerType[] handlers, ClassLoader classLoader) throws DeploymentException {
- List handlerInfos = new ArrayList();
- for (int i = 0; i < handlers.length; i++) {
- ServiceRefHandlerType handler = handlers[i];
- org.apache.geronimo.xbeans.j2ee.String[] portNameArray = handler.getPortNameArray();
- List portNames = new ArrayList();
- for (int j = 0; j < portNameArray.length; j++) {
- portNames.add(portNameArray[j].getStringValue().trim());
-
- }
-// Set portNames = new HashSet(Arrays.asList(portNameArray));
- String handlerClassName = handler.getHandlerClass().getStringValue().trim();
- Class handlerClass;
- try {
- handlerClass = ClassLoading.loadClass(handlerClassName, classLoader);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("Could not load handler class", e);
- }
- Map config = new HashMap();
- ParamValueType[] paramValues = handler.getInitParamArray();
- for (int j = 0; j < paramValues.length; j++) {
- ParamValueType paramValue = paramValues[j];
- String paramName = paramValue.getParamName().getStringValue().trim();
- String paramStringValue = paramValue.getParamValue().getStringValue().trim();
- config.put(paramName, paramStringValue);
- }
- XsdQNameType[] soapHeaderQNames = handler.getSoapHeaderArray();
- QName[] headerQNames = new QName[soapHeaderQNames.length];
- for (int j = 0; j < soapHeaderQNames.length; j++) {
- XsdQNameType soapHeaderQName = soapHeaderQNames[j];
- headerQNames[j] = soapHeaderQName.getQNameValue();
- }
- Set soapRoles = new HashSet();
- for (int j = 0; j < handler.getSoapRoleArray().length; j++) {
- String soapRole = handler.getSoapRoleArray(j).getStringValue().trim();
- soapRoles.add(soapRole);
- }
- ServiceReferenceBuilder.HandlerInfoInfo handlerInfoInfo = new ServiceReferenceBuilder.HandlerInfoInfo(new HashSet(portNames), handlerClass, config, headerQNames, soapRoles);
- handlerInfos.add(handlerInfoInfo);
- }
- return handlerInfos;
- }
-
- public static Class assureEJBObjectInterface(String remote, ClassLoader cl) throws DeploymentException {
- return assureInterface(remote, "javax.ejb.EJBObject", "Remote", cl);
- }
-
- public static Class assureEJBHomeInterface(String home, ClassLoader cl) throws DeploymentException {
- return assureInterface(home, "javax.ejb.EJBHome", "Home", cl);
- }
-
- public static Class assureEJBLocalObjectInterface(String local, ClassLoader cl) throws DeploymentException {
- return assureInterface(local, "javax.ejb.EJBLocalObject", "Local", cl);
- }
-
- public static Class assureEJBLocalHomeInterface(String localHome, ClassLoader cl) throws DeploymentException {
- return assureInterface(localHome, "javax.ejb.EJBLocalHome", "LocalHome", cl);
- }
-
- public static Class assureInterface(String interfaceName, String superInterfaceName, String interfaceType, ClassLoader cl) throws DeploymentException {
- if (interfaceName == null || interfaceName.equals("")) {
- throw new DeploymentException("interface name cannot be blank");
- }
- Class clazz;
- try {
- clazz = cl.loadClass(interfaceName);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException(interfaceType + " interface class not found: " + interfaceName);
- }
- if (!clazz.isInterface()) {
- throw new DeploymentException(interfaceType + " interface is not an interface: " + interfaceName);
- }
- Class superInterface;
- try {
- superInterface = cl.loadClass(superInterfaceName);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("Class " + superInterfaceName + " could not be loaded");
- }
- if (!superInterface.isAssignableFrom(clazz)) {
- throw new DeploymentException(interfaceType + " interface does not extend " + superInterfaceName + ": " + interfaceName);
- }
- return clazz;
- }
-
private static String getStringValue(org.apache.geronimo.xbeans.j2ee.String string) {
if (string == null) {
return null;
@@ -643,19 +81,6 @@
return s == null ? null : s.trim();
}
- private static String getStringValue(XsdStringType string) {
- if (string == null) {
- return null;
- }
- String s = string.getStringValue();
- return s == null ? null : s.trim();
- }
-
- private static String getStringValue(String string) {
- return string == null ? null : string.trim();
- }
-
-
public static void setResourceEnvironment(ResourceEnvironmentBuilder builder, ResourceRefType[] resourceRefs, GerResourceRefType[] gerResourceRefs) {
Map refMap = mapResourceRefs(gerResourceRefs);
Set unshareableResources = new HashSet();
@@ -684,139 +109,7 @@
builder.setApplicationManagedSecurityResources(applicationManagedSecurityResources);
}
- public static Map buildComponentContext(EARContext earContext,
- Configuration ejbContext,
- Module module,
- UserTransaction userTransaction,
- EnvEntryType[] envEntries,
- EjbRefType[] ejbRefs,
- GerEjbRefType[] gerEjbRefs,
- EjbLocalRefType[] ejbLocalRefs,
- GerEjbLocalRefType[] gerEjbLocalRef,
- ResourceRefType[] resourceRefs,
- GerResourceRefType[] gerResourceRef,
- ResourceEnvRefType[] resourceEnvRefs,
- GerResourceEnvRefType[] gerResourceEnvRef,
- MessageDestinationRefType[] messageDestinationRefs,
- ServiceRefType[] serviceRefs,
- GerServiceRefType[] gerServiceRefs,
- GerGbeanRefType[] gerGbeanRefs,
- ClassLoader cl) throws DeploymentException {
- ComponentContextBuilder builder = new ComponentContextBuilder();
- RefContext refContext = earContext.getRefContext();
- Configuration earConfiguration = earContext.getConfiguration();
-
- if (userTransaction != null) {
- builder.addUserTransaction(userTransaction);
- }
-
- AbstractNameQuery corbaGBean = earContext.getCORBAGBeanObjectName();
- if (corbaGBean != null) {
- builder.addORB(earConfiguration.getId(), corbaGBean);
- builder.addHandleDelegateReference(earConfiguration.getId(), corbaGBean);
- }
-
- URI moduleURI = module.getModuleURI();
-
- addEnvEntries(envEntries, builder, cl);
-
- if (ejbContext == null) {
- ejbContext = earConfiguration;
- }
-
-// ejb-ref
- addEJBRefs(earConfiguration, ejbContext, refContext, moduleURI, ejbRefs, mapEjbRefs(gerEjbRefs), cl, builder);
-
-// ejb-local-ref
- addEJBLocalRefs(ejbContext, refContext, moduleURI, ejbLocalRefs, mapEjbLocalRefs(gerEjbLocalRef), cl, builder);
-
-// resource-ref
- addResourceRefs(earConfiguration, refContext, resourceRefs, mapResourceRefs(gerResourceRef), cl, builder);
-
-// resource-env-ref
- addResourceEnvRefs(earConfiguration, refContext, resourceEnvRefs, mapResourceEnvRefs(gerResourceEnvRef), cl, builder);
-
- addMessageDestinationRefs(earConfiguration, refContext, messageDestinationRefs, cl, builder);
-
-// Map serviceRefMap = new HashMap();
-// Map serviceRefCredentialsNameMap = new HashMap();
-// mapServiceRefs(gerServiceRefs, serviceRefMap, serviceRefCredentialsNameMap);
- Map serviceRefMap = mapServiceRefs(gerServiceRefs);
- addServiceRefs(earContext, module, serviceRefs, serviceRefMap, cl, builder);
-
- addGBeanRefs(earContext, builder, refContext, gerGbeanRefs, cl);
-
- return builder.getContext();
- }
-
- private static void addGBeanRefs(EARContext earContext, ComponentContextBuilder builder, RefContext refContext, GerGbeanRefType[] gerGbeanRefs, ClassLoader cl) throws DeploymentException {
- if (null == gerGbeanRefs) {
- return;
- }
-
-
- for (int i = 0; i < gerGbeanRefs.length; i++) {
- GerGbeanRefType gerGbeanRef = gerGbeanRefs[i];
- addGBeanRef(earContext, builder, refContext, gerGbeanRef, cl);
- }
- }
-
- private static void addGBeanRef(EARContext earContext, ComponentContextBuilder builder, RefContext refContext, GerGbeanRefType gerGbeanRef, ClassLoader cl) throws DeploymentException{
- GerPatternType[] gbeanLocatorArray = gerGbeanRef.getPatternArray();
-
- String[] interfaceTypesArray = gerGbeanRef.getRefTypeArray();
- Set interfaceTypes = new HashSet(Arrays.asList(interfaceTypesArray));
- Set queries = new HashSet();
- for (int i = 0; i < gbeanLocatorArray.length; i++) {
- GerPatternType patternType = gbeanLocatorArray[i];
- AbstractNameQuery abstractNameQuery = buildAbstractNameQuery(patternType, null, null, interfaceTypes);
- queries.add(abstractNameQuery);
- }
-
- GBeanData gBeanData;
- Configuration configuration = earContext.getConfiguration();
- try {
- gBeanData = configuration.findGBeanData(queries);
- } catch (GBeanNotFoundException e) {
- throw new DeploymentException("Could not resolve reference at deploy time for queries " + queries, e);
- }
-
- if (interfaceTypes.isEmpty()) {
- interfaceTypes.add(gBeanData.getGBeanInfo().getClassName());
- }
- Class gBeanType;
- try {
- gBeanType = ClassLoading.loadClass(gBeanData.getGBeanInfo().getClassName(), cl);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("Cannot load GBean class", e);
- }
-
- String refName = gerGbeanRef.getRefName();
-
- builder.bind(refName, new GBeanReference(configuration.getId(), queries, gBeanType));
- }
-
- private static Map mapEjbRefs(GerEjbRefType[] refs) {
- Map refMap = new HashMap();
- if (refs != null) {
- for (int i = 0; i < refs.length; i++) {
- GerEjbRefType ref = refs[i];
- refMap.put(ref.getRefName().trim(), ref);
- }
- }
- return refMap;
- }
- private static Map mapEjbLocalRefs(GerEjbLocalRefType[] refs) {
- Map refMap = new HashMap();
- if (refs != null) {
- for (int i = 0; i < refs.length; i++) {
- GerEjbLocalRefType ref = refs[i];
- refMap.put(ref.getRefName().trim(), ref);
- }
- }
- return refMap;
- }
private static Map mapResourceRefs(GerResourceRefType[] refs) {
Map refMap = new HashMap();
@@ -829,29 +122,6 @@
return refMap;
}
- private static Map mapResourceEnvRefs(GerResourceEnvRefType[] refs) {
- Map refMap = new HashMap();
- if (refs != null) {
- for (int i = 0; i < refs.length; i++) {
- GerResourceEnvRefType ref = refs[i];
- refMap.put(ref.getRefName().trim(), ref);
- }
- }
- return refMap;
- }
-
- private static Map mapServiceRefs(GerServiceRefType[] refs) {
- Map refMap = new HashMap();
- if (refs != null) {
- for (int i = 0; i < refs.length; i++) {
- GerServiceRefType ref = refs[i];
- String serviceRefName = ref.getServiceRefName().trim();
- refMap.put(serviceRefName, ref);
- }
- }
- return refMap;
- }
-
public static AbstractNameQuery buildAbstractNameQuery(GerPatternType pattern, String type, String moduleType, Set interfaceTypes) {
String groupId = pattern.isSetGroupId() ? pattern.getGroupId().trim() : null;
String artifactid = pattern.isSetArtifactId() ? pattern.getArtifactId().trim() : null;
@@ -890,6 +160,5 @@
}
return new AbstractNameQuery(configId, nameMap);
}
-
}
Added: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java?view=auto&rev=442387
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java (added)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java Mon Sep 11 16:51:32 2006
@@ -0,0 +1,116 @@
+/**
+ *
+ * Copyright 2006 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.xml.namespace.QName;
+
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.j2ee.deployment.Module;
+import org.apache.geronimo.j2ee.deployment.NamingBuilder;
+import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.naming.reference.KernelReference;
+import org.apache.geronimo.xbeans.j2ee.EnvEntryType;
+import org.apache.xmlbeans.QNameSet;
+import org.apache.xmlbeans.XmlObject;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class EnvironmentEntryBuilder implements NamingBuilder {
+ private static final String J2EE_NAMESPACE = "http://java.sun.com/xml/ns/j2ee";
+
+ private static final QName ENV_ENTRY_QNAME = new QName(J2EE_NAMESPACE, "env-entry");
+ private static final QNameSet ENV_ENTRY_QNAME_SET = QNameSet.singleton(ENV_ENTRY_QNAME);
+
+ public void buildEnvironment(XmlObject specDD, XmlObject plan, Environment environment) {
+ }
+
+ public void initContext(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module) throws DeploymentException {
+ }
+
+ public void buildNaming(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module, Map componentContext) throws DeploymentException {
+ XmlObject[] envEntriesUntyped = specDD.selectChildren(ENV_ENTRY_QNAME_SET);
+ for (int i = 0; i < envEntriesUntyped.length; i++) {
+ EnvEntryType envEntry = (EnvEntryType) envEntriesUntyped[i].copy().changeType(EnvEntryType.type);
+ String name = envEntry.getEnvEntryName().getStringValue().trim();
+ String type = envEntry.getEnvEntryType().getStringValue().trim();
+ String text = envEntry.getEnvEntryValue().getStringValue().trim();
+ try {
+ Object value;
+ if (text == null) {
+ if ("org.apache.geronimo.kernel.Kernel".equals(type)) {
+ value = new KernelReference();
+ } else {
+ value = null;
+ }
+ } else if ("java.lang.String".equals(type)) {
+ value = text;
+ } else if ("java.lang.Character".equals(type)) {
+ value = new Character(text.charAt(0));
+ } else if ("java.lang.Boolean".equals(type)) {
+ value = Boolean.valueOf(text);
+ } else if ("java.lang.Byte".equals(type)) {
+ value = Byte.valueOf(text);
+ } else if ("java.lang.Short".equals(type)) {
+ value = Short.valueOf(text);
+ } else if ("java.lang.Integer".equals(type)) {
+ value = Integer.valueOf(text);
+ } else if ("java.lang.Long".equals(type)) {
+ value = Long.valueOf(text);
+ } else if ("java.lang.Float".equals(type)) {
+ value = Float.valueOf(text);
+ } else if ("java.lang.Double".equals(type)) {
+ value = Double.valueOf(text);
+ } else {
+ throw new DeploymentException("unrecognized type: " + type);
+ }
+ componentContext.put(ENV + name, value);
+ } catch (NumberFormatException e) {
+ throw new DeploymentException("Invalid env-entry value for name: " + name, e);
+ }
+ }
+
+ }
+
+ public QNameSet getSpecQNameSet() {
+ return ENV_ENTRY_QNAME_SET;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(EnvironmentEntryBuilder.class, NameFactory.MODULE_BUILDER);
+
+ GBEAN_INFO = infoBuilder.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+
+}
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java?view=auto&rev=442387
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java (added)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java Mon Sep 11 16:51:32 2006
@@ -0,0 +1,126 @@
+/**
+ *
+ * Copyright 2006 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.Set;
+import java.util.HashSet;
+import java.util.Arrays;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.QNameSet;
+import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.geronimo.kernel.GBeanNotFoundException;
+import org.apache.geronimo.kernel.ClassLoading;
+import org.apache.geronimo.naming.reference.GBeanReference;
+import org.apache.geronimo.xbeans.geronimo.naming.GerGbeanRefDocument;
+import org.apache.geronimo.xbeans.geronimo.naming.GerGbeanRefType;
+import org.apache.geronimo.xbeans.geronimo.naming.GerPatternType;
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.j2ee.deployment.Module;
+import org.apache.geronimo.j2ee.deployment.NamingBuilder;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class GBeanRefBuilder implements NamingBuilder {
+ private static final QName GBEAN_REF_QNAME = GerGbeanRefDocument.type.getDocumentElementName();
+ private static final QNameSet GBEAN_REF_QNAME_SET = QNameSet.singleton(GBEAN_REF_QNAME);
+
+ public void buildEnvironment(XmlObject specDD, XmlObject plan, Environment environment) {
+ }
+
+ public void initContext(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module) throws DeploymentException {
+ }
+
+ public void buildNaming(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module, Map componentContext) throws DeploymentException {
+ if (plan == null) {
+ return;
+ }
+ XmlObject[] gbeanRefsUntyped = plan == null? NO_REFS: plan.selectChildren(GBEAN_REF_QNAME_SET);
+ for (int i = 0; i < gbeanRefsUntyped.length; i++) {
+ XmlObject gbeanRefUntyped = gbeanRefsUntyped[i];
+ GerGbeanRefType gbeanRef = (GerGbeanRefType) gbeanRefUntyped.copy().changeType(GerGbeanRefType.type);
+ if (gbeanRef == null) {
+ throw new DeploymentException("Could not read gbeanRef " + gbeanRefUntyped + " as the correct xml type");
+ }
+ GerPatternType[] gbeanLocatorArray = gbeanRef.getPatternArray();
+
+ String[] interfaceTypesArray = gbeanRef.getRefTypeArray();
+ Set interfaceTypes = new HashSet(Arrays.asList(interfaceTypesArray));
+ Set queries = new HashSet();
+ for (int j = 0; j < gbeanLocatorArray.length; j++) {
+ GerPatternType patternType = gbeanLocatorArray[j];
+ AbstractNameQuery abstractNameQuery = ENCConfigBuilder.buildAbstractNameQuery(patternType, null, null, interfaceTypes);
+ queries.add(abstractNameQuery);
+ }
+
+ GBeanData gBeanData;
+ try {
+ gBeanData = localConfiguration.findGBeanData(queries);
+ } catch (GBeanNotFoundException e) {
+ throw new DeploymentException("Could not resolve reference at deploy time for queries " + queries, e);
+ }
+
+ if (interfaceTypes.isEmpty()) {
+ interfaceTypes.add(gBeanData.getGBeanInfo().getClassName());
+ }
+ ClassLoader cl = localConfiguration.getConfigurationClassLoader();
+ Class gBeanType;
+ try {
+ gBeanType = ClassLoading.loadClass(gBeanData.getGBeanInfo().getClassName(), cl);
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException("Cannot load GBean class", e);
+ }
+
+ String refName = gbeanRef.getRefName();
+
+ componentContext.put(ENV + refName, new GBeanReference(localConfiguration.getId(), queries, gBeanType));
+
+ }
+ }
+
+ public QNameSet getSpecQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return GBEAN_REF_QNAME_SET;
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(GBeanRefBuilder.class, NameFactory.MODULE_BUILDER);
+
+ GBEAN_INFO = infoBuilder.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+
+}
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/PersistenceContextRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/PersistenceContextRefBuilder.java?view=auto&rev=442387
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/PersistenceContextRefBuilder.java (added)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/PersistenceContextRefBuilder.java Mon Sep 11 16:51:32 2006
@@ -0,0 +1,142 @@
+/**
+ *
+ * Copyright 2006 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.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.kernel.GBeanNotFoundException;
+import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.kernel.repository.Dependency;
+import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.kernel.repository.ImportType;
+import org.apache.geronimo.naming.reference.PersistenceContextReference;
+import org.apache.geronimo.xbeans.geronimo.naming.GerPatternType;
+import org.apache.geronimo.xbeans.geronimo.naming.GerPersistenceContextRefDocument;
+import org.apache.geronimo.xbeans.geronimo.naming.GerPersistenceContextRefType;
+import org.apache.geronimo.xbeans.geronimo.naming.GerPersistenceContextTypeType;
+import org.apache.geronimo.xbeans.geronimo.naming.GerPropertyType;
+import org.apache.geronimo.schema.SchemaConversionUtils;
+import org.apache.geronimo.schema.NamespaceElementConverter;
+import org.apache.geronimo.deployment.service.EnvironmentBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.j2ee.deployment.Module;
+import org.apache.geronimo.j2ee.deployment.NamingBuilder;
+import org.apache.xmlbeans.QNameSet;
+import org.apache.xmlbeans.XmlObject;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class PersistenceContextRefBuilder implements NamingBuilder {
+ private static final QName PERSISTENCE_CONTEXT_REF_QNAME = GerPersistenceContextRefDocument.type.getDocumentElementName();
+ private static final QNameSet PERSISTENCE_CONTEXT_REF_QNAME_SET = QNameSet.singleton(PERSISTENCE_CONTEXT_REF_QNAME);
+
+ private final Environment defaultEnvironment = new Environment();
+
+ public PersistenceContextRefBuilder() {
+ defaultEnvironment.addDependency(new Dependency(new Artifact("org.apache.geronimo.modules", "geronimo-persistence-jpa10", (String)null, "jar"), ImportType.CLASSES));
+ }
+
+ public void buildEnvironment(XmlObject specDD, XmlObject plan, Environment environment) {
+ if (getPersistenceContextRefs(plan).length > 0) {
+ EnvironmentBuilder.mergeEnvironments(environment, defaultEnvironment);
+ }
+ }
+
+ public void initContext(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module) throws DeploymentException {
+ }
+
+ public void buildNaming(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module, Map componentContext) throws DeploymentException {
+ XmlObject[] persistenceContextRefsUntyped = getPersistenceContextRefs(plan);
+ for (int i = 0; i < persistenceContextRefsUntyped.length; i++) {
+ XmlObject persistenceContextRefUntyped = persistenceContextRefsUntyped[i];
+ GerPersistenceContextRefType persistenceContextRef = (GerPersistenceContextRefType) persistenceContextRefUntyped.copy().changeType(GerPersistenceContextRefType.type);
+ if (persistenceContextRef == null) {
+ throw new DeploymentException("Could not read persistenceContextRef " + persistenceContextRefUntyped + " as the correct xml type");
+ }
+ String persistenceContextRefName = persistenceContextRef.getPersistenceContextRefName();
+ boolean transactionScoped = !persistenceContextRef.getPersistenceContextType().equals(GerPersistenceContextTypeType.EXTENDED);
+ GerPropertyType[] propertyTypes = persistenceContextRef.getPropertyArray();
+ Map properties = new HashMap();
+ for (int j = 0; j < propertyTypes.length; j++) {
+ GerPropertyType propertyType = propertyTypes[j];
+ String key = propertyType.getKey();
+ String value = propertyType.getValue();
+ properties.put(key, value);
+ }
+
+
+ Set interfaceTypes = Collections.singleton("org.apache.geronimo.persistence.PersistenceUnitGBean");
+ AbstractNameQuery persistenceUnitNameQuery;
+ if (persistenceContextRef.isSetPersistenceUnitName()) {
+ String persistenceUnitName = persistenceContextRef.getPersistenceUnitName();
+ persistenceUnitNameQuery = new AbstractNameQuery(null, Collections.singletonMap("name", persistenceUnitName), interfaceTypes);
+ } else {
+ GerPatternType gbeanLocator = persistenceContextRef.getPattern();
+
+ persistenceUnitNameQuery = ENCConfigBuilder.buildAbstractNameQuery(gbeanLocator, null, null, interfaceTypes);
+ }
+
+ try {
+ localConfiguration.findGBeanData(persistenceUnitNameQuery);
+ } catch (GBeanNotFoundException e) {
+ throw new DeploymentException("Could not resolve reference at deploy time for query " + persistenceUnitNameQuery, e);
+ }
+
+ PersistenceContextReference reference = new PersistenceContextReference(localConfiguration.getId(), persistenceUnitNameQuery, transactionScoped, properties);
+
+ componentContext.put(ENV + persistenceContextRefName, reference);
+
+ }
+ }
+
+ public QNameSet getSpecQNameSet() {
+ SchemaConversionUtils.registerNamespaceConversions(Collections.singletonMap(PERSISTENCE_CONTEXT_REF_QNAME.getLocalPart(), new NamespaceElementConverter(PERSISTENCE_CONTEXT_REF_QNAME.getNamespaceURI())));
+ return QNameSet.EMPTY;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return PERSISTENCE_CONTEXT_REF_QNAME_SET;
+ }
+
+ private XmlObject[] getPersistenceContextRefs(XmlObject plan) {
+ return plan == null? NO_REFS: plan.selectChildren(PersistenceContextRefBuilder.PERSISTENCE_CONTEXT_REF_QNAME_SET);
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(PersistenceContextRefBuilder.class, NameFactory.MODULE_BUILDER);
+
+ GBEAN_INFO = infoBuilder.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+}
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/PersistenceContextRefBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/PersistenceContextRefBuilder.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/PersistenceContextRefBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UnavailableRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UnavailableRefBuilder.java?view=auto&rev=442387
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UnavailableRefBuilder.java (added)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UnavailableRefBuilder.java Mon Sep 11 16:51:32 2006
@@ -0,0 +1,88 @@
+/**
+ *
+ * Copyright 2006 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.xml.namespace.QName;
+
+import org.apache.geronimo.j2ee.deployment.NamingBuilder;
+import org.apache.geronimo.j2ee.deployment.Module;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.QNameSet;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class UnavailableRefBuilder implements NamingBuilder {
+ private final QNameSet unavailableQNameSet;
+ private QName unavailableQName;
+
+ public UnavailableRefBuilder(String namespaceURI, String localPart) {
+ unavailableQName = new QName(namespaceURI, localPart);
+ unavailableQNameSet = QNameSet.singleton(unavailableQName);
+ }
+ public void buildEnvironment(XmlObject specDD, XmlObject plan, Environment environment) throws DeploymentException {
+ checkUnavailable(specDD);
+ }
+
+ private void checkUnavailable(XmlObject specDD) throws DeploymentException {
+ XmlObject[] specRefs = specDD.selectChildren(unavailableQNameSet);
+ if (specRefs.length > 0) {
+ throw new DeploymentException("This server cannot deploy references of type " + unavailableQName);
+ }
+ }
+
+ public void initContext(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module) throws DeploymentException {
+ checkUnavailable(specDD);
+ }
+
+ public void buildNaming(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module, Map componentContext) throws DeploymentException {
+ checkUnavailable(specDD);
+ }
+
+ public QNameSet getSpecQNameSet() {
+ return unavailableQNameSet;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(UnavailableRefBuilder.class, NameFactory.MODULE_BUILDER);
+ infoBuilder.addAttribute("specNamespaceURI", String.class, true, true);
+ infoBuilder.addAttribute("specLocalPart", String.class, true, true);
+
+ infoBuilder.setConstructor(new String[] {"specNamespaceURI", "specLocalPart"});
+
+ GBEAN_INFO = infoBuilder.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+}
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UnavailableRefBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UnavailableRefBuilder.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UnavailableRefBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UserTransactionRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UserTransactionRefBuilder.java?view=auto&rev=442387
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UserTransactionRefBuilder.java (added)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UserTransactionRefBuilder.java Mon Sep 11 16:51:32 2006
@@ -0,0 +1,64 @@
+/**
+ *
+ * Copyright 2006 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 org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.j2ee.deployment.Module;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.xmlbeans.QNameSet;
+import org.apache.xmlbeans.XmlObject;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class UserTransactionRefBuilder extends AbstractNamingBuilder {
+
+ public void buildNaming(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module, Map componentContext) throws DeploymentException {
+// EARContext rootContext = module.getRootEarContext();
+// UserTransaction userTransaction = rootContext.getUserTransaction();
+// if (userTransaction != null) {
+// componentContext.put("UserTransaction", userTransaction);
+// rootContext.setUserTransaction(null);
+// }
+ }
+
+ public QNameSet getSpecQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public static final GBeanInfo GBEAN_INFO;
+
+ static {
+ GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(UserTransactionRefBuilder.class, NameFactory.MODULE_BUILDER);
+ GBEAN_INFO = infoBuilder.getBeanInfo();
+ }
+
+ public static GBeanInfo getGBeanInfo() {
+ return GBEAN_INFO;
+ }
+
+}
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UserTransactionRefBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UserTransactionRefBuilder.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/UserTransactionRefBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/schema/geronimo-naming-1.2.xsd
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/main/schema/geronimo-naming-1.2.xsd?view=diff&rev=442387&r1=442386&r2=442387
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/main/schema/geronimo-naming-1.2.xsd (original)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/main/schema/geronimo-naming-1.2.xsd Mon Sep 11 16:51:32 2006
@@ -36,9 +36,8 @@
</xsd:annotation>
- <xsd:element name="gbean-ref" type="gernaming:gbean-refType"/>
<xsd:element name="ejb-ref" type="gernaming:ejb-refType"/>
- <!-- <xsd:element name="ejb-local-ref" type="gernaming:ejb-local-refType"/>-->
+ <xsd:element name="ejb-local-ref" type="gernaming:ejb-local-refType"/>
<xsd:element name="service-ref" type="gernaming:service-refType"/>
<xsd:element name="resource-ref" type="gernaming:resource-refType"/>
<xsd:element name="resource-env-ref" type="gernaming:resource-env-refType"/>
@@ -55,7 +54,7 @@
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
- <xsd:element name="gbean-ref" type="gernaming:gbean-refType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element ref="gernaming:abstract-naming-entry" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="ejb-ref" type="gernaming:ejb-refType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="ejb-local-ref" type="gernaming:ejb-local-refType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="service-ref" type="gernaming:service-refType" minOccurs="0" maxOccurs="unbounded"/>
@@ -65,6 +64,13 @@
</xsd:sequence>
</xsd:group>
+ <xsd:element name="abstract-naming-entry" abstract="true" type="gernaming:abstract-naming-entryType"/>
+
+ <xsd:complexType name="abstract-naming-entryType" abstract="true">
+ <xsd:sequence>
+ </xsd:sequence>
+ </xsd:complexType>
+
<!--ejb-link acts like ejb-link in spec descriptors-->
<!--resource-link contains the name of the outbound-connectionfactory-instance -->
<!--message-destination-link acts like message-destination-link in spec descriptors-->
@@ -106,13 +112,53 @@
</xsd:sequence>
</xsd:complexType>
+ <xsd:element name="gbean-ref" type="gernaming:gbean-refType" substitutionGroup="gernaming:abstract-naming-entry"/>
+
<xsd:complexType name="gbean-refType">
+ <xsd:complexContent>
+ <xsd:extension base="gernaming:abstract-naming-entryType">
+ <xsd:sequence>
+ <xsd:element name="ref-name" type="xsd:string"/>
+ <xsd:element name="ref-type" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="pattern" type="gernaming:patternType"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="persistence-context-ref" type="gernaming:persistence-context-refType"
+ substitutionGroup="gernaming:abstract-naming-entry"/>
+
+ <xsd:complexType name="persistence-context-refType">
+ <xsd:complexContent>
+ <xsd:extension base="gernaming:abstract-naming-entryType">
+ <xsd:sequence>
+ <xsd:element name="persistence-context-ref-name" type="xsd:string"/>
+ <xsd:choice>
+ <xsd:element name="persistence-unit-name" type="xsd:string"/>
+ <xsd:element name="pattern" type="gernaming:patternType"/>
+ </xsd:choice>
+ <xsd:element name="persistence-context-type" type="gernaming:persistence-context-typeType"
+ minOccurs="0"/>
+ <xsd:element name="property" type="gernaming:propertyType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="persistence-context-typeType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="transaction-scoped"/>
+ <xsd:enumeration value="extended"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="propertyType">
<xsd:sequence>
- <xsd:element name="ref-name" type="xsd:string"/>
- <xsd:element name="ref-type" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
- <xsd:choice minOccurs="0" maxOccurs="unbounded">
- <xsd:element name="pattern" type="gernaming:patternType"/>
- </xsd:choice>
+ <xsd:element name="key" type="xsd:string"/>
+ <xsd:element name="value" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
Added: geronimo/server/trunk/modules/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java?view=auto&rev=442387
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java (added)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java Mon Sep 11 16:51:32 2006
@@ -0,0 +1,149 @@
+/**
+ *
+ * Copyright 2003-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.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.naming.Context;
+import javax.naming.NameClassPair;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+
+import junit.framework.TestCase;
+import org.apache.geronimo.naming.enc.EnterpriseNamingContext;
+import org.apache.geronimo.j2ee.deployment.NamingBuilder;
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlCursor;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class EnvironmentEntryBuilderTest extends TestCase {
+ private Map componentContext = new HashMap();
+ private NamingBuilder environmentEntryBuilder = new EnvironmentEntryBuilder();
+
+ private static final String TEST = "<tmp xmlns=\"http://java.sun.com/xml/ns/j2ee\">" +
+ "<env-entry>" +
+ "<env-entry-name>string</env-entry-name>" +
+ "<env-entry-type>java.lang.String</env-entry-type>" +
+ "<env-entry-value>Hello World</env-entry-value>" +
+ "</env-entry>" +
+
+ "<env-entry>" +
+ "<env-entry-name>char</env-entry-name>" +
+ "<env-entry-type>java.lang.Character</env-entry-type>" +
+ "<env-entry-value>H</env-entry-value>" +
+ "</env-entry>" +
+
+ "<env-entry>" +
+ "<env-entry-name>byte</env-entry-name>" +
+ "<env-entry-type>java.lang.Byte</env-entry-type>" +
+ "<env-entry-value>12</env-entry-value>" +
+ "</env-entry>" +
+
+ "<env-entry>" +
+ "<env-entry-name>short</env-entry-name>" +
+ "<env-entry-type>java.lang.Short</env-entry-type>" +
+ "<env-entry-value>12345</env-entry-value>" +
+ "</env-entry>" +
+
+ "<env-entry>" +
+ "<env-entry-name>int</env-entry-name>" +
+ "<env-entry-type>java.lang.Integer</env-entry-type>" +
+ "<env-entry-value>12345678</env-entry-value>" +
+ "</env-entry>" +
+
+ "<env-entry>" +
+ "<env-entry-name>long</env-entry-name>" +
+ "<env-entry-type>java.lang.Long</env-entry-type>" +
+ "<env-entry-value>1234567890123456</env-entry-value>" +
+ "</env-entry>" +
+
+ "<env-entry>" +
+ "<env-entry-name>float</env-entry-name>" +
+ "<env-entry-type>java.lang.Float</env-entry-type>" +
+ "<env-entry-value>123.456</env-entry-value>" +
+ "</env-entry>" +
+
+ "<env-entry>" +
+ "<env-entry-name>double</env-entry-name>" +
+ "<env-entry-type>java.lang.Double</env-entry-type>" +
+ "<env-entry-value>12345.6789</env-entry-value>" +
+ "</env-entry>" +
+
+ "<env-entry>" +
+ "<env-entry-name>boolean</env-entry-name>" +
+ "<env-entry-type>java.lang.Boolean</env-entry-type>" +
+ "<env-entry-value>TRUE</env-entry-value>" +
+ "</env-entry>" +
+ "</tmp>";
+
+ 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);
+ Integer intVal = new Integer(12345678);
+ Long longVal = new Long(1234567890123456L);
+ Float floatVal = new Float(123.456);
+ Double doubleVal = new Double(12345.6789);
+ Boolean booleanVal = Boolean.TRUE;
+
+ XmlObject doc = XmlObject.Factory.parse(TEST);
+ XmlCursor cursor = doc.newCursor();
+ try {
+ cursor.toFirstChild();
+ doc = cursor.getObject();
+ } finally {
+ cursor.dispose();
+ }
+ environmentEntryBuilder.buildNaming(doc, null, null, null, null, componentContext);
+ Context context = EnterpriseNamingContext.createEnterpriseNamingContext(componentContext);
+ Set actual = new HashSet();
+ 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"}));
+ assertEquals(expected, actual);
+ assertEquals(stringVal, context.lookup("env/string"));
+ assertEquals(charVal, context.lookup("env/char"));
+ assertEquals(byteVal, context.lookup("env/byte"));
+ assertEquals(shortVal, context.lookup("env/short"));
+ assertEquals(intVal, context.lookup("env/int"));
+ assertEquals(longVal, context.lookup("env/long"));
+ assertEquals(floatVal, context.lookup("env/float"));
+ assertEquals(doubleVal, context.lookup("env/double"));
+ assertEquals(booleanVal, context.lookup("env/boolean"));
+ }
+
+ public void testEmptyEnvironment() throws NamingException {
+ Context context = EnterpriseNamingContext.createEnterpriseNamingContext(componentContext);
+ try {
+ Context env = (Context) context.lookup("env");
+ assertNotNull(env);
+ } catch (NamingException e) {
+ fail();
+ }
+ }
+
+}
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/modules/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/PersistenceContextReference.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/PersistenceContextReference.java?view=auto&rev=442387
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/PersistenceContextReference.java (added)
+++ geronimo/server/trunk/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/PersistenceContextReference.java Mon Sep 11 16:51:32 2006
@@ -0,0 +1,69 @@
+/**
+ *
+ * Copyright 2006 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.reference;
+
+import java.util.Map;
+
+import javax.naming.NameNotFoundException;
+
+import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.GBeanNotFoundException;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.AbstractName;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class PersistenceContextReference extends ConfigurationAwareReference {
+
+ private boolean transactionScoped;
+ private Map properties;
+
+ public PersistenceContextReference(Artifact configId, AbstractNameQuery abstractNameQuery, boolean transactionScoped, Map properties) {
+ super(configId, abstractNameQuery);
+ this.transactionScoped = transactionScoped;
+ this.properties = properties;
+ }
+
+ public String getClassName() {
+ return "javax.persistence.EntityManager";
+ }
+
+ public Object getContent() throws NameNotFoundException {
+ Kernel kernel = getKernel();
+
+ AbstractName target;
+ try {
+ target = resolveTargetName();
+ } catch (GBeanNotFoundException e) {
+ throw (NameNotFoundException) new NameNotFoundException("Could not resolve name query: " + abstractNameQueries).initCause(e);
+ }
+
+ Object entityManager;
+ try {
+ entityManager = kernel.invoke(target, "getEntityManager", new Object[] {Boolean.valueOf(transactionScoped), properties}, new String[] {boolean.class.getName(), Map.class.getName()});
+ } catch (Exception e) {
+ throw (IllegalStateException) new IllegalStateException("Could not get entityManager").initCause(e);
+ }
+ if (entityManager == null) {
+ throw new IllegalStateException("entity manager not returned. Target " + target + " not started");
+ }
+ return entityManager;
+}
+}
Propchange: geronimo/server/trunk/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/PersistenceContextReference.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/PersistenceContextReference.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/modules/geronimo-naming/src/main/java/org/apache/geronimo/naming/reference/PersistenceContextReference.java
------------------------------------------------------------------------------
svn:mime-type = text/plain