dev@glassfish.java.net

[Fwd: persistence Digest 7 Nov 2005 15:14:08 -0000 Issue 12]

From: Carla Mott <Carla.Mott_at_Sun.COM>
Date: Mon, 07 Nov 2005 14:55:34 -0800

-- 
Carla Mott
Sun Microsystems		
carla.mott_at_sun.com

attached mail follows:



MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT


persistence Digest 7 Nov 2005 15:14:08 -0000 Issue 12

Topics (messages 71 through 73):

Re: One-to-Many bug
        71 by: Sanjeeb Kumar Sahoo
        72 by: Sanjeeb Kumar Sahoo

Re: Parallel Expression Builders
        73 by: Michael Bouschen

Administrivia:

To subscribe to the digest, e-mail:
        persistence-digest-subscribe_at_glassfish.dev.java.net

To unsubscribe from the digest, e-mail:
        persistence-digest-unsubscribe_at_glassfish.dev.java.net

To post to the list, e-mail:
        persistence_at_glassfish.dev.java.net


----------------------------------------------------------------------


MIME-version: 1.0
Content-type: message/rfc822

Date: Mon, 07 Nov 2005 19:02:53 +0530
From: Sanjeeb Kumar Sahoo <Sanjeeb.Sahoo_at_Sun.COM>
Subject: Re: One-to-Many bug
To: persistence_at_glassfish.dev.java.net
Cc: Shelly.McGowan_at_Sun.COM, Kenneth Saks <Kenneth.Saks_at_Sun.COM>,
 Deepa Singh <Deepa.Singh_at_Sun.COM>, Marina Vatkina <Marina.Vatkina_at_Sun.COM>,
 "ejb3-toplink_ww_at_oracle.com" <ejb3-toplink_ww_at_oracle.com>
Message-id: <436F5785.4000005_at_Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii; format=flowed
Content-transfer-encoding: 7BIT

Hi Tom/Chris,
I have figured out what is causing that failure. TopLink Essentials
calls PersistenceUnitInfo.getTempClassLoader() twice:

public EntityManagerFactory
createContainerEntityManagerFactory(PersistenceUnitInfo info){
EntityManagerSetupImpl emSetupImpl = new EntityManagerSetupImpl();
Collection entities = buildEntityList(info, info.getTempClassLoader());
ClassFileTransformer transformer = emSetupImpl.predeploy(entities,
info.getTempClassLoader(), info);
...
}

When I changed the above TopLink file to call getTempClassLoader() only
once, that validation exception went away. Looks like the contract for
getTempClassLoader() needs to be well defined.

Our container creates a new ClassLoader for each invocation of
getTempClassLoader. This is fine as far as the contract defined in the
javadocs of that API:
/**
* Return a ClassLoader that the provider may use to temporarily load any
* classes, resources, or open URLs. The scope and classpath of this loader
* is exactly the same as that of the loader returned by
* PersistenceInfo.getClassLoader. None of the classes loaded by this class
* loader will be visible to application components.
*
* @return Temporary ClassLoader with same visibility as current loader
*/
public ClassLoader getTempClassLoader();


See the above javadocs is silent about what should happen for multiple
invocations. Where as the earlier javadocs for
InstrumentableClassLoader's copy() method used to say the following:

/**
* Create and return a temporary loader with the same visibility
* as this loader. The temporary loader may be used to load
* resources or any other application classes for the purposes of
* introspecting them for annotations. The persistence provider
* should not maintain any references to the temporary loader,
* or any objects loaded by it.
*
* @return A temporary classloader with the same classpath as this loader
*/
public ClassLoader copy();

The earlier one at least talked about what should happen each time it is
called.

Since container is not allowed to maintain a reference to this class
loader, I think provider should not call getTempClassLoader() multiple
times.

Thanks,
Sahoo

Markus Fuchs wrote:

