[ 
https://issues.apache.org/jira/browse/CXF-621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12493149
 ] 

Steven E. Harris commented on CXF-621:
--------------------------------------

I've tried compiling parts of CXF, but I keep on running into errors like the 
following, which I think are due to missing repository/pluginRepository 
specifications in the POMs:

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).


Project ID: org.apache.cxf:cxf-common-xsd

Reason: POM 'org.apache.cxf:cxf-common-xsd' not found in repository: Unable to d
ownload the artifact from any repository

  org.apache.cxf:cxf-common-xsd:pom:2.0-incubator-SNAPSHOT

from the specified remote repositories:
  central (http://repo1.maven.org/maven2)


> org.apache.cxf.bus.spring.BusApplicationContext constructor does not respect 
> "include defaults" flag

> ------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-621
>                 URL: https://issues.apache.org/jira/browse/CXF-621
>             Project: CXF
>          Issue Type: Bug
>          Components: Bus
>    Affects Versions: 2.0-RC
>         Environment: NA
>            Reporter: Steven E. Harris
>         Assigned To: willem Jiang
>             Fix For: 2.0
>
>         Attachments: bus_fixes.patch, bus_fixes_post_cs.patch
>
>
> BusApplicationContext's constructors accept a boolean argument "include" to 
> indicate whether it should try to load the default configuration files 
> discovered on the class path. The problem comes from poor interaction among 
> initialization of a member variable (includeDefaults) and the overridden 
> method getConfigResources().
> Two of the constructors have similar form:
>     public BusApplicationContext(String cf, boolean include, 
> ApplicationContext parent) {
>         super((String[])null, parent);
>         cfgFile = cf;
>         includeDefaults = include;
>     }
> Note that "includeDefaults" is not initialized until the base class 
> constructor returns. However, as part of the base constructor chain, 
> ClassPathXmlApplicationContext calls refresh(), which triggers a long call 
> chain that results in getConfigResources() being called.
> BusApplicationContext overrides getConfigResources(). One of the first things 
> it does is reads its "includeDefaults" flag -- but at this point the flag has 
> not been initialized by the constructor, so it defaults to false. Therefore, 
> no matter what the value of the "include" parameter to the 
> BusApplicationContext constructor, only a false value gets used during 
> construction.
> Unfortunately, there's no way to do anything such as initializing member 
> variables before calling the superclass's constructor. Therefore, the fix is 
> to call on a different ClassPathXmlApplicationContext constructor -- the one 
> that takes a boolean flag indicating whether to refresh() immediately. We can 
> pass false, initialize our member variables, then call refresh() explicitly:
>     public BusApplicationContext(String cf, boolean include, 
> ApplicationContext parent) {
>         super((String[])null, false, parent);
>         cfgFile = cf;
>         includeDefaults = include;
>         refresh();
>     }
> I haven't tested this code, but it looks like it should fix the problem.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to