Thanks Eugene, I did everything feasible from your suggestions.


I also stumbled upon a bug – JavaClassInfo.getFields() always just to throw 
ClassCastException since it was iterating over methods J. I fixed that and 
also made it keep a lazy copy like AsmClassInfo.



From: [EMAIL PROTECTED] 
[mailto:[EMAIL PROTECTED] On Behalf Of Eugene Kuleshov
Sent: Tuesday, July 17, 2007 12:04 PM
To: [email protected]
Subject: [tc-dev] [Fwd: [Tc-commits] teck [4464] allow roots to be specified 
with expressions




  Great stuff Tim!

  Here are few comments related to the usage of ClassInfo API.

  You used java.lang.reflect.Field for matching in ManagerImpl.isRoot(). 
Wouldn't it be better to use FieldInfo instead?
  I think if you have Filed field then declaring Class has to be loaded, so 
if you do want to use Field, it is probably better to use JavaFieldInfo 
instead of AsmFieldInfo in the ManagerImpl.isRoot(); (this one will work 
trough reflection)

  Code in TransparencyCodeAdapter.isRoot() that is using 
AsmClassInfo.getclassInfo(className, ...) is potentially dangerous, because 
of the classloading issues. Maybe it is better to pass the actual classInfo 
around (if we have it).

  In DSOClientConfigHelper.isRootDSOFinal(FieldInfo fi, boolean isPrimitive) 
parameter isPrimitive is redundant because it can be retrieved from 
fi.getType().isPrimitive();

  The way to enforce one or the other element in the xsd is to use 
xs:choice:



  <xs:complexType name="root">
    <xs:sequence>
      <xs:element name="root-name" type="java-identifier" minOccurs="0"/>
      <xs:choice>
        <xs:element name="field-name" type="qualified-field-name"/>
        <xs:element name="field-expression" type="field-expression"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  but I am not sure if xbeans actually can swallow that. Also, I really hope 
we could move from element-based schema to the attribute-based, though you 
won't be able to enforce such constructs for attributes (and probably will 
have to use different element name instead, i.e. <root-field name="" 
field=""/> vs. <root-expression name="" expression=""/>).

  regards,
  Eugene


-------- Original Message -------- 


Subject:

[Tc-commits] teck [4464] allow roots to be specified with expressions (ie.


Date:

Tue, 17 Jul 2007 11:25:08 -0700 (PDT)


From:

[EMAIL PROTECTED]


Reply-To:

[EMAIL PROTECTED]


To:

[EMAIL PROTECTED]



Revision

4464

Author

teck

Date

2007-07-17 11:25:08 -0700 (Tue, 17 Jul 2007)


Log Message


allow roots to be specified with expressions (ie. wilcards, annotations, 
subtypes, etc)


Modified Paths


*       dso/branches/2.4/code/base/common/lib/tcconfig-xmlbeans-generated.jar <>
* 
dso/branches/2.4/code/base/common/src.resources/com/tc/config/schema/terracotta-4.xsd
 
<>
* 
dso/branches/2.4/code/base/dso-container-tests/tests.base/com/tc/test/server/appserver/unit/AbstractAppServerTestCase.java
 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/bytecode/ClassAdapterBase.java
 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/bytecode/InstrumentationSpec.java
 
<>
*       
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/bytecode/Manager.java 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/bytecode/ManagerImpl.java 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/bytecode/ManagerUtil.java 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/bytecode/NullManager.java 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/bytecode/TransparencyClassAdapter.java
 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/bytecode/TransparencyCodeAdapter.java
 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/config/ConfigLoader.java 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/config/DSOClientConfigHelper.java
 
<>
*       dso/branches/2.4/code/base/dso-l1/src/com/tc/object/config/Root.java <>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/config/StandardDSOClientConfigHelper.java
 
<>
* 
dso/branches/2.4/code/base/dso-l1/src/com/tc/object/config/TransparencyClassSpec.java
 
<>
*       dso/branches/2.4/code/base/dso-l1/src/com/tc/util/FieldUtils.java <>
* 
dso/branches/2.4/code/base/dso-spring/tests.unit/com/tctest/spring/InitializingBean_Test.java
 
<>
* 
dso/branches/2.4/code/base/dso-spring/tests.unit/com/tctest/spring/MultipleContexts_Test.java
 
<>
* 
dso/branches/2.4/code/base/dso-spring/tests.unit/com/tctest/spring/Singleton2_Test.java
 
<>
* 
dso/branches/2.4/code/base/dso-spring/tests.unit/com/tctest/spring/Singleton_Test.java
 
<>
* 
dso/branches/2.4/code/base/dso-spring/tests.unit/com/tctest/spring/WebAppContext_Test.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/LockUpgrade1Reads1UpgradesTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/LockUpgradeAndReadTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/LockUpgradeSystemTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/ReflectionArrayTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/ReflectionFieldTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/SingleVMWaitNotifyTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/TransparentLinkedListTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/TransparentSetTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/TransparentTransientTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/TransparentVectorTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/TransparentWaitNotifyApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/WaitNotifySystemTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/restart/unit/DSOServerRestartTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-system-tests/tests.base/com/tctest/transparency/InnerClassInstrumentationTestApp.java
 
<>
* 
dso/branches/2.4/code/base/dso-tests-jdk15/tests.system/com/tctest/AnnotationTestApp.java
 
<>
* 
dso/branches/2.4/code/base/simulator/tests.base/com/tcsimulator/ControlProviderImpl.java
 
<>
*       dso/branches/2.4/kits/source/docs/references/tc-config-reference.xml <>



<<image001.jpg>>

_______________________________________________
tc-dev mailing list
[email protected]
http://lists.terracotta.org/mailman/listinfo/tc-dev

Reply via email to