> Hi Shelly, hi Ken,
>
> Thanks very much for forwarding this information.
>
> Ken,
>
> I see the same behavior when running the Quicklook
> persistence-onetomanyApp.ear:
>
> The class pe.ejb.ejb30.persistence.toplinksample.ejb.OrderEntity is
> loaded twice.
>
> once with a ClassLoader I:
> com.sun.enterprise.util.ConnectorClassLoader @8537
> Parent: com.sun.enterprise.loader.EJBClassLoader @8732
>
> once with a ClassLoader II:
> com.sun.enterprise.util.ConnectorClassLoader @6763
> Parent: com.sun.enterprise.loader.EJBClassLoader @8732
>
> Any idea, why the same class is loader twice by different
> ClassLoaders, each sharing the same ParentClassLoader? The Quicklook
> test can be found
> appserv-tests/sqetests/ejb/ejb30/persistence/onetomany in the
> glassfish repository.
>
> Thanks!
>
> -- markus.
>
>
> Shelly (Donna) McGowan wrote:
>
>>Markus,
>>
>>I'm not sure if your debugging the schema deployment problem exhibited
>>in Deepa's quicklook test or the ManyToOne/OneToMany relationships fail
>>to load or both, but Oracle sent this email on Friday inferring a
>>classloader issue on the ManyToOne/OneToMany issue. Just wanted to make
>>sure you saw this.
>>
>>Shelly
>>
>>
>>
>>Markus Fuchs wrote On 11/04/05 20:13,:
>>
>>
>>>Hi,
>>>
>>>I now can reproduce the problem in my environment and should be able to
>>>find the problem soon. But I have to leave now. I'm planning on updating
>>>y'all Sunday.
>>>
>>>Have a good weekend,
>>>
>>>-- markus.
>>>
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> Subject:
>>> Re: [Issue 66] New - Enterprise archives fail to load if MX1 and 1XM
>>> relationships used in entities within persistence archive
>>> From:
>>> Christopher Delahunt <christopher.delahunt_at_oracle.com>
>>> Date:
>>> Fri, 04 Nov 2005 14:53:04 -0500
>>> To:
>>> persistence_at_glassfish.dev.java.net
>>>
>>> To:
>>> persistence_at_glassfish.dev.java.net
>>> CC:
>>> Peter Krogh <peter.krogh_at_oracle.com>, Shelly.McGowan_at_Sun.COM
>>>
>>>
>>> Hello Sun,
>>>
>>> In tracking down this bug, we have encountered a situation we cannot
>>> explain. In our initialization code we explicitly load all entity
>>> classes with the provided temp loader. When processing Order, the
>>> return type on getLineItem yields a class that was loaded by a
>>> loader that is different than the one provided. This behavior is the
>>> root of the problem, and is occurring since the changes on the 26th.
>>>
>>>
>>> Any insight is appreciated.
>>>
>>>
>>> Best Regards,
>>> Chris
>>>
>>>> -----Original Message-----
>>>> From: Shelly (Donna) McGowan [mailto:Shelly.McGowan_at_Sun.COM]
>>>> Sent: Wednesday, November 02, 2005 4:58 PM
>>>> To: persistence_at_glassfish.dev.java.net
>>>> Subject: Re: [Issue 66] New - Enterprise archives fail to load if MX1
>>>> and 1XM relationships used in entities within persistence archive
>>>>
>>>>
>>>>
>>>>
>>>> This issue is still occurring on the latest Glassfish builds (11/1).
>>>> There is no workaround that I'm aware of that resolves the issue
>>>> except
>>>> to use last week's promoted build (10/26).
>>>>
>>>> If there is a workaround, please reply to this alias.
>>>>
>>>> Shelly
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> smcgowan_at_dev.java.net wrote On 10/30/05 17:01,:
>>>>
>>>>> https://glassfish.dev.java.net/issues/show_bug.cgi?id=66
>>>>> Issue #|66
>>>>> Summary|Enterprise archives fail to load if MX1 and 1XM relati
>>>>> |onships used in entities within persistence archive
>>>>> Component|glassfish
>>>>> Version|9.0pe
>>>>> Platform|Sun
>>>>> OS/Version|Solaris
>>>>> URL|
>>>>> Status|NEW
>>>>> Status whiteboard|
>>>>> Keywords|
>>>>> Resolution|
>>>>> Issue type|DEFECT
>>>>> Priority|P1
>>>>> Subcomponent|entity-persistence
>>>>> Assigned to|mvatkina
>>>>> Reported by|smcgowan
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ------- Additional comments from smcgowan_at_dev.java.net Sun Oct 30
>>>>> 22:01:42 +0000 2005 -------
>>>>> enterprise archives containing a persistence archive in which the
>>>>> entities have
>>>>> a ManyToOne or OneToMany relationship defined fail to load with a
>>>>> ValidationException as shown below. These mapping of the
>>>>> relationships are
>>>>> correctly defined and have worked till recently (10/27). The verifier
>>>>> highlights the same problem.
>>>>>
>>>>>
>>>>>
>>>>> Exception Description: The attribute [employees] in entity class
>>>>> [class
>>>>> com.sun.ts.tests.ejb30.persistence.query.apitests.Insurance] has
>>>>> a mappedBy value of [insurance] which does not exist in its owning
>>>>> entity class
>>>>> [class com.sun.ts.tests.ejb30.persistence.query.apitests.
>>>>> EmbeddableSuperclass, this is invalid, and your attribute should
>>>>> reference the
>>>>> correct subclass.
>>>>> Local Exception Stack:
>>>>> Exception [TOPLINK-7154] (Oracle TopLink Essentials - 10g release
>>>>> 4 (10.1.4.0.0)
>>>>> (Build 051026Dev)):
>>>>> oracle.toplink.essentials.exceptions.ValidationException
>>>>> Exception Description: The attribute [employees] in entity class
>>>>> [class
>>>>> com.sun.ts.tests.ejb30.persistence.query.apitests.Insurance] has
>>>>> a mappedBy value of [insurance] which does not exist in its owning
>>>>> entity class
>>>>> [class com.sun.ts.tests.ejb30.persistence.query.apitests.
>>>>> EmbeddableSuperclass, this is invalid, and your attribute should
>>>>> reference the
>>>>> correct subclass.
>>>>> at
>>>>> oracle.toplink.essentials.exceptions.ValidationException.noMappedByAttributeFound(ValidationException.java:1019)
>>>>>
>>>>> at
>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.getOwnerMapping(EJBAnnotationsProcessor.java:418)
>>>>>
>>>>> at
>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.getOwnerMappingForeignKeys(EJBAnnotationsProcessor.java:430)
>>>>>
>>>>> at
>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processOneToMany(EJBAnnotationsProcessor.java:1893)
>>>>>
>>>>> at
>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processRelationshipAccessor(EJBAnnotationsProcessor.java:2236)
>>>>>
>>>>> at
>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processRelatedClass(EJBAnnotationsProcessor.java:2207)
>>>>>
>>>>> at
>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processORAnnotations(EJBAnnotationsProcessor.java:1989)
>>>>>
>>>>> at
>>>>> oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:299)
>>>>>
>>>>> at
>>>>> oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createContainerEntityManagerFactory(EntityManagerFactoryProvider.java:
>>>>>
>>>>> 104)
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: issues-unsubscribe_at_glassfish.dev.java.net
>>>>> For additional commands, e-mail: issues-help_at_glassfish.dev.java.net
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>



MIME-version: 1.0
Content-type: message/rfc822

Date: Mon, 07 Nov 2005 20:16:05 +0530
From: Sanjeeb Kumar Sahoo <Sanjeeb.Sahoo_at_Sun.COM>
Subject: Re: One-to-Many bug
To: Tom Ware <tom.ware_at_oracle.com>
Cc: persistence_at_glassfish.dev.java.net, Shelly.McGowan_at_Sun.COM,
 Kenneth Saks <Kenneth.Saks_at_Sun.COM>, Deepa Singh <Deepa.Singh_at_Sun.COM>,
 Marina Vatkina <Marina.Vatkina_at_Sun.COM>,
 "ejb3-toplink_ww_at_oracle.com" <ejb3-toplink_ww_at_oracle.com>
Message-id: <436F68AD.5080302_at_Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT

Hi Tom,
Tom Ware wrote:

> Hi Sahoo,
>
> Quick question.
>
> If there is no restriction in the spec saying that
> getTempClassLoader() cannot be called more than once, what is
> preventing another persitence provider from doing that?

Nothing.
That is why I said, we need to fix the spec.
Is TopLink Essential relying on getTempClassLoader() to return the
*same* class loader every time? If so, then as I mentioned, we need to
make it clear in the javadocs of that API. Else provider should handle
the case where container returns a new class loader every time or the
spec adds this restriction to the API.
Since container is not allowed to cache the temporary class loader, I
suspect having a requirement that getTempClassLoader() must return the
same class loader every time will be tricky to implement.

Thanks,
Sahoo

>
> Thanks,
> Tom
>
> Sanjeeb Kumar Sahoo wrote:
>
>> Hi Tom/Chris,
>> I have figured out what is causing that failure. TopLink Essentials
>> calls PersistenceUnitInfo.getTempClassLoader() twice:
>>
>> public EntityManagerFactory
>> createContainerEntityManagerFactory(PersistenceUnitInfo info){
>> EntityManagerSetupImpl emSetupImpl = new EntityManagerSetupImpl();
>> Collection entities = buildEntityList(info, info.getTempClassLoader());
>> ClassFileTransformer transformer = emSetupImpl.predeploy(entities,
>> info.getTempClassLoader(), info);
>> ...
>> }
>>
>> When I changed the above TopLink file to call getTempClassLoader()
>> only once, that validation exception went away. Looks like the
>> contract for getTempClassLoader() needs to be well defined.
>>
>> Our container creates a new ClassLoader for each invocation of
>> getTempClassLoader. This is fine as far as the contract defined in
>> the javadocs of that API:
>> /**
>> * Return a ClassLoader that the provider may use to temporarily load any
>> * classes, resources, or open URLs. The scope and classpath of this
>> loader
>> * is exactly the same as that of the loader returned by
>> * PersistenceInfo.getClassLoader. None of the classes loaded by this
>> class
>> * loader will be visible to application components.
>> *
>> * @return Temporary ClassLoader with same visibility as current loader
>> */
>> public ClassLoader getTempClassLoader();
>>
>>
>> See the above javadocs is silent about what should happen for
>> multiple invocations. Where as the earlier javadocs for
>> InstrumentableClassLoader's copy() method used to say the following:
>>
>> /**
>> * Create and return a temporary loader with the same visibility
>> * as this loader. The temporary loader may be used to load
>> * resources or any other application classes for the purposes of
>> * introspecting them for annotations. The persistence provider
>> * should not maintain any references to the temporary loader,
>> * or any objects loaded by it.
>> *
>> * @return A temporary classloader with the same classpath as this loader
>> */
>> public ClassLoader copy();
>>
>> The earlier one at least talked about what should happen each time it
>> is called.
>>
>> Since container is not allowed to maintain a reference to this class
>> loader, I think provider should not call getTempClassLoader()
>> multiple times.
>>
>> Thanks,
>> Sahoo
>>
>> Markus Fuchs wrote:
>>
>>> Hi Shelly, hi Ken,
>>>
>>> Thanks very much for forwarding this information.
>>>
>>> Ken,
>>>
>>> I see the same behavior when running the Quicklook
>>> persistence-onetomanyApp.ear:
>>>
>>> The class pe.ejb.ejb30.persistence.toplinksample.ejb.OrderEntity is
>>> loaded twice.
>>>
>>> once with a ClassLoader I:
>>> com.sun.enterprise.util.ConnectorClassLoader @8537
>>> Parent: com.sun.enterprise.loader.EJBClassLoader @8732
>>>
>>> once with a ClassLoader II:
>>> com.sun.enterprise.util.ConnectorClassLoader @6763
>>> Parent: com.sun.enterprise.loader.EJBClassLoader @8732
>>>
>>> Any idea, why the same class is loader twice by different
>>> ClassLoaders, each sharing the same ParentClassLoader? The Quicklook
>>> test can be found
>>> appserv-tests/sqetests/ejb/ejb30/persistence/onetomany in the
>>> glassfish repository.
>>>
>>> Thanks!
>>>
>>> -- markus.
>>>
>>>
>>> Shelly (Donna) McGowan wrote:
>>>
>>>> Markus,
>>>>
>>>> I'm not sure if your debugging the schema deployment problem exhibited
>>>> in Deepa's quicklook test or the ManyToOne/OneToMany relationships
>>>> fail
>>>> to load or both, but Oracle sent this email on Friday inferring a
>>>> classloader issue on the ManyToOne/OneToMany issue. Just wanted to
>>>> make
>>>> sure you saw this.
>>>>
>>>> Shelly
>>>>
>>>>
>>>>
>>>> Markus Fuchs wrote On 11/04/05 20:13,:
>>>>
>>>>
>>>>> Hi,
>>>>>
>>>>> I now can reproduce the problem in my environment and should be
>>>>> able to find the problem soon. But I have to leave now. I'm
>>>>> planning on updating y'all Sunday.
>>>>>
>>>>> Have a good weekend,
>>>>>
>>>>> -- markus.
>>>>>
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>>
>>>>> Subject:
>>>>> Re: [Issue 66] New - Enterprise archives fail to load if MX1 and
>>>>> 1XM relationships used in entities within persistence archive
>>>>> From:
>>>>> Christopher Delahunt <christopher.delahunt_at_oracle.com>
>>>>> Date:
>>>>> Fri, 04 Nov 2005 14:53:04 -0500
>>>>> To:
>>>>> persistence_at_glassfish.dev.java.net
>>>>>
>>>>> To:
>>>>> persistence_at_glassfish.dev.java.net
>>>>> CC:
>>>>> Peter Krogh <peter.krogh_at_oracle.com>, Shelly.McGowan_at_Sun.COM
>>>>>
>>>>>
>>>>> Hello Sun,
>>>>>
>>>>> In tracking down this bug, we have encountered a situation we
>>>>> cannot explain. In our initialization code we explicitly load all
>>>>> entity classes with the provided temp loader. When processing
>>>>> Order, the return type on getLineItem yields a class that was
>>>>> loaded by a loader that is different than the one provided. This
>>>>> behavior is the root of the problem, and is occurring since the
>>>>> changes on the 26th.
>>>>>
>>>>>
>>>>> Any insight is appreciated.
>>>>>
>>>>>
>>>>> Best Regards,
>>>>> Chris
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Shelly (Donna) McGowan [mailto:Shelly.McGowan_at_Sun.COM]
>>>>>> Sent: Wednesday, November 02, 2005 4:58 PM
>>>>>> To: persistence_at_glassfish.dev.java.net
>>>>>> Subject: Re: [Issue 66] New - Enterprise archives fail to load if
>>>>>> MX1
>>>>>> and 1XM relationships used in entities within persistence archive
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> This issue is still occurring on the latest Glassfish builds (11/1).
>>>>>> There is no workaround that I'm aware of that resolves the issue
>>>>>> except
>>>>>> to use last week's promoted build (10/26).
>>>>>>
>>>>>> If there is a workaround, please reply to this alias.
>>>>>>
>>>>>> Shelly
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> smcgowan_at_dev.java.net wrote On 10/30/05 17:01,:
>>>>>>
>>>>>>> https://glassfish.dev.java.net/issues/show_bug.cgi?id=66
>>>>>>> Issue #|66
>>>>>>> Summary|Enterprise archives fail to load if MX1 and 1XM relati
>>>>>>> |onships used in entities within persistence archive
>>>>>>> Component|glassfish
>>>>>>> Version|9.0pe
>>>>>>> Platform|Sun
>>>>>>> OS/Version|Solaris
>>>>>>> URL|
>>>>>>> Status|NEW
>>>>>>> Status whiteboard|
>>>>>>> Keywords|
>>>>>>> Resolution|
>>>>>>> Issue type|DEFECT
>>>>>>> Priority|P1
>>>>>>> Subcomponent|entity-persistence
>>>>>>> Assigned to|mvatkina
>>>>>>> Reported by|smcgowan
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ------- Additional comments from smcgowan_at_dev.java.net Sun Oct
>>>>>>> 30 22:01:42 +0000 2005 -------
>>>>>>> enterprise archives containing a persistence archive in which
>>>>>>> the entities have
>>>>>>> a ManyToOne or OneToMany relationship defined fail to load with a
>>>>>>> ValidationException as shown below. These mapping of the
>>>>>>> relationships are
>>>>>>> correctly defined and have worked till recently (10/27). The
>>>>>>> verifier
>>>>>>> highlights the same problem.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Exception Description: The attribute [employees] in entity class
>>>>>>> [class
>>>>>>> com.sun.ts.tests.ejb30.persistence.query.apitests.Insurance] has
>>>>>>> a mappedBy value of [insurance] which does not exist in its
>>>>>>> owning entity class
>>>>>>> [class com.sun.ts.tests.ejb30.persistence.query.apitests.
>>>>>>> EmbeddableSuperclass, this is invalid, and your attribute should
>>>>>>> reference the
>>>>>>> correct subclass.
>>>>>>> Local Exception Stack:
>>>>>>> Exception [TOPLINK-7154] (Oracle TopLink Essentials - 10g
>>>>>>> release 4 (10.1.4.0.0)
>>>>>>> (Build 051026Dev)):
>>>>>>> oracle.toplink.essentials.exceptions.ValidationException
>>>>>>> Exception Description: The attribute [employees] in entity class
>>>>>>> [class
>>>>>>> com.sun.ts.tests.ejb30.persistence.query.apitests.Insurance] has
>>>>>>> a mappedBy value of [insurance] which does not exist in its
>>>>>>> owning entity class
>>>>>>> [class com.sun.ts.tests.ejb30.persistence.query.apitests.
>>>>>>> EmbeddableSuperclass, this is invalid, and your attribute should
>>>>>>> reference the
>>>>>>> correct subclass.
>>>>>>> at
>>>>>>> oracle.toplink.essentials.exceptions.ValidationException.noMappedByAttributeFound(ValidationException.java:1019)
>>>>>>>
>>>>>>> at
>>>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.getOwnerMapping(EJBAnnotationsProcessor.java:418)
>>>>>>>
>>>>>>> at
>>>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.getOwnerMappingForeignKeys(EJBAnnotationsProcessor.java:430)
>>>>>>>
>>>>>>> at
>>>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processOneToMany(EJBAnnotationsProcessor.java:1893)
>>>>>>>
>>>>>>> at
>>>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processRelationshipAccessor(EJBAnnotationsProcessor.java:2236)
>>>>>>>
>>>>>>> at
>>>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processRelatedClass(EJBAnnotationsProcessor.java:2207)
>>>>>>>
>>>>>>> at
>>>>>>> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processORAnnotations(EJBAnnotationsProcessor.java:1989)
>>>>>>>
>>>>>>> at
>>>>>>> oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:299)
>>>>>>>
>>>>>>> at
>>>>>>> oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createContainerEntityManagerFactory(EntityManagerFactoryProvider.java:
>>>>>>>
>>>>>>> 104)
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>>
>>>>>>> To unsubscribe, e-mail: issues-unsubscribe_at_glassfish.dev.java.net
>>>>>>> For additional commands, e-mail: issues-help_at_glassfish.dev.java.net
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>
>



MIME-version: 1.0
Content-type: message/rfc822

Date: Mon, 07 Nov 2005 16:14:02 +0100
From: Michael Bouschen <Michael.Bouschen_at_Sun.COM>
Subject: Re: Parallel Expression Builders
To: Tom Ware <tom.ware_at_oracle.com>
Cc: persistence_at_glassfish.dev.java.net
Message-id: <436F6F3A.3090407_at_sun.com>
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_DnJz2VQQdMui992DqXzQyw)"

This is a multi-part message in MIME format.

--Boundary_(ID_DnJz2VQQdMui992DqXzQyw)
Content-type: text/plain; charset=us-ascii; format=flowed
Content-transfer-encoding: 7BIT

Hi Tom,

I looked into the issue with queries selecting a JOIN or IN-clause
variable (e.g. "SELECT o FROM Customer c JOIN c.orders o" or "SELECT o
FROM Customer c, IN(c.orders) o").

I changed the code in LocalVariableNode to check whether it selects such
a variable. If so, I call addAttribute passing a new ExpressionBuilder
instance for the class returned by resolveClass instead of using the
default ExpressionBuilder for the ReportQuery. This seems to work.

Are the ExpressionBuilder instances cached somewhere? If yes I might
need to lookup the ExpressionBuilder instead of creating a new one.

Attached you find my latest changes. The jar includes all the changes,
but compared to the version of Fridays I only changed LocalVariableNode.

Thanks.

Regards Michael

> Hi Tom,
>
> thanks for your changes. I looks like you added my version of class
> ParseTree in your jar, but I was able to adapt the class following your
> changes in EJBQLParseTree.
>
> Attached you find my EJBQL compiler changes of today. Together with your
> changes a lot more queries work now. I also changed to always create a
> ReportQuery as you proposed in the other email.
>
> Please have a look at class SelectNode methods getReferenceClass,
> resolveClass and resolveBaseClass. I tried to always use the class of
> the first abstract schema in the FROM clause as the reference class.
> Then getReferenceClass would return this class, resolveClass would call
> getReferenceClass and resolveBaseClass would go away. But this runs into
> a SQLException at runtime for a EJBQL query selecting a JOIN variable:
> SELECT c FROM Order o JOIN o.customer c.
> The generated SQL uses the table name CMP3_CUSTOMER instead the defined
> table alias in the WHERE clause:
> SELECT t0.ORDER_ID, t0.SHIP_ADDR, t0.CREATION_DATE, t0.TOTAL_PRICE,
> t0.ORDER_VERSION, t0.QUANTITY, t0.ITEM_ID, t0.CUST_ID
> FROM CMP3_ORDER t0, CMP3_ORDER t1
> WHERE (CMP3_CUSTOMER.CUST_ID (+) = t1.CUST_ID)
> The problem is the table qualifier in the WHERE clause, it uses
> CMP3_CUSTOMER instead of t0.
>
> The version in the attachment implements the above behavior, but still
> has the old code in comments. Maybe you have an idea.
>
> Thanks!
>
> Regards Michael
>
>> Michael,
>>
>> I have made progress on this issue. My current solution makes use of
>> parts of the current framework that deal with parallel expression
>> builders. Specifically, GenerationContext holds a list of the
>> expressions we have built. I am testing some changes to
>> EJBQLParseTree that appear to help. Essentially, I use the same
>> GenerationContext for the whole query rather than rebuilding a new one
>> for each operation.
>>
>> I am attaching my changes to the classes you sent me yesterday. Some
>> more work may be needed, but I definitely get a better result. (two
>> classes are changed - ParseTree and EJBQLParseTree)
>>
>> -Tom
>>
>> Tom Ware wrote:
>>
>>> Michael,
>>>
>>> I am still looking at your code, but I have noticed an issue that
>>> may be causing your issue with multiple versions of the same table in
>>> the where clause when you are building queries.
>>>
>>> The constructor ExpressionBuilder(Class) is special, it creates a
>>> special parallel expression builder. Each time one of these is
>>> built, it will result in a new reference to the table it refers to in
>>> the where clause. Except in complex queries (for instance, certain
>>> subselect queries), you likely want to refer to the same table. To
>>> do that, use the same instance of the ExpressionBuilder. You may
>>> need to maintain a list of the expression builders you have created.
>>>
>>> I am still working on getting you answers to your questions, but
>>> wanted to send this information ASAP.
>>>
>>> -Tom
>>>
>>


--Boundary_(ID_DnJz2VQQdMui992DqXzQyw)
Content-type: application/java-archive;
 name=EJBQLParser-multiSelectExpr-051107.jar
Content-transfer-encoding: BASE64
Content-disposition: inline; filename=EJBQLParser-multiSelectExpr-051107.jar

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
9gBSfyCiyFS1AG1tHLBudC3jHJMpbBMwDMNW39gNLXe7Nskn0AOnTPiPs1g5Zncx
E68rEjgd1Kti0Aa/yrEod44d9I9qhcz0ioBFayo2nfTmYnIxmmJPWslccEpvswcH
9rEphptidCWv3OKBBE2Ol0a9tJegip7hYwckpf+IBR9b26l6Q5a7tZ5H4WlFZD+c
sqyU8j9gheeuLln0zKtgSAOBF1KhG0Dcnc8pXQQCObxfY9TIWbgVgfKjaqTr1iZm
h5h5JrQ3mBuKwvdx2QndrbtWFbFp3Up8Npquu+MHLanzO0Y08rsUgeQnqHz7wvXZ
ixf1kbEl2lypQj1QJ0+PLZFqcrXToV7D4rZF8J6B1NDtsaGSo9NupGoxqTodQlFK
OxeTQqXYkBzJops5WbFnY/5tlHq7SFvw71RoWwnb7e7p9KliHW934A71r9133ygO
WDvSURssdzd0beYA051wVT8S6t+vnfhtwucOvHHI/w2yDYMuwOhvr4aMrlzWzp6V
OOCR8gqFs8vPSjtwqru1HTx4o8dfO4lzM/XzKBZJghMtMw7ddlb4wzey81X43x0a
4La+8rxMlfZy5Tyq7d8Nfq66dIXBgrhURaYN3qyrlK3uNd5C5+01+uFpVQUf4rWH
sfd4SX9DWJ5RVpKeppCt0dvv1IEHNW/CPaz7Y4KyM3kqrbnv/QtQSwcII7xTnKAG
AAAaEwAAUEsDBBQACAAIAOR6YzMAAAAAAAAAAAAAAABHAAAAc3JjL2phdmEvb3Jh
Y2xlL3RvcGxpbmsvZXNzZW50aWFscy9pbnRlcm5hbC9wYXJzaW5nL0VKQlFMUGFy
c2VUcmVlLmphdmHNV9tu2zgQffdXDPqyThBI6V6AbXNB0yTbNvD2kmZ3sSj6QEkj
mwktqiTlxFjk33eGlGTJUVunzUOFNrbIuZ8zQzreHsE2XMwQUl04LJwFnYObSQu5
VAjCINgqucTUgdO0geDQzC2wmpdEONbzuS7gBBeodDknIyCKDE6kdUYmlZO0OZEp
Fha92piVHtUrj7YigH91BXOxhEI7qEhq5R9vUiydV5MFxTgvlRRFinAt3cx7r+1E
LML/2VYqCtCJE6QiSKlcNqGqOgwRTE6VsDaXdhYnWjsKV5SxwqlQ8fHJyWTxONqN
3I0Dbbz0zLnSPo3jVivKcBFdioWICnRxWSVkfqU5c3MVecX3iN1QISeD/G5LTGUu
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
AAAAAAAAAAAAAABRAAAAc3JjL2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFs
cy9pbnRlcm5hbC9wYXJzaW5nL1BhcnNlVHJlZU5vZGVDb25zdHJ1Y3Rvci5qYXZh
zT39c9u2kr/nr8DzL5ZTV+q7uZu51yaeky0lVk6WXEtOrtPpvKEoSGJNkSo/rPju
9X+/XXyQAAiKFE1lqknGJD4Wu4vFYgEslr23b8hbMt9Q4oZBQoMkJuGKJBsvJivP
p8SJKInTxe/UTUgSQgYlCY22McFqrCQlN+F2GwZkQJ+pH+62AIQ4wZIMvDiJvEWa
eJA59lwaxJRV62ClM5FydtEl5JcwJVvnhQRhQlIolbdPv7p0l7BqXgA4bne+5wQu
JXsv2bDWBZwuFsH/CMt1AhIuEgeqOFBp9yJR9QUaDge59p04XnnxprcIwwTQdXY9
n64dv3czGIyf/979oZt8TUgYsdKbJNnFP/Z6Wa3ukj53f3eenW5Ak94uXQD4vOYm
2fpdVnFGqYoqWQFAfI931PVWnkt8J1inzpqSdfhMo8AL1qzeDjjtxTHwL2Yc9b2t
lzgJe0+DJY2sDPiyoQFZZswHWDcIlS7h75JeAh9dP10KJiO2rNbtsD8YPiCTqeNu
ROdDm3lpBX+WeQwLoY9HK+LsoPdcZ+EDFljXWS4Z3FXo++EeMV2ABO0VzDhWl3lv
Y7WVR/1lTChgFsZA1uKFLCLHfaIgvGe//nZGIrrzHRdyWLWXMOX9F+4D4i1BPL3V
CzbmBdARW8bPH8l9GHHG3oC4RN56k5BfX+D3G6v6a+BsKQqRm+UCNBr9Bpm9N72e
UqvjXpC//+Mf/3lJ/u2HH/7jkkwBNZ92Sd/3CSsRA34xjZ7pErjyZgeIY8+HvFgS
AouCpy6NY0TU8eOuB+MyChy/u3OiGPD+6c0bbHEe7sZQknjbHaAev+F/D8D5I6XR
yyoCQvZh9NR9C3B6b9nwH03mw4dJf4zP73ZX7xZX92m0A96+6y2ufgTaAujXFDTA
BAQozsQX8QHBiCjNKz7QeAfFvYXne4lHYwbhXepfsSK+d0X60On3DqIBZMVSqRiw
sOAtiJ/PBc+VGKAqgV4IDuGBdWc7Z49jP6B7UdlNEyjuxJBEl3SZlfzgBSC8B1rZ
43CKvTX0gKjWE+TA77+cNNkA3E+o/yIvdkGS2bD5FFKfjFM39Z5kUeg70Fuy2/69
+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
fkAnA5KrEGyzTrtnlbcdMmwr+b4uxL0f/07PXxbZlq5zbsiB7J/NlsZ9EO7W4LZe
/VWPusxNA2c766S37ZHnF1EqXaCF1AW/8H8haRZs8VI+RhrWx5RDkAFxejnTWjMN
s06DeEOnJaNyK46NgK4dSa+g3jzbLwvddAUrFUSjW8lLaFVLx0HUcpdyp6TaRtPJ
otACQN7vJtbf3TJ8OOz/y0D6X4zRV3YbC6tpfvvSJ4vuwAz/gwFd+6ldb3HHhVn5
gJGKAVcG2CGTyoliHcJVi93a9aYV8fIhB4m1k8Q//2SffZxu3nueoWDsCIWGV4er
PNfd/9PO/wBQSwcIsbXfnOkOAAArOwAAUEsDBBQACAAIAE5qXzMAAAAAAAAAAAAA
AABOAAAAc3JjL2phdmEvb3JhY2xlL3RvcGxpbmsvZXNzZW50aWFscy9pbnRlcm5h
bC9wYXJzaW5nL2VqYnFsL0VKQlFMUGFyc2VyQmFzZS5qYXZh3V3rV9vIkv/OX9Hr
LxhCbJh75+5eAuw1YBJnjc3YJtk5s3PukaU21iBLih4Ydk/+963qh9Sy9WrZM7Nn
OTNJkLqr6lddXf1QdXX3+IAck9mSEtNzI+pGIfEWJFraIVnYDiVGQEkYz3+jZkQi
D15QEtFgFRKsxkpScuOtVp5LbukLdTx/BUSI4Vrk1g6jwJ7HkQ0vh7ZJ3ZCyam2s
1BJPWkcdQn72YrIy3ojrRSSGUil/+mpSP2LVbBdkXPmObbgmJWs7WjLugk4Hi+D/
SMs0XOLNIwOqGFDJf5OiOkIMg5N8cowwXNjhsjv3vAjENfyuQ58Mp3tzezt8Oeuc
dqLXiHgBK72MIj8873aTWh2LvnR+M16Mjkujrh/PgXxacxmtnA6rOKVUFZUsgCD+
HvrUtBe2SRzDfYqNJ0qevBcauLb7xOr5oGk7DEF/IdOoY6/syIjY77Fr0SBXAV+X
1CVWonygdYNUqQV/W/QE9Gg6sSWUjNKyWp/6vdv+BJVMDXMpGh94pqUV+dlLHRVC
Gw8WxPCh9Uxj7oAUWNewLEZ34TmOt0ZJ52BBa0UyLtVJ2tpYbWFTxwoJBcm8EGDN
38g8MMxnCsbb+uXXFgmo7xgmvGHV3ryYt5+3doltgXnaizdkZrvQECumz3Py4AVc
sTdgLoH9tIzIL2/w8yur+otrrCgakZm8BWo0+BVedg+6XaVW2zwiZ3//+7+dkB9O
T388IWMQzaEd0nMcwkqEIF9IgxdqgVYOfBAcW97jxSIPVOQ+d2gYoqCGE3Zs6JeB
azgd3whCkLtDf5t/cz4cHCDfz2B9xF75IH14wP8mzCJtrzMFC3CfJtQAS/mQeQlm
4XSOPyAF8biYPXDrmCu/s3bCszOsBFxnnj+EYiSM4sXioJLEFoLjD9WVeM/HJhGS
gpeyA4sAjeiNtHuj4WxylJXAcCMn6My8Z+pew2MFtfIGtEKNVV9S3ygyoab35Nr4
pqjIA4CgwXQJrtEauH4cTaFP0mJWKPwxc7OD0aw/GfWG+O8L/+pifvUQBz7Y8EV3
fnXOvHAYQ6cnJnYq6bP6n69/GnKmacUJDX1QjT23HRCWhozCRexcsSKOfUV4CQu9
9grUCjYGLjXwVoymz8hhhww8P7BBfuctqXkd244FjpMVIoCBJq96brjGeu4boUHg
BSCkGQdoZsSK2V+iifNqwCvoRWAKIIgH/quoyj34bea7E/QkZKbMSnQFSPj5hxFH
S/Cln3H0CezQBD/CnNZnjzpkGJux/SyLAgcYNaTh/rVzynou99lC34qir40Qxx4Y
EMHR8Efkfw6QEGjrBdRFwNs5FIYZ8KxzaEFySRZgtWAGrBRY64SuwO0y7/S5f0uM
kFmubNSAvl8YZuQxBeB4AMzJD50zURuaJYIhF6rzTkyMObpWM5qaS7oyRuiNLokb
O+AHCmq8GNCu4Gq3ykoEXyjyF+2YfSVIgKB99DVJdVFIctpQWHur/4Hx8X/jqBOR
538eCS3iDzP1dloC3n5IXtrYBw3H/m/aFk+/C+68xTZZ53dKsBv4s5i5eJ1w/l6F
UOnWxKGvNBC0t0mLt89ZyswR4I/qDPjvPTEY+mCKwJk1i5xy8V/QvEEs8EiiTlfV
yItnWzii9rFsmwmeeDBCVQGfaMQKhe2jDlRo01wNb9DLJ1XAr/NEYXA0nAfes5Pn
bWSNFsUNrH10AuRqayjjl4JkFiUVxixVOopt/WBbZw2HzJEg//cdYBBWT1MBVagB
jeLAVet3NuqrFYswJe4Q7AYkQp8EHiElOgNvy+SKuLMWvpGX4LQ7ktZsGcBkyYCJ
t+94bzjvTlvJXiAPbjeeCT46LNFJlrOV/JqrkQi5grNMWKUqAq/H2iZ5oCpbtNrl
pta3tYY/UfCmEGYic51bMOAg1LZS+DtM+COYtBZZqVI9MViq1k/dzoK0RcmlEcpe
skmLqUBS5KYe0dTIM5RV5QgTYosoNqpmTSshGKUtUN994ALOYhMXw5nBwoGsDTZH
hpE2YrN/MaDa6B2xn4APK/QjG7TucLhuq2rw4gjItFubTNnA3qqUmtx6LpXG3SFf
YdVAYp84Hg6lOOh2CkVbwNAQLqkF8+n2hldL1HYDU6MoiHF8Ax/HayTPlCaqodbr
KYHFiAXi1hBpHuYq6U68J1CAoHJqCy1oakqLEw0YPJ23+nJ/EbOFavnlvEIfR8qj
Lp6v9PCFiskiuDPj6SmApWUkVqbRYZhAqMYo61YglMV04aXkazfW6FbDtAr6Xyo4
73Y6IiPJusLi2mRhB2FEegEsqmEab5v9Vx9WsiEbblxyP2Zw2BYNTPKrId0huTxq
AxdolaMtr6upiCpBdHQUUvSI+1PSlNFrqKWKyppqqhSlrp5a1/3Z135/1Op0Wmi2
9XvBNY3WlLqVnUEwYF0sGZE0oKp86qK6GY9uerP6WIAzzFrKcXCamsJLwrUFB2ME
zxzijkdqq/VhbNeuAJVTQxtiHlOdftpf+dEbsdMBpNOpxsoqJeCqGfWnvZuHvtRl
NfnQNPyK8YmXaSlTzGptSbq1++fdZHyv0SvvYKFS4a6RoKZTZkTrivxxMn58INc/
1xf6Y+DF/vVbudySrKbsCe3fXfxBRCtUn5DGos1wcCZ1sXzqfRmMPtZH8sl4YVsB
ZSA4TU3pJeG6go9dKnfn0g8SAsY5uTohV5cn5AL+u6wGNYI1amCbYyAWlEMTJYmH
RTURZrnUxXl8Qrqq56sEcx87ke07b+Pg1n6xLaq17MqrruOoB6P6pjSoGHkGI00F
DzZHFcEV3hvOJu8bx4hDOnCFOxT7JHnfHEpldAknhNPFBn5zU46a4n/2bLct97RB
KBrgk8YoWuQdaSdk/r01foSWbZ23BqMR/H0Eb1vk81i7PZiUqXQ1sd3RyFz+SQDJ
XX9280l37EsELsBa0meG/dHH2acmuwBD6j5Fy/IexMtowpGE/ygI9fYyeNmm2xmb
nHRc2nDwH33iehasFpde7FhkTpMVITxf15mKDu1nXT/Mq/zhgnrm5qZLDVFFpT9H
2KEd4ceLRjIndf8c0XNNv67sVda8Jb0Q/75/f92fvB/fcQzK1AL3kZNNV1mnZKJB
V3MajBe6E4ykmo7SR7HjMC3zhWQd2UsnfJrb0bJK7dnppP48aFwx5/SCRrsiY41J
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
7ixQwXMucLfQqPxlXTnt/pD6VT+oaw3z93DegEP96Zn4/sWL7/CDOHSNgmfoygGn
tV07hSSrOpgsZFn3/9uEx/vG7783WmC58ExN7dop5JjxewNCGWAJfOIThaUy3KKh
It0OPHNDEEWa9UajTi0ixIPd4y+fwHiF6QA6zefPOSjThZFMfcrGmN8h+UE8iY+j
/UrCM6TKMyQkeOrgAzZ4PRFSJpLkIZEErJsgDOkOiLzGY9eBcqX6aw/mKgvT4i8Q
4bd3avRJHfCjdH3lGjL9OE/ZW+eQr8iU3KrEDz8xv9gmeGL8RBh7V3BZQIOGFI4p
lYLoazTpMs7DGfZF5X2CGoN0f0nfq4LOhjLDsVzj0LQSixjmDezniurEEkvIBBOM
PoiJBPhbTBk5iS1h5JDj1zP2nhw60mWOt2rmigdxOuz3h+9ZDDqkpG3Xv4xPyD2A
VZCzhkSDfGwjUr+J+s3U75X6navfuvoFK1IPvzdU9MgxfTAR6IGnmhOYfuDY36xV
hL6KyGc/WmJC34ET41Qa8ehAWiRnQqmmx5H0ZSFO/stp6ltw/ROTIvqcvP4fUEsH
CMQxL1xqFwAA0E4AAFBLAQIUABQACAAIAFOAZzMAAAAAAgAAAAAAAAAJAAQAAAAA
AAAAAAAAAAAAAABNRVRBLUlORi/+ygAAUEsBAhQAFAAIAAgAU4BnMwHV0nNHAAAA
RwAAABQAAAAAAAAAAAAAAAAAPQAAAE1FVEEtSU5GL01BTklGRVNULk1GUEsBAhQA
FAAIAAgA4IxkM7G7oZ8pDwAA1UIAAEsAAAAAAAAAAAAAAAAAxgAAAHNyYy9qYXZh
L29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvaW50ZXJuYWwvZWpiL2NtcDMvYmFz
ZS9FSkJRdWVyeUltcGwuamF2YVBLAQIUABQACAAIAK2cZDMjvFOcoAYAABoTAABA
AAAAAAAAAAAAAAAAAGgQAABzcmMvamF2YS9vcmFjbGUvdG9wbGluay9lc3NlbnRp
YWxzL2ludGVybmFsL3BhcnNpbmcvRG90Tm9kZS5qYXZhUEsBAhQAFAAIAAgA5Hpj
MxtsnQwTBgAAIxQAAEcAAAAAAAAAAAAAAAAAdhcAAHNyYy9qYXZhL29yYWNsZS90
b3BsaW5rL2Vzc2VudGlhbHMvaW50ZXJuYWwvcGFyc2luZy9FSkJRTFBhcnNlVHJl
ZS5qYXZhUEsBAhQAFAAIAAgADHtnM0PWLIy8CAAAqxsAAEoAAAAAAAAAAAAAAAAA
/h0AAHNyYy9qYXZhL29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvaW50ZXJuYWwv
cGFyc2luZy9Mb2NhbFZhcmlhYmxlTm9kZS5qYXZhUEsBAhQAFAAIAAgA6IxkMxba
V7PwDAAAWjcAAEIAAAAAAAAAAAAAAAAAMicAAHNyYy9qYXZhL29yYWNsZS90b3Bs
aW5rL2Vzc2VudGlhbHMvaW50ZXJuYWwvcGFyc2luZy9QYXJzZVRyZWUuamF2YVBL
AQIUABQACAAIAKOOZDMQwz/cZg8AACVpAABNAAAAAAAAAAAAAAAAAJI0AABzcmMv
amF2YS9vcmFjbGUvdG9wbGluay9lc3NlbnRpYWxzL2ludGVybmFsL3BhcnNpbmcv
UGFyc2VUcmVlQ29uc3RydWN0b3IuamF2YVBLAQIUABQACAAIAMeDYzM6AhQ9ZwkA
AGEjAABJAAAAAAAAAAAAAAAAAHNEAABzcmMvamF2YS9vcmFjbGUvdG9wbGluay9l
c3NlbnRpYWxzL2ludGVybmFsL3BhcnNpbmcvUGFyc2VUcmVlQ29udGV4dC5qYXZh
UEsBAhQAFAAIAAgAyo5kM4wfFfveFAAAHXYAAFEAAAAAAAAAAAAAAAAAUU4AAHNy
Yy9qYXZhL29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvaW50ZXJuYWwvcGFyc2lu
Zy9QYXJzZVRyZWVOb2RlQ29uc3RydWN0b3IuamF2YVBLAQIUABQACAAIAMCiZDOx
td+c6Q4AACs7AABDAAAAAAAAAAAAAAAAAK5jAABzcmMvamF2YS9vcmFjbGUvdG9w
bGluay9lc3NlbnRpYWxzL2ludGVybmFsL3BhcnNpbmcvU2VsZWN0Tm9kZS5qYXZh
UEsBAhQAFAAIAAgATmpfM2AU8PWhFgAAQYUAAE4AAAAAAAAAAAAAAAAACHMAAHNy
Yy9qYXZhL29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvaW50ZXJuYWwvcGFyc2lu
Zy9lamJxbC9FSkJRTFBhcnNlckJhc2UuamF2YVBLAQIUABQACAAIALhjYzPEMS9c
ahcAANBOAABQAAAAAAAAAAAAAAAAACWKAABzcmMvamF2YS9vcmFjbGUvdG9wbGlu
ay9lc3NlbnRpYWxzL2ludGVybmFsL3BhcnNpbmcvZWpicWwvYW50bHIyNzMvRUpC
UUxQYXJzZXIuZ1BLBQYAAAAADQANAJ0FAAANogAAAAA=

--Boundary_(ID_DnJz2VQQdMui992DqXzQyw)--