Ok, was away for a while. I have walked through the tutorial with a fresh
Spring modular project and a single POJO and the error still occurs.
Summarizing: the problem is that the generated Controller files in the web
directory:
1. are placed in the wrong package: nl.msw.test.core.webapp.controller in
stead of nl.msw.test.webapp.controller (the package reference in the
java-file itself is correct)
2. the reference to the POJO is nl.msw.test.model.Country in stead of
nl.msw.test.core.model.Country

The steps I took to reproduce this are:
1. D:\Java\Projects\test\web>mvn archetype:create
-DarchetypeGroupId=org.appfuse.ar
chetypes -DarchetypeArtifactId=appfuse-modular-spring
-DremoteRepositories=http:
//static.appfuse.org/releases -DarchetypeVersion=2.0 -DgroupId=nl.msw.test
-Dart
ifactId=test
2. cd test
3. mvn
4. cd core
5. mvn install eclipse:eclipse
6. cd ../web
7. mvn install eclipse:eclipse
8. create POJO in nl.msw.test.core.model.Country

+++++++++
package nl.msw.test.core.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.appfuse.model.BaseObject;

@Entity
@Table(name="Countries")

public class Country extends BaseObject {

        private Long countryId;
        private String country, countryCode;

        @Column
        public String getCountry() {
                return country;
        }

        public void setCountry(String country) {
                this.country = country;
        }

        @Column
        public String getCountryCode() {
                return countryCode;
        }

        public void setCountryCode(String countryCode) {
                this.countryCode = countryCode;
        }

        @Id 
        @GeneratedValue(strategy = GenerationType.AUTO)
        public Long getCountryId() {
                return countryId;
        }

        public void setCountryId(Long id) {
                this.countryId = id;
        }


        @Override
        public boolean equals(Object arg0) {
                // TODO Auto-generated method stub
                return false;
        }

        @Override
        public int hashCode() {
                // TODO Auto-generated method stub
                return 0;
        }

        @Override
        public String toString() {
                // TODO Auto-generated method stub
                return null;
        }

}

+++++++++

9. added reference in hibernate.cfg.xml <mapping
class="nl.msw.test.core.model.Country"/>
10. Added entries in applicationContext.xml
        <bean id="sessionFactory"
                
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                <property name="configLocation">
                        <value>classpath:hibernate.cfg.xml</value>
                </property>
                <property name="hibernateProperties">
                        <ref bean="hibernateProperties" />
                </property>
                <property name="dataSource">
                        <ref bean="MyDataSource" />
                </property>
                <property name="configurationClass">
                        <value>org.hibernate.cfg.AnnotationConfiguration</value>
                </property>
        </bean>

        <bean id="hibernateProperties"
                
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
                <property name="properties">
                        <props>
                                <prop key="hibernate.hbm2ddl.auto">update</prop>
                                <prop key="hibernate.dialect">
                                        org.hibernate.dialect.MySQLDialect
                                </prop>
                                <prop key="hibernate.show_sql">true</prop>
                                <prop key="hibernate.c3p0.minPoolSize">5</prop>
                                <prop key="hibernate.c3p0.maxPoolSize">20</prop>
                                <prop key="hibernate.c3p0.timeout">600</prop>
                                <prop 
key="hibernate.c3p0.max_statement">50</prop>
                                <prop 
key="hibernate.c3p0.testConnectionOnCheckout">
                                        false
                                </prop>
                        </props>
                </property>
        </bean>

        <bean id="propertyConfigurer"
        
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                <property name="locations">
                        <list>
                                <value>classpath:jdbc.properties</value>
                                <value>classpath:mail.properties</value>
                        </list>
                </property>
        </bean>

        <bean id="MyDataSource"
                
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                <property name="driverClassName"
                        value="${jdbc.driverClassName}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
        </bean>

        <bean id="hibernateTemplate"
                class="org.springframework.orm.hibernate3.HibernateTemplate">
                <property name="sessionFactory">
                        <ref bean="sessionFactory" />
                </property>
        </bean>

        <bean id="hibernateInterceptor"
                class="org.springframework.orm.hibernate3.HibernateInterceptor">
                <property name="sessionFactory">
                        <ref bean="sessionFactory" />
                </property>
        </bean>
