geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: How do I get the configID from deploymentPlan?
Date Wed, 04 Oct 2006 16:53:00 GMT

On Oct 4, 2006, at 8:43 AM, Sachin Patel wrote:

> I must be overlooking something but I'm having trouble using  
> XMLBeans to get to the EnvironmentType for a given deployment plan.
>
> If I have...
>
> XmlObject xmlObject = XmlBeansUtil.parse(planFile.getLocation 
> ().toFile());
>
> from there if I cast to a particular DocumentType (WebAppDocument,  
> etc..) there are no methods to get me to the EnvioronmentType..
>
> So I looked at the o.a.g.deployment.Deployer and in there... and  
> what got me even more confused was the following code...  There are  
> only two implementations of ConfigurationBuilder,  
> (ServiceConfigBuilder and EARConfigBuilder), so how is the configID  
> being retrieved? Where is the getConfigurationID implementation for  
> the other plan types?
>
>
> Object plan = null;
>            ConfigurationBuilder builder = null;
>             for (Iterator i = builders.iterator(); i.hasNext();) {
>                 ConfigurationBuilder candidate =  
> (ConfigurationBuilder) i.next();
>                 System.out.println("***********" +  
> candidate.getClass().getName());
>                 plan = candidate.getDeploymentPlan(planFile,  
> module, idBuilder);
>                 if (plan != null) {
>                     builder = candidate;
>                     break;
>                 }
>             }
>             if (builder == null) {
>                 throw new DeploymentException("Cannot deploy the  
> requested application module because no deployer is able to handle  
> it. " +
>                         " This can happen if you have omitted the  
> J2EE deployment descriptor, disabled a deployer module, or if, for  
> example, you are trying to deploy an" +
>                         " EJB module on a minimal Geronimo server  
> that does not have EJB support installed.  (" +
>                         (planFile == null ? "" : "planFile=" +  
> planFile.getAbsolutePath()) +
>                         (moduleFile == null ? "" : (planFile ==  
> null ? "" : ", ") + "moduleFile=" + moduleFile.getAbsolutePath()) +  
> ")");
>             }
>
>             Artifact configID = builder.getConfigurationID(plan,  
> module, idBuilder);
>
> Thanks

That code's from Deployer which doesn't know anything about xml or  
plans or anything like that.  All the ConfigBuilders and  
ModuleBuilders have code that extracts the Enviroment element,  
typicaly like

         EnvironmentType environmentType = gerConnector.getEnvironment 
();
         Environment environment = EnvironmentBuilder.buildEnvironment 
(environmentType, defaultEnvironment);


However you may find it easier to do something more generic like
QNameSet ENV_QNAMESET =  
EnvironementDocument.type.getDocumentElementQName();

....

XmlObject untypedEnv = plan.selectChildren(ENV_QNAMESET);
EnvironmentType env = (EnvironmentType)untypedEnv.changeType 
(EnvironmentType.type);

Sometimes it's hard to convince xmlbeans to change the type  
correctly, you get null out of changeType.  In that case I use

env = (EnvironemntType)untypedEnv.copy().changeTYpe 
(EnvironmentTYpe.type);

but then changes you make to env won't be reflected in the original  
XmlObject or written back into the xml if you save.  It's possible to  
get around this.... but if changeType works without copying do that.

thanks
david jencks

>
> -sachin
>
>


Mime
View raw message