cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nikita Timofeev <ntimof...@objectstyle.com>
Subject Re: Cayenne 4.1M1-snapshot upgrade experience
Date Thu, 14 Sep 2017 09:22:15 GMT
Ok, I think I found what is it :) See this task [1], if you don't want
to directly inject MergerTokenFactory you can use
MergerTokenFactoryProvider in your code like this (note that you will
need DbAdapter object):

@Inject
MergerTokenFactoryProvider factoryProvider;
// ...
MergerTokenFactory factory = factoryProvider.get(adapter);

[1] https://issues.apache.org/jira/browse/CAY-2116

On Wed, Sep 13, 2017 at 5:13 PM, John Huss <johnthuss@gmail.com> wrote:
> On Wed, Sep 13, 2017 at 3:27 AM Nikita Timofeev <ntimofeev@objectstyle.com>
> wrote:
>
>> Hi John,
>>
>> Where exactly do you see this detection failure, is it Modeler DB
>> migration tool?
>>
>
> This is in tomcat after the ServerRuntime is created from the builder.
> Here's a minimal example:
>
> ServerRuntime runtime = ServerRuntime.builder()
>
> .addConfigs("cayenne-MyProject.xml").build();
>
>
> MergerTokenFactory factory = runtime
> .getInjector().getInstance(MergerTokenFactory.class);
>
> assert factory instanceof MySQLMergerTokenFactory;
>
>
>
>> And how do you define your data source (via AutoAdapter or MySQLAdapter)?
>>
>
> I have custom DataSourceFactory specified in the cayenne project, but no
> override of the adapter (for MySQL), so it is using AutoAdapter.
>
>
>>
>> On Tue, Sep 12, 2017 at 11:45 PM, John Huss <johnthuss@gmail.com> wrote:
>> > Also, the correct MergerTokenFactory for my DbAdapter is not longer
>> > automatically detected (both for Postgres and MySQL).  I had to add this
>> to
>> > my ServerRuntime module to fix it.
>> >
>> >
>> binder.bind(MergerTokenFactory.class).to(PostgresMergerTokenFactory.class);
>> >
>> >
>> > On Thu, Aug 17, 2017 at 9:21 AM John Huss <johnthuss@gmail.com> wrote:
>> >
>> >> I just got done upgrading several projects to use the latest from
>> >> master. I am very excited about the memory usage improvements in this
>> >> version.
>> >>
>> >> I wanted to relay my experience along with some of the problems I had in
>> >> case it would be helpful to others or allow this process to be smoothed
>> >> out.  We were previously on a version of master from about two years
>> back.
>> >> I think most of these issues are fairly recent however.
>> >>
>> >> - Can't build without running the tests (mvn clean install
>> >> -Dmaven.test.skip=true) at least once successfully due to missing maven
>> >> dependency for cayenne.project (which is the second thing built). I
>> don't
>> >> know why this depends on the tests.
>> >>
>> >> - Can't successfully run tests without a newer Java 1.8 SDK. I had a JDK
>> >> 1.8.0 from 2014 (the first release?) that didn't work (mockito errors).
>> >> Upgrading to the newest JDK fixed the problem.
>> >>
>> >> - new ServerRuntime(...) no longer works because my custom DbAdapter
>> >> subclass would not get the new ValueObjectTypeRegistry parameter
>> injected
>> >> automatically. Switching to ServerRuntime.builder() fixed the problem.
>> >>
>> >> - CayenneFilter chooses a different name for the DataDomain when you
>> load
>> >> multiple projects now (is the name the constant "cayenne"?). I use this
>> >> name in a lot of places to set DB connection information so I don't
>> want to
>> >> change it. Unfortunately CayenneFilter does not provide a way to
>> override
>> >> the DataDomain's name, so I had to just stop using CayenneFilter. Using
>> >> runtime.getDataDomain.setName("abc") doesn't work because the DB has
>> >> already been connected to at that point. CayenneFilter should take an
>> >> init-param to set the name instead.
>> >>
>> >> - Cayenne project .xml files need to be upgraded by running the Modeler
>> >> and re-saving them first.
>> >>
>> >> - I had previously set the PK attribute's generation method to Generated
>> >> for me (using Postgres). Since Postgres didn't used to support this with
>> >> Cayenne, this used to fall back to the default behavior
>> >> "Cayenne-generated". Now that this IS supported everything fails since
>> my
>> >> database isn't set up to do this yet. I switched these back to the
>> default
>> >> "Cayenne-generated" method of generating PKs. Not a Cayenne problem, but
>> >> something to be aware of.
>> >>
>> >> - The SQL logger's name has changed from CommonsJdbcEventLogger to just
>> >> JdbcEventLogger, so I had to update places where I was changing the
>> logging
>> >> level (mostly in properties files).
>> >>
>> >> John
>> >>
>> >>
>> >>
>> >>
>>
>>
>>
>> --
>> Best regards,
>> Nikita Timofeev
>>



-- 
Best regards,
Nikita Timofeev

Mime
View raw message