11. mvn test-compile hibernate3:hbm2ddl
11. in core: mvn appfuse:gen
12. in core: mvn appfuse:install
13. in root: mvn install
14. in web: mvn appfuse:gen
15 in web: mvn appfuse:install => ERROR because of erronous references in
controller files

This is the resulting CountryController.java file in the
nl.msw.test.core.webapp.controller directory
++++++++
package nl.msw.test.webapp.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.appfuse.service.GenericManager;
import nl.msw.test.model.Country;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class CountryController implements Controller {
    private GenericManager<Country, Long> countryManager;

    public void setCountryManager(GenericManager<Country, Long>
countryManager) {
        this.countryManager = countryManager;
    }

    public ModelAndView handleRequest(HttpServletRequest request,
                                      HttpServletResponse response)
    throws Exception {
        return new ModelAndView().addObject(countryManager.getAll());
    }
}
++++++++++

Can you confirm if this is a bug or a mistake on my part?

Another thing I found was that when you use mvn apfuse:remove on an entity
it actually also removes the POJO file in addition to all the entries in the
various configuration files. I find this undesirable behaviour.

Kind regards,

Marc




mraible wrote:
> 
> On 10/29/07, mschipperheyn <[EMAIL PROTECTED]> wrote:
>>
>> This issue is actually more cumbersome than I thought b/c it affects
>> stuff in
>> different directories and requires me to fix for each POJO before I run
>> mvn
>> appfuse:gen again. It does look like a 'real' issue. My setup is prety
>> vanilla.
>>
>> So, summarizing:
>> Running appfuse:gen from the web dir I get:
>> * package path: xyz/core/model/<subdir if any>/webapp/controller
> 
> I don't understand the problem here - where are core/model coming
> from? They shouldn't be there, nor should there be a <subdir>. I'm
> guessing this might be caused by using the fully-qualified class name
> instead of the simple name.
> 
>> * package name within controller file xyz.webapp.controller
>> * package name within controllerForm file xyz.webapp.controller
>> * Error message in validation.xml: there should not be a form entry when
>> there are no child field entries
> 
> Yes, it's possible this is a bug - we recommend adding at least one
> not-null constraint to your POJO to fix it.
> 
> Matt
> 
>>
>> Cheers,
>>
>> Marc
>>
>> Hope to see a response on this.
>>
>> Cheers,
>>
>> Marc
>>
>>
>> mschipperheyn wrote:
>> >
>> > One more thing I'm noticing is the following error, may or may not have
>> > something to do with me:
>> > After running mvn instal in the root, then mvn appfuse:gen on Barrio, I
>> > get this issue:
>> > The created package is xyz.core.webapp.controller which should be
>> > xyz.webapp.controller which is also the package name within the java
>> file.
>> >
>> > Not sure if it's something to do with me or with appfuse.
>> >
>> > Cheers,
>> >
>> > Marc
>> >
>> >
>> > mschipperheyn wrote:
>> >>
>> >> I ran mvn install on the cor dir and from the web dir (following the
>> >> docs), not the top level. I'm trying that now. Yeh, some things are
>> >> starting to work. Ok, so you need to run mvn install at the root dir
>> and
>> >> then do mvn appfuse:gen on the web dir. Ok, got some errors running
>> mvn
>> >> install in web dir after that, but that's prob something I did wrong.
>> >> Thanks, Moving forward!
>> >>
>> >> You might want to update the documentation
>> >> In a modular project, these commands must be run in the "core" and
>> "web"
>> >> modules. The plugin is smart enough to figure out when it
>> should/should
>> >> not generate stuff based on the packaging type (jar vs. war). If you
>> want
>> >> to generate specific code in a "war" project, you can use gen-core or
>> >> gen-web.
>> >>
>> >> Should be
>> >> n a modular project, you should run these commands in the core dir
>> first,
>> >> then run mvn install in the root of the project dir and then run these
>> >> commands again in the web dir. The plugin is smart enough to figure
>> out
>> >> when it should/should not generate stuff based on the packaging type
>> (jar
>> >> vs. war). If you want to generate specific code in a "war" project,
>> you
>> >> can use gen-core or gen-web.
>> >>
>> >> Maybe I should have figured it all out by myself, but with all this
>> >> generation going on, it's just very hard to see why things don't work
>> >> sometimes.
>> >>
>> >> Thanks again,
>> >>
>> >> Marc
>> >>
>> >>
>> >> Mike Horwitz wrote:
>> >>>
>> >>> Have you run mvn:install either from the top level or in your core
>> >>> project?
>> >>>
>> >>> Mike
>> >>>
>> >>> On 10/29/07, mschipperheyn <[EMAIL PROTECTED]> wrote:
>> >>>>
>> >>>>
>> >>>> Ok, noted some small issues:
>> >>>> 1. the sample data doesn't take into account column lenght. If you
>> have
>> >>>> a
>> >>>> column length of say 5, it will fail on mvn install
>> >>>> 2. the sample data doesn't take references into account, you should
>> gen
>> >>>> the
>> >>>> referenced POJOs first and then the POJOs with references to them.
>> >>>>
>> >>>> But that's all easily fixable by hand. Would be nice to be able to
>> just
>> >>>> enter a list of POJOs and have mvn figure out the order and all
>> that.
>> >>>> But
>> >>>> now back to the problem
>> >>>>
>> >>>> So I now have my sample data set up. Done all the gens and installs.
>> >>>> Still got that error running the same commands in the web dir.
>> >>>>
>> >>>> [INFO]
>> >>>>
>> ------------------------------------------------------------------------
>> >>>> [ERROR] FATAL ERROR
>> >>>> [INFO]
>> >>>>
>> ------------------------------------------------------------------------
>> >>>> [INFO] Unable to load class declared as <mapping
>> >>>> class="nl.msw.compraventa.core.
>> >>>> model.Archive"/> in the configuration:
>> >>>> [INFO]
>> >>>>
>> ------------------------------------------------------------------------
>> >>>> [INFO] Trace
>> >>>> org.hibernate.MappingException: Unable to load class declared as
>> >>>> <mapping
>> >>>> class=
>> >>>> "nl.msw.compraventa.core.model.Archive"/> in the configuration:
>> >>>>
>> >>>> Cheers,
>> >>>>
>> >>>> Marc
>> >>>>
>> >>>>
>> >>>> mschipperheyn wrote:
>> >>>> >
>> >>>> > Right, ok. Hmm, getting a
>> >>>> > Caused by: org.dbunit.DatabaseUnitException:
>> >>>> > com.mysql.jdbc.exceptions.MySQLInte
>> >>>> > grityConstraintViolationException: Cannot add or update a child
>> row:
>> >>>> a
>> >>>> > foreign k
>> >>>> > ey constraint fails (`compraventa/barrios`, CONSTRAINT
>> >>>> > `FK4F5D3CCEB9857FF2` FORE
>> >>>> > IGN KEY (`FK_CityId`) REFERENCES `cities` (`cityId`))
>> >>>> >
>> >>>> > That's prob caused by the sample data -1 being inserted while
>> there
>> >>>> isn't
>> >>>> > a City created yet. I'll try to appfuse:gen all those POJOs first
>> to
>> >>>> have
>> >>>> > some coherent sample data.
>> >>>> >
>> >>>> > Cheers,
>> >>>> >
>> >>>> > Marc
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > mraible wrote:
>> >>>> >>
>> >>>> >> In the core directory, you should run "mvn install", not "mvn
>> >>>> >> appfuse:install".
>> >>>> >>
>> >>>> >> Matt
>> >>>> >>
>> >>>> >> On 10/29/07, mschipperheyn <[EMAIL PROTECTED]> wrote:
>> >>>> >>>
>> >>>> >>> Yes, completed without fail. However, I dont see any code
>> generated
>> >>>> in
>> >>>> >>> the
>> >>>> >>> core dir (I guess dont need that with universal stuff). Did see
>> the
>> >>>> >>> entries
>> >>>> >>> in applicationContext.xml added.
>> >>>> >>>
>> >>>> >>> Marc
>> >>>> >>>
>> >>>> >>> D:\Java\Projects\CompraVenta\core>mvn appfuse:gen
>> >>>> >>> [INFO] Scanning for projects...
>> >>>> >>> [INFO] Searching repository for plugin with prefix: 'appfuse'.
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> -------------------------------------------------------------------------
>> >>>> >>> ---
>> >>>> >>> [INFO] Building AppFuse Modular Application - Core
>> >>>> >>> [INFO]    task-segment: [appfuse:gen]
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> -------------------------------------------------------------------------
>> >>>> >>> ---
>> >>>> >>> [INFO] Preparing appfuse:gen
>> >>>> >>> [INFO] [aspectj:compile {execution: default}]
>> >>>> >>> [INFO] [resources:resources]
>> >>>> >>> [INFO] Using default encoding to copy filtered resources.
>> >>>> >>> [INFO] [compiler:compile]
>> >>>> >>> [INFO] Nothing to compile - all classes are up to date
>> >>>> >>> [WARNING] POM for 'org.hibernate:jtidy:pom:r8-20060801:runtime'
>> is
>> >>>> >>> invalid.
>> >>>> >>> It w
>> >>>> >>> ill be ignored for artifact resolution. Reason: Parse error
>> reading
>> >>>> POM.
>> >>>> >>> Reason:
>> >>>> >>>  TEXT must be immediately followed by END_TAG and not START_TAG
>> >>>> >>> (position:
>> >>>> >>> START
>> >>>> >>> _TAG seen ...<licenses>\n\t\t\t<license>... @12:13)
>> >>>> >>> [INFO] [appfuse:gen]
>> >>>> >>> What is the name of your pojo (i.e. Person)?: Barrio
>> >>>> >>> [INFO] Configuration XML file loaded:
>> >>>> >>> D:\Java\Projects\CompraVenta\core\src\main
>> >>>> >>> \resources\hibernate.cfg.xml
>> >>>> >>> [INFO] Configuration XML file loaded:
>> >>>> >>> D:\Java\Projects\CompraVenta\core\src\main
>> >>>> >>> \resources\hibernate.cfg.xml
>> >>>> >>> [INFO] src/main/resources/database.properties not found within
>> the
>> >>>> >>> project.
>> >>>> >>> Tryi
>> >>>> >>> ng absolute path.
>> >>>> >>> [INFO] No hibernate properties file loaded.
>> >>>> >>> [info] [AppFuse] Installing generated files (pattern:
>> **/*.java)...
>> >>>> >>> [info] [AppFuse] Installing sample data for DbUnit...
>> >>>> >>> [info] [AppFuse] Installing Spring bean definitions...
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> ------------------------------------------------------------------------
>> >>>> >>> [INFO] BUILD SUCCESSFUL
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> ------------------------------------------------------------------------
>> >>>> >>> [INFO] Total time: 7 seconds
>> >>>> >>> [INFO] Finished at: Mon Oct 29 17:09:08 CET 2007
>> >>>> >>> [INFO] Final Memory: 13M/23M
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> ------------------------------------------------------------------------
>> >>>> >>>
>> >>>> >>> D:\Java\Projects\CompraVenta\core>mvn appfuse:install
>> >>>> >>> [INFO] Scanning for projects...
>> >>>> >>> [INFO] Searching repository for plugin with prefix: 'appfuse'.
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> -------------------------------------------------------------------------
>> >>>> >>> ---
>> >>>> >>> [INFO] Building AppFuse Modular Application - Core
>> >>>> >>> [INFO]    task-segment: [appfuse:install]
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> -------------------------------------------------------------------------
>> >>>> >>> ---
>> >>>> >>> [INFO] Preparing appfuse:install
>> >>>> >>> [INFO] [aspectj:compile {execution: default}]
>> >>>> >>> [INFO] [resources:resources]
>> >>>> >>> [INFO] Using default encoding to copy filtered resources.
>> >>>> >>> [INFO] [compiler:compile]
>> >>>> >>> [INFO] Nothing to compile - all classes are up to date
>> >>>> >>> [WARNING] POM for 'org.hibernate:jtidy:pom:r8-20060801:runtime'
>> is
>> >>>> >>> invalid.
>> >>>> >>> It w
>> >>>> >>> ill be ignored for artifact resolution. Reason: Parse error
>> reading
>> >>>> POM.
>> >>>> >>> Reason:
>> >>>> >>>  TEXT must be immediately followed by END_TAG and not START_TAG
>> >>>> >>> (position:
>> >>>> >>> START
>> >>>> >>> _TAG seen ...<licenses>\n\t\t\t<license>... @12:13)
>> >>>> >>> [INFO] [appfuse:install]
>> >>>> >>> What is the name of your pojo (i.e. Person)?: Barrio
>> >>>> >>> [info] [AppFuse] Installing generated files (pattern:
>> **/*.java)...
>> >>>> >>> [info] [AppFuse] Installing sample data for DbUnit...
>> >>>> >>> [info] [AppFuse] Installing Spring bean definitions...
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> ------------------------------------------------------------------------
>> >>>> >>> [INFO] BUILD SUCCESSFUL
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> ------------------------------------------------------------------------
>> >>>> >>> [INFO] Total time: 5 seconds
>> >>>> >>> [INFO] Finished at: Mon Oct 29 17:09:27 CET 2007
>> >>>> >>> [INFO] Final Memory: 11M/23M
>> >>>> >>> [INFO]
>> >>>> >>>
>> >>>>
>> ------------------------------------------------------------------------
>> >>>> >>> --
>> >>>> >>> View this message in context:
>> >>>> >>>
>> >>>>
>> http://www.nabble.com/app%3Agen--Unable-to-load-class-declared-as-mapping-class%3D%22xyz%22-in-the-configuration-tf4700458s2369.html#a13471891
>> >>>> >>> Sent from the AppFuse - User mailing list archive at Nabble.com.
>> >>>> >>>
>> >>>> >>>
>> >>>>
>> ---------------------------------------------------------------------
>> >>>> >>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >>>> >>> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>>> >>>
>> >>>> >>>
>> >>>> >>
>> >>>> >>
>> >>>> >> --
>> >>>> >> http://raibledesigns.com
>> >>>> >>
>> >>>> >>
>> >>>>
>> ---------------------------------------------------------------------
>> >>>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >>>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>>> >>
>> >>>> >>
>> >>>> >>
>> >>>> >
>> >>>> >
>> >>>>
>> >>>> --
>> >>>> View this message in context:
>> >>>>
>> http://www.nabble.com/app%3Agen--Unable-to-load-class-declared-as-mapping-class%3D%22xyz%22-in-the-configuration-tf4700458s2369.html#a13474215
>> >>>> Sent from the AppFuse - User mailing list archive at Nabble.com.
>> >>>>
>> >>>>
>> ---------------------------------------------------------------------
>> >>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >>>> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>>>
>> >>>>
>> >>>
>> >>>
>> >>
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/app%3Agen--Unable-to-load-class-declared-as-mapping-class%3D%22xyz%22-in-the-configuration-tf4700458s2369.html#a13475799
>> Sent from the AppFuse - User mailing list archive at Nabble.com.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 
> 
> -- 
> http://raibledesigns.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/app%3Agen--Unable-to-load-class-declared-as-mapping-class%3D%22xyz%22-in-the-configuration-tf4700458s2369.html#a13594217
Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to