Author: djencks
Date: Thu Nov 16 14:14:54 2006
New Revision: 475947
URL: http://svn.apache.org/viewvc?view=rev&rev=475947
Log:
GERONIMO-2484 NamespaceDrivenBuilders should register QNameSets
Added:
geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractBuilderCollection.java (with props)
geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractNamespaceBuilder.java (with props)
geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/xmlbeans/
geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java (contents, props changed)
- copied, changed from r474886, geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java
Removed:
geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java
Modified:
geronimo/server/trunk/modules/geronimo-client-builder/src/main/java/org/apache/geronimo/client/builder/AppClientModuleBuilder.java
geronimo/server/trunk/modules/geronimo-clustering-builder-wadi/src/main/java/org/apache/geronimo/clustering/wadi/jetty/WADIJettyClusteringBuilder.java
geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java
geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java
geronimo/server/trunk/modules/geronimo-connector-builder/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java
geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilder.java
geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilderCollection.java
geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilder.java
geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilderCollection.java
geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java
geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/ResourceEnvironmentSetter.java
geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java
geronimo/server/trunk/modules/geronimo-security-builder/src/main/java/org/apache/geronimo/security/deployment/GeronimoSecurityBuilderImpl.java
geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/GBeanBuilder.java
geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java
geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java
Modified: geronimo/server/trunk/modules/geronimo-client-builder/src/main/java/org/apache/geronimo/client/builder/AppClientModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-client-builder/src/main/java/org/apache/geronimo/client/builder/AppClientModuleBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-client-builder/src/main/java/org/apache/geronimo/client/builder/AppClientModuleBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-client-builder/src/main/java/org/apache/geronimo/client/builder/AppClientModuleBuilder.java Thu Nov 16 14:14:54 2006
@@ -45,6 +45,7 @@
import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
import org.apache.geronimo.deployment.service.EnvironmentBuilder;
+import org.apache.geronimo.deployment.service.GBeanBuilder;
import org.apache.geronimo.deployment.util.DeploymentUtil;
import org.apache.geronimo.deployment.util.NestedJarFile;
import org.apache.geronimo.deployment.xbeans.EnvironmentType;
@@ -169,7 +170,7 @@
this.repositories = repositories;
this.connectorModuleBuilder = connectorModuleBuilder;
this.securityBuilder = securityBuilder;
- this.serviceBuilder = new NamespaceDrivenBuilderCollection(serviceBuilder);
+ this.serviceBuilder = new NamespaceDrivenBuilderCollection(serviceBuilder, GBeanBuilder.SERVICE_QNAME);
this.namingBuilders = new NamingBuilderCollection(namingBuilders, GerAbstractNamingEntryDocument.type.getDocumentElementName());
}
Modified: geronimo/server/trunk/modules/geronimo-clustering-builder-wadi/src/main/java/org/apache/geronimo/clustering/wadi/jetty/WADIJettyClusteringBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-clustering-builder-wadi/src/main/java/org/apache/geronimo/clustering/wadi/jetty/WADIJettyClusteringBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-clustering-builder-wadi/src/main/java/org/apache/geronimo/clustering/wadi/jetty/WADIJettyClusteringBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-clustering-builder-wadi/src/main/java/org/apache/geronimo/clustering/wadi/jetty/WADIJettyClusteringBuilder.java Thu Nov 16 14:14:54 2006
@@ -51,6 +51,7 @@
import org.apache.geronimo.xbeans.geronimo.naming.GerPatternType;
import org.apache.xmlbeans.QNameSet;
import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlException;
/**
*
@@ -115,29 +116,28 @@
}
}
- public String getNamespace() {
- XmlBeansUtil.registerSubstitutionGroupElements(org.apache.geronimo.xbeans.geronimo.j2ee.GerClusteringDocument.type.getDocumentElementName(), CLUSTERING_WADI_QNAME_SET);
- return CLUSTERING_WADI_QNAME.getNamespaceURI();
- }
-
private GerClusteringWadiType getWadiClusterConfig(XmlObject container) throws DeploymentException {
XmlObject[] items = container.selectChildren(CLUSTERING_WADI_QNAME_SET);
if (items.length > 1) {
throw new DeploymentException("Unexpected count of clustering elements in geronimo plan " + items.length + " qnameset: " + CLUSTERING_WADI_QNAME_SET);
}
if (items.length == 1) {
- return (GerClusteringWadiType) items[0].copy().changeType(GerClusteringWadiType.type);
+ try {
+ return (GerClusteringWadiType) XmlBeansUtil.typedCopy(items[0], GerClusteringWadiType.type);
+ } catch (XmlException e) {
+ throw new DeploymentException("Could not validate jetty wadi clustering config", e);
+ }
}
return null;
}
- private AbstractName addSessionManager(GerClusteringWadiType clustering, GBeanData webModuleData,
+ private AbstractName addSessionManager(GerClusteringWadiType clustering, GBeanData webModuleData,
DeploymentContext moduleContext) throws GBeanAlreadyExistsException {
AbstractName name = moduleContext.getNaming().createChildName(moduleContext.getModuleName(),
"WADISessionManager", NameFactory.GERONIMO_SERVICE);
GBeanData beanData = new GBeanData(name, BasicWADISessionManager.GBEAN_INFO);
-
+
setConfigInfo(clustering, webModuleData, beanData);
setReplicationManagerFactory(clustering, beanData);
setReplicaStorageFactory(clustering, beanData);
@@ -162,7 +162,7 @@
if (null == sessionTimeout) {
throw new AssertionError();
}
-
+
WADISessionManagerConfigInfo configInfo = new WADISessionManagerConfigInfo(
beanData.getAbstractName().toURI(),
sweepInterval,
@@ -246,6 +246,14 @@
AbstractNameQuery query = ENCConfigBuilder.buildAbstractNameQuery(patternTypes[i], null, null, null);
patterns.add(query);
}
+ }
+
+ public QNameSet getSpecQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return CLUSTERING_WADI_QNAME_SET;
}
public static final GBeanInfo GBEAN_INFO;
Modified: geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java Thu Nov 16 14:14:54 2006
@@ -68,6 +68,7 @@
import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
import org.apache.geronimo.deployment.service.EnvironmentBuilder;
+import org.apache.geronimo.deployment.service.GBeanBuilder;
import org.apache.geronimo.deployment.util.DeploymentUtil;
import org.apache.geronimo.deployment.xbeans.EnvironmentType;
import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
@@ -157,7 +158,7 @@
this.defaultIdleTimeoutMinutes = defaultIdleTimeoutMinutes;
this.defaultXATransactionCaching = defaultXATransactionCaching;
this.defaultXAThreadCaching = defaultXAThreadCaching;
- this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders);
+ this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders, GBeanBuilder.SERVICE_QNAME);
}
public Module createModule(File plan, JarFile moduleFile, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
Modified: geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java Thu Nov 16 14:14:54 2006
@@ -148,7 +148,7 @@
}
- public void setResourceEnvironment(ResourceEnvironmentBuilder builder, XmlObject[] resourceRefs, GerResourceRefType[] gerResourceRefs) {
+ public void setResourceEnvironment(ResourceEnvironmentBuilder builder, XmlObject[] resourceRefs, GerResourceRefType[] gerResourceRefs) throws DeploymentException {
resourceRefs = convert(resourceRefs, J2EE_CONVERTER, ResourceRefType.type);
Map refMap = mapResourceRefs(gerResourceRefs);
Set unshareableResources = new HashSet();
Modified: geronimo/server/trunk/modules/geronimo-connector-builder/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-connector-builder/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-connector-builder/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java (original)
+++ geronimo/server/trunk/modules/geronimo-connector-builder/src/test/java/org/apache/geronimo/connector/deployment/MessageDestinationTest.java Thu Nov 16 14:14:54 2006
@@ -232,11 +232,13 @@
"" +
" n1" +
" java.lang.Object" +
+ " Consumes" +
" d1" +
"" +
"" +
" n2" +
" java.lang.Object" +
+ " Consumes" +
" d2" +
"" +
"";
Added: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractBuilderCollection.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractBuilderCollection.java?view=auto&rev=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractBuilderCollection.java (added)
+++ geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractBuilderCollection.java Thu Nov 16 14:14:54 2006
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.geronimo.deployment;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.xmlbeans.QNameSet;
+import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
+import org.apache.geronimo.gbean.ReferenceCollection;
+import org.apache.geronimo.gbean.ReferenceCollectionListener;
+import org.apache.geronimo.gbean.ReferenceCollectionEvent;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public abstract class AbstractBuilderCollection {
+ protected final Collection builders;
+ protected final QName basePlanElementName;
+ protected QNameSet specQNames = QNameSet.EMPTY;
+ protected QNameSet planQNames = QNameSet.EMPTY;
+
+ protected AbstractBuilderCollection(Collection builders, final QName basePlanElementName) {
+ this.builders = builders == null ? Collections.EMPTY_SET : builders;
+ this.basePlanElementName = basePlanElementName;
+ if (builders instanceof ReferenceCollection) {
+ ((ReferenceCollection) builders).addReferenceCollectionListener(new ReferenceCollectionListener() {
+
+ public void memberAdded(ReferenceCollectionEvent event) {
+ addBuilder(event.getMember());
+ }
+
+ public void memberRemoved(ReferenceCollectionEvent event) {
+ Object builder = event.getMember();
+ QNameSet builderSpecQNames = ((AbstractNamespaceBuilder) builder).getSpecQNameSet();
+ specQNames = specQNames.intersect(builderSpecQNames.inverse());
+ QNameSet builderPlanQNames = ((AbstractNamespaceBuilder) builder).getPlanQNameSet();
+ planQNames = planQNames.intersect(builderPlanQNames.inverse());
+ XmlBeansUtil.unregisterSubstitutionGroupElements(basePlanElementName, builderPlanQNames);
+ }
+ });
+ }
+ for (Iterator iterator = this.builders.iterator(); iterator.hasNext();) {
+ Object builder = iterator.next();
+ addBuilder(builder);
+ }
+ }
+
+
+ protected void addBuilder(Object builder) {
+ QNameSet builderSpecQNames = ((AbstractNamespaceBuilder) builder).getSpecQNameSet();
+ QNameSet builderPlanQNames = ((AbstractNamespaceBuilder) builder).getPlanQNameSet();
+ if (builderSpecQNames == null) {
+ throw new IllegalStateException("Builder " + builder + " is missing spec qnames");
+ }
+ if (builderPlanQNames == null) {
+ throw new IllegalStateException("Builder " + builder + " is missing plan qnames");
+ }
+ if (!specQNames.isDisjoint(builderSpecQNames) && !planQNames.isDisjoint(builderPlanQNames)) {
+ throw new IllegalArgumentException("Duplicate builderSpecQNames in builder set: " + builderSpecQNames + " and duplicate builderPlanQNames in builder set: " + builderPlanQNames);
+ }
+ try {
+ specQNames = specQNames.union(builderSpecQNames);
+ planQNames = planQNames.union(builderPlanQNames);
+ } catch (NullPointerException e) {
+ throw (IllegalArgumentException) new IllegalArgumentException("could not merge qnamesets for builder " + builder).initCause(e);
+
+ }
+ //really?
+ XmlBeansUtil.registerSubstitutionGroupElements(basePlanElementName, builderPlanQNames);
+ }
+
+ public QNameSet getSpecQNameSet() {
+ return specQNames;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return null;
+ }
+}
Propchange: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractBuilderCollection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractBuilderCollection.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractBuilderCollection.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractNamespaceBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractNamespaceBuilder.java?view=auto&rev=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractNamespaceBuilder.java (added)
+++ geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractNamespaceBuilder.java Thu Nov 16 14:14:54 2006
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.geronimo.deployment;
+
+import org.apache.xmlbeans.QNameSet;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public interface AbstractNamespaceBuilder {
+ QNameSet getSpecQNameSet();
+
+ QNameSet getPlanQNameSet();
+}
Propchange: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractNamespaceBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractNamespaceBuilder.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/AbstractNamespaceBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilder.java Thu Nov 16 14:14:54 2006
@@ -28,12 +28,10 @@
/**
* @version $Rev$ $Date$
*/
-public interface NamespaceDrivenBuilder {
+public interface NamespaceDrivenBuilder extends AbstractNamespaceBuilder {
void buildEnvironment(XmlObject container, Environment environment) throws DeploymentException;
void build(XmlObject container, DeploymentContext applicationContext, DeploymentContext moduleContext) throws DeploymentException;
-
- String getNamespace();
}
Modified: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilderCollection.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilderCollection.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilderCollection.java (original)
+++ geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/NamespaceDrivenBuilderCollection.java Thu Nov 16 14:14:54 2006
@@ -18,16 +18,11 @@
package org.apache.geronimo.deployment;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Iterator;
import java.util.Collection;
-import java.util.List;
-import java.util.Collections;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
-import org.apache.geronimo.gbean.ReferenceCollection;
-import org.apache.geronimo.gbean.ReferenceCollectionListener;
-import org.apache.geronimo.gbean.ReferenceCollectionEvent;
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.kernel.repository.Environment;
import org.apache.xmlbeans.XmlObject;
@@ -35,39 +30,10 @@
/**
* @version $Rev$ $Date$
*/
-public class NamespaceDrivenBuilderCollection {
-
- private final Collection builders;
- private final Set namespaces = new HashSet();
-
- public NamespaceDrivenBuilderCollection(Collection builders) {
- this.builders = builders == null? Collections.EMPTY_SET: builders;
- if (builders instanceof ReferenceCollection) {
- ((ReferenceCollection)builders).addReferenceCollectionListener(new ReferenceCollectionListener() {
-
- public void memberAdded(ReferenceCollectionEvent event) {
- addBuilder(event.getMember());
- }
-
- public void memberRemoved(ReferenceCollectionEvent event) {
- Object builder = event.getMember();
- String namespace = ((NamespaceDrivenBuilder)builder).getNamespace();
- namespaces.remove(namespace);
- }
- });
- }
- for (Iterator iterator = this.builders.iterator(); iterator.hasNext();) {
- Object builder = iterator.next();
- addBuilder(builder);
- }
- }
+public class NamespaceDrivenBuilderCollection extends AbstractBuilderCollection {
- private void addBuilder(Object builder) {
- String namespace = ((NamespaceDrivenBuilder)builder).getNamespace();
- if (namespaces.contains(namespace)) {
- throw new IllegalArgumentException("Duplicate namespace in builder set: " + namespace);
- }
- namespaces.add(namespace);
+ public NamespaceDrivenBuilderCollection(Collection builders, final QName basePlanElementName) {
+ super(builders, basePlanElementName);
}
public void buildEnvironment(XmlObject container, Environment environment) throws DeploymentException {
@@ -84,6 +50,4 @@
}
}
- public void addLoaders(List loaderList) {
- }
}
Copied: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java (from r474886, geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java?view=diff&rev=475947&p1=geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java&r1=474886&p2=geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java (original)
+++ geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java Thu Nov 16 14:14:54 2006
@@ -177,6 +177,12 @@
return container.selectChildren(substitutionGroupMembers);
}
+ public static XmlObject typedCopy(XmlObject in, SchemaType type) throws XmlException {
+ XmlObject out = in.copy().changeType(type);
+ validateDD(out);
+ return out;
+ }
+
public static void validateDD(XmlObject dd) throws XmlException {
XmlOptions xmlOptions = new XmlOptions();
xmlOptions.setLoadLineNumbers();
Propchange: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/server/trunk/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/xmlbeans/XmlBeansUtil.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java Thu Nov 16 14:14:54 2006
@@ -49,6 +49,7 @@
import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
import org.apache.geronimo.deployment.service.EnvironmentBuilder;
+import org.apache.geronimo.deployment.service.GBeanBuilder;
import org.apache.geronimo.deployment.util.DeploymentUtil;
import org.apache.geronimo.deployment.util.NestedJarFile;
import org.apache.geronimo.deployment.xbeans.ArtifactType;
@@ -85,6 +86,7 @@
import org.apache.geronimo.xbeans.geronimo.j2ee.GerApplicationType;
import org.apache.geronimo.xbeans.geronimo.j2ee.GerExtModuleType;
import org.apache.geronimo.xbeans.geronimo.j2ee.GerModuleType;
+import org.apache.geronimo.xbeans.geronimo.j2ee.GerSecurityDocument;
import org.apache.geronimo.xbeans.j2ee.ApplicationType;
import org.apache.geronimo.xbeans.j2ee.ModuleType;
import org.apache.geronimo.xbeans.j2ee.ApplicationDocument;
@@ -216,8 +218,8 @@
this.webConfigBuilder = webConfigBuilder;
this.connectorConfigBuilder = connectorConfigBuilder;
this.appClientConfigBuilder = appClientConfigBuilder;
- this.securityBuilders = new NamespaceDrivenBuilderCollection(securityBuilders);
- this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders);
+ this.securityBuilders = new NamespaceDrivenBuilderCollection(securityBuilders, GerSecurityDocument.type.getDocumentElementName());
+ this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders, GBeanBuilder.SERVICE_QNAME);
this.transactionManagerObjectName = transactionManagerAbstractName;
this.connectionTrackerObjectName = connectionTrackerAbstractName;
Modified: geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilder.java Thu Nov 16 14:14:54 2006
@@ -23,13 +23,14 @@
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.kernel.config.Configuration;
import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.deployment.AbstractNamespaceBuilder;
import org.apache.xmlbeans.QNameSet;
import org.apache.xmlbeans.XmlObject;
/**
* @version $Rev$ $Date$
*/
-public interface NamingBuilder {
+public interface NamingBuilder extends AbstractNamespaceBuilder {
XmlObject[] NO_REFS = new XmlObject[] {};
String ENV = "env/";
@@ -43,7 +44,4 @@
void buildNaming(XmlObject specDD, XmlObject plan, Configuration localConfiguration, Configuration remoteConfiguration, Module module, Map componentContext) throws DeploymentException;
- QNameSet getSpecQNameSet();
-
- QNameSet getPlanQNameSet();
}
Modified: geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilderCollection.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilderCollection.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilderCollection.java (original)
+++ geronimo/server/trunk/modules/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilderCollection.java Thu Nov 16 14:14:54 2006
@@ -20,78 +20,23 @@
import java.util.Collection;
import java.util.Iterator;
-import java.util.Collections;
import java.util.Map;
import javax.xml.namespace.QName;
import org.apache.geronimo.common.DeploymentException;
-import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
-import org.apache.geronimo.gbean.ReferenceCollection;
-import org.apache.geronimo.gbean.ReferenceCollectionEvent;
-import org.apache.geronimo.gbean.ReferenceCollectionListener;
+import org.apache.geronimo.deployment.AbstractBuilderCollection;
import org.apache.geronimo.kernel.config.Configuration;
import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.xmlbeans.QNameSet;
import org.apache.xmlbeans.XmlObject;
/**
* @version $Rev$ $Date$
*/
-public class NamingBuilderCollection implements NamingBuilder {
-
- private final Collection builders;
- private final QName basePlanElementName;
- private QNameSet specQNames = QNameSet.EMPTY;
- private QNameSet planQNames = QNameSet.EMPTY;
+public class NamingBuilderCollection extends AbstractBuilderCollection implements NamingBuilder {
public NamingBuilderCollection(Collection builders, final QName basePlanElementName) {
- this.builders = builders == null ? Collections.EMPTY_SET : builders;
- this.basePlanElementName = basePlanElementName;
- if (builders instanceof ReferenceCollection) {
- ((ReferenceCollection) builders).addReferenceCollectionListener(new ReferenceCollectionListener() {
-
- public void memberAdded(ReferenceCollectionEvent event) {
- addBuilder(event.getMember());
- }
-
- public void memberRemoved(ReferenceCollectionEvent event) {
- Object builder = event.getMember();
- QNameSet builderSpecQNames = ((NamingBuilder) builder).getSpecQNameSet();
- specQNames = specQNames.intersect(builderSpecQNames.inverse());
- QNameSet builderPlanQNames = ((NamingBuilder) builder).getPlanQNameSet();
- planQNames = planQNames.intersect(builderPlanQNames.inverse());
- XmlBeansUtil.unregisterSubstitutionGroupElements(basePlanElementName, builderPlanQNames);
- }
- });
- }
- for (Iterator iterator = this.builders.iterator(); iterator.hasNext();) {
- Object builder = iterator.next();
- addBuilder(builder);
- }
- }
-
- private void addBuilder(Object builder) {
- QNameSet builderSpecQNames = ((NamingBuilder) builder).getSpecQNameSet();
- QNameSet builderPlanQNames = ((NamingBuilder) builder).getPlanQNameSet();
- if (builderSpecQNames == null) {
- throw new IllegalStateException("Builder " + builder + " is missing spec qnames");
- }
- if (builderPlanQNames == null) {
- throw new IllegalStateException("Builder " + builder + " is missing plan qnames");
- }
- if (!specQNames.isDisjoint(builderSpecQNames) && !planQNames.isDisjoint(builderPlanQNames)) {
- throw new IllegalArgumentException("Duplicate builderSpecQNames in builder set: " + builderSpecQNames + " and duplicate builderPlanQNames in builder set: " + builderPlanQNames);
- }
- try {
- specQNames = specQNames.union(builderSpecQNames);
- planQNames = planQNames.union(builderPlanQNames);
- } catch (NullPointerException e) {
- throw (IllegalArgumentException) new IllegalArgumentException("could not merge qnamesets for builder " + builder).initCause(e);
-
- }
- //really?
- XmlBeansUtil.registerSubstitutionGroupElements(basePlanElementName, builderPlanQNames);
+ super(builders, basePlanElementName);
}
public void buildEnvironment(XmlObject specDD, XmlObject plan, Environment environment) throws DeploymentException {
@@ -115,11 +60,4 @@
}
}
- public QNameSet getSpecQNameSet() {
- return specQNames;
- }
-
- public QNameSet getPlanQNameSet() {
- return null;
- }
}
Modified: geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java Thu Nov 16 14:14:54 2006
@@ -91,6 +91,7 @@
import org.apache.geronimo.xbeans.geronimo.web.jetty.JettyWebAppDocument;
import org.apache.geronimo.xbeans.geronimo.web.jetty.JettyWebAppType;
import org.apache.geronimo.xbeans.geronimo.web.jetty.config.GerJettyDocument;
+import org.apache.geronimo.xbeans.geronimo.j2ee.GerClusteringDocument;
import org.apache.geronimo.xbeans.j2ee.DispatcherType;
import org.apache.geronimo.xbeans.j2ee.ErrorPageType;
import org.apache.geronimo.xbeans.j2ee.FilterMappingType;
@@ -161,7 +162,7 @@
this.defaultFilterMappings = defaultFilterMappings;
this.pojoWebServiceTemplate = getGBeanData(kernel, pojoWebServiceTemplate);
this.webServiceBuilder = new SingleElementCollection(webServiceBuilder);
- this.clusteringBuilders = new NamespaceDrivenBuilderCollection(clusteringBuilders);
+ this.clusteringBuilders = new NamespaceDrivenBuilderCollection(clusteringBuilders, GerClusteringDocument.type.getDocumentElementName());
//todo locale mappings
@@ -198,6 +199,7 @@
specDD = DeploymentUtil.readAll(specDDUrl);
} catch (Exception e) {
//no web.xml, not for us
+ e.printStackTrace();
return null;
}
//we found web.xml, if it won't parse that's an error.
Modified: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java Thu Nov 16 14:14:54 2006
@@ -29,6 +29,7 @@
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.deployment.service.EnvironmentBuilder;
+import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
import org.apache.geronimo.gbean.AbstractName;
import org.apache.geronimo.gbean.AbstractNameQuery;
import org.apache.geronimo.j2ee.deployment.Module;
@@ -41,6 +42,7 @@
import org.apache.xmlbeans.QNameSet;
import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlException;
/**
* @version $Rev$ $Date$
@@ -92,7 +94,7 @@
return QNameSet.forSets(null, Collections.EMPTY_SET, Collections.EMPTY_SET, qnames);
}
- protected XmlObject[] convert(XmlObject[] xmlObjects, NamespaceElementConverter converter, SchemaType type) {
+ protected XmlObject[] convert(XmlObject[] xmlObjects, NamespaceElementConverter converter, SchemaType type) throws DeploymentException {
//bizarre ArrayStoreException if xmlObjects is loaded by the wrong classloader
XmlObject[] converted = new XmlObject[xmlObjects.length];
for (int i = 0; i < xmlObjects.length; i++) {
@@ -103,6 +105,11 @@
converted[i] = xmlObject.changeType(type);
} else {
converted[i] = xmlObject;
+ }
+ try {
+ XmlBeansUtil.validateDD(converted[i]);
+ } catch (XmlException e) {
+ throw new DeploymentException("Could not validate xmlObject of type " + type, e);
}
}
return converted;
Modified: geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/ResourceEnvironmentSetter.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/ResourceEnvironmentSetter.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/ResourceEnvironmentSetter.java (original)
+++ geronimo/server/trunk/modules/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/ResourceEnvironmentSetter.java Thu Nov 16 14:14:54 2006
@@ -22,12 +22,13 @@
import org.apache.xmlbeans.XmlObject;
import org.apache.geronimo.xbeans.geronimo.naming.GerResourceRefType;
+import org.apache.geronimo.common.DeploymentException;
/**
- * @version $Rev:$ $Date:$
+ * @version $Rev$ $Date$
*/
public interface ResourceEnvironmentSetter {
- void setResourceEnvironment(ResourceEnvironmentBuilder builder, XmlObject[] resourceRefs, GerResourceRefType[] gerResourceRefs);
+ void setResourceEnvironment(ResourceEnvironmentBuilder builder, XmlObject[] resourceRefs, GerResourceRefType[] gerResourceRefs) throws DeploymentException;
}
Modified: geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java Thu Nov 16 14:14:54 2006
@@ -165,9 +165,12 @@
}
}
- public String getNamespace() {
- XmlBeansUtil.registerSubstitutionGroupElements(ServiceDocument.type.getDocumentElementName(), QNameSet.singleton(PERSISTENCE_QNAME));
- return PERSISTENCE_QNAME.getNamespaceURI();
+ public QNameSet getSpecQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return QNameSet.singleton(PERSISTENCE_QNAME);
}
public static final GBeanInfo GBEAN_INFO;
Modified: geronimo/server/trunk/modules/geronimo-security-builder/src/main/java/org/apache/geronimo/security/deployment/GeronimoSecurityBuilderImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-security-builder/src/main/java/org/apache/geronimo/security/deployment/GeronimoSecurityBuilderImpl.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-security-builder/src/main/java/org/apache/geronimo/security/deployment/GeronimoSecurityBuilderImpl.java (original)
+++ geronimo/server/trunk/modules/geronimo-security-builder/src/main/java/org/apache/geronimo/security/deployment/GeronimoSecurityBuilderImpl.java Thu Nov 16 14:14:54 2006
@@ -30,6 +30,7 @@
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.QNameSet;
+import org.apache.xmlbeans.XmlException;
import org.apache.geronimo.deployment.DeploymentContext;
import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
import org.apache.geronimo.common.DeploymentException;
@@ -83,13 +84,18 @@
throw new DeploymentException("Unexpected count of security elements in geronimo plan " + items.length + " qnameset: " + SECURITY_QNAME_SET);
}
if (items.length == 1) {
- GerSecurityType securityType = (GerSecurityType) items[0].copy().changeType(GerSecurityType.type);
+ GerSecurityType securityType;
+ try {
+ securityType = (GerSecurityType) XmlBeansUtil.typedCopy(items[0], GerSecurityType.type);
+ } catch (XmlException e) {
+ throw new DeploymentException("Could not validate security element", e);
+ }
Security security = buildSecurityConfig(securityType);
ClassLoader classLoader = applicationContext.getClassLoader();
SecurityConfiguration securityConfiguration = buildSecurityConfiguration(security, classLoader);
earContext.setSecurityConfiguration(securityConfiguration);
}
- //add the JACC gbean if there is a principal-role mapping and we are on the corect module
+ //add the JACC gbean if there is a principal-role mapping and we are on the correct module
if (earContext.getSecurityConfiguration() != null && applicationContext == moduleContext) {
Naming naming = earContext.getNaming();
GBeanData roleMapperData = configureRoleMapper(naming, earContext.getModuleName(), earContext.getSecurityConfiguration());
@@ -109,12 +115,6 @@
}
}
- public String getNamespace() {
- XmlBeansUtil.registerSubstitutionGroupElements(org.apache.geronimo.xbeans.geronimo.j2ee.GerSecurityDocument.type.getDocumentElementName(), SECURITY_QNAME_SET);
-
- return GerSecurityDocument.type.getDocumentElementName().getLocalPart();
- }
-
private static SecurityConfiguration buildSecurityConfiguration(Security security, ClassLoader classLoader) {
Map roleDesignates = new HashMap();
Map principalRoleMap = new HashMap();
@@ -317,6 +317,14 @@
}
+ public QNameSet getSpecQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return SECURITY_QNAME_SET;
+ }
+
public static final GBeanInfo GBEAN_INFO;
static {
@@ -331,6 +339,5 @@
public static GBeanInfo getGBeanInfo() {
return GBEAN_INFO;
}
-
}
Modified: geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/GBeanBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/GBeanBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/GBeanBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/GBeanBuilder.java Thu Nov 16 14:14:54 2006
@@ -18,37 +18,35 @@
package org.apache.geronimo.deployment.service;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Collection;
import java.beans.PropertyEditorManager;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import javax.xml.namespace.QName;
-import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
+import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.deployment.DeploymentContext;
-import org.apache.geronimo.deployment.ConfigurationBuilder;
-import org.apache.geronimo.deployment.xbeans.GbeanType;
+import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
import org.apache.geronimo.deployment.xbeans.AttributeType;
-import org.apache.geronimo.deployment.xbeans.XmlAttributeType;
+import org.apache.geronimo.deployment.xbeans.GbeanDocument;
+import org.apache.geronimo.deployment.xbeans.GbeanType;
+import org.apache.geronimo.deployment.xbeans.PatternType;
import org.apache.geronimo.deployment.xbeans.ReferenceType;
import org.apache.geronimo.deployment.xbeans.ReferencesType;
-import org.apache.geronimo.deployment.xbeans.PatternType;
import org.apache.geronimo.deployment.xbeans.ServiceDocument;
-import org.apache.geronimo.deployment.xbeans.GbeanDocument;
+import org.apache.geronimo.deployment.xbeans.XmlAttributeType;
import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
-import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.gbean.AbstractName;
-import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanData;
-import org.apache.geronimo.gbean.ReferenceMap;
+import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.ReferenceMap;
import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
-import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.kernel.repository.Repository;
-import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.QNameSet;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlObject;
/**
* @version $Rev$ $Date$
@@ -56,7 +54,7 @@
public class GBeanBuilder implements NamespaceDrivenBuilder {
protected Map attrRefMap;
protected Map refRefMap;
- private static final QName SERVICE_QNAME = ServiceDocument.type.getDocumentElementName();
+ public static final QName SERVICE_QNAME = ServiceDocument.type.getDocumentElementName();
private static final QName GBEAN_QNAME = GbeanDocument.type.getDocumentElementName();
private static final QNameSet GBEAN_QNAME_SET = QNameSet.singleton(GBEAN_QNAME);
@@ -91,21 +89,17 @@
public void build(XmlObject container, DeploymentContext applicationContext, DeploymentContext moduleContext) throws DeploymentException {
XmlObject[] items = container.selectChildren(GBEAN_QNAME_SET);
- GbeanType[] gbeans = new GbeanType[items.length];
for (int i = 0; i < items.length; i++) {
- XmlObject any = items[i];
- gbeans[i] = (GbeanType) any.copy().changeType(GbeanType.type);
- }
- for (int i1 = 0; i1 < gbeans.length; i1++) {
- addGBeanData(gbeans[i1], moduleContext.getModuleName(), moduleContext.getClassLoader(), moduleContext);
+ GbeanType gbean;
+ try {
+ gbean = (GbeanType) XmlBeansUtil.typedCopy(items[i], GbeanType.type);
+ } catch (XmlException e) {
+ throw new DeploymentException("Could not validate gbean xml", e);
+ }
+ addGBeanData(gbean, moduleContext.getModuleName(), moduleContext.getClassLoader(), moduleContext);
}
}
- public String getNamespace() {
- XmlBeansUtil.registerSubstitutionGroupElements(SERVICE_QNAME, QNameSet.singleton(GBEAN_QNAME));
- return GBEAN_QNAME.getLocalPart();
- }
-
private AbstractName addGBeanData(GbeanType gbean, AbstractName moduleName, ClassLoader cl, DeploymentContext context) throws DeploymentException {
GBeanInfo gBeanInfo = GBeanInfo.getGBeanInfo(gbean.getClass1(), cl);
String namePart = gbean.getName();
@@ -178,6 +172,14 @@
throw new DeploymentException(e);
}
return abstractName;
+ }
+
+ public QNameSet getSpecQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return GBEAN_QNAME_SET;
}
public static final GBeanInfo GBEAN_INFO;
Modified: geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java Thu Nov 16 14:14:54 2006
@@ -94,7 +94,7 @@
this.defaultEnvironment = defaultEnvironment;
this.repositories = repositories;
- this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders);
+ this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders, GBeanBuilder.SERVICE_QNAME);
}
public Object getDeploymentPlan(File planFile, JarFile jarFile, ModuleIDBuilder idBuilder) throws DeploymentException {
Modified: geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java?view=diff&rev=475947&r1=475946&r2=475947
==============================================================================
--- geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java Thu Nov 16 14:14:54 2006
@@ -50,6 +50,7 @@
import org.apache.geronimo.deployment.util.DeploymentUtil;
import org.apache.geronimo.deployment.ModuleIDBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
+import org.apache.geronimo.deployment.service.GBeanBuilder;
import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
import org.apache.geronimo.deployment.xbeans.ServiceDocument;
import org.apache.geronimo.gbean.AbstractName;
@@ -120,8 +121,8 @@
protected AbstractWebModuleBuilder(Kernel kernel, Collection securityBuilders, Collection serviceBuilders, NamingBuilder namingBuilders, ResourceEnvironmentSetter resourceEnvironmentSetter) {
this.kernel = kernel;
- this.securityBuilders = new NamespaceDrivenBuilderCollection(securityBuilders);
- this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders);
+ this.securityBuilders = new NamespaceDrivenBuilderCollection(securityBuilders, GerSecurityDocument.type.getDocumentElementName());
+ this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders, GBeanBuilder.SERVICE_QNAME);
this.namingBuilders = namingBuilders;
this.resourceEnvironmentSetter = resourceEnvironmentSetter;
}