コード例 #1
0
 /**
  * Adds the mixin field to the target class.
  *
  * @param fieldInfo
  * @param deploymentModel
  * @param mixinDef
  */
 private void addMixinField(
     final MixinFieldInfo fieldInfo,
     final DeploymentModel deploymentModel,
     final MixinDefinition mixinDef) {
   final String signature = fieldInfo.mixinClassInfo.getSignature();
   int modifiers = 0;
   if (deploymentModel.equals(DeploymentModel.PER_CLASS)
       || deploymentModel.equals(DeploymentModel.PER_JVM)) {
     fieldInfo.isStatic = true;
     fieldInfo.isPerJVM = deploymentModel.equals(DeploymentModel.PER_JVM);
     modifiers = ACC_PRIVATE + ACC_FINAL + ACC_STATIC + ACC_SYNTHETIC;
   } else if (deploymentModel.equals(DeploymentModel.PER_INSTANCE)) {
     fieldInfo.isStatic = false;
     modifiers = ACC_PRIVATE + ACC_FINAL + ACC_SYNTHETIC;
   } else {
     throw new DefinitionException(
         "deployment model ["
             + mixinDef.getDeploymentModel()
             + "] for mixin ["
             + mixinDef.getMixinImpl().getName()
             + "] is not supported");
   }
   if (mixinDef.isTransient()) {
     modifiers += ACC_TRANSIENT;
   }
   cv.visitField(modifiers, fieldInfo.fieldName, signature, null, null);
   m_mixinFields.put(mixinDef.getMixinImpl(), fieldInfo);
 }