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
