gpt4 book ai didi

org.osgi.framework.hooks.weaving.WovenClass.setBytes()方法的使用及代码示例

转载 作者:知者 更新时间:2024-03-23 13:15:05 28 4
gpt4 key购买 nike

本文整理了Java中org.osgi.framework.hooks.weaving.WovenClass.setBytes()方法的一些代码示例,展示了WovenClass.setBytes()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。WovenClass.setBytes()方法的具体详情如下:
包路径:org.osgi.framework.hooks.weaving.WovenClass
类名称:WovenClass
方法名:setBytes

WovenClass.setBytes介绍

[英]Set the class file bytes to be used to define the WovenClass#getClassName() class. This method must not be called outside invocations of the WeavingHook#weave(WovenClass) method by the framework.

While in the #TRANSFORMING state, this method replaces the reference to the array contained in this object with the specified array. After leaving the #TRANSFORMING state, this woven class can no longer be transformed and this method will throw an IllegalStateException.
[中]设置用于定义WovenClass#getClassName()类的类文件字节。不能在框架调用WeavingHook#weave(WovenClass)方法之外调用此方法。
当处于#转换状态时,此方法用指定的数组替换对此对象中包含的数组的引用。离开#TRANSFORMING状态后,这个编织类不能再被转换,这个方法将抛出一个非法状态异常。

代码示例

代码示例来源:origin: org.apache.aries.proxy/org.apache.aries.proxy

wovenClass.setBytes(bytes);
List<String> imports = wovenClass.getDynamicImports();
imports.add(IMPORT_A);

代码示例来源:origin: org.apache.aries.jpa/org.apache.aries.jpa.container

private static boolean transformClass(WovenClass wovenClass, ClassLoader cl, ClassTransformer transformer)
  throws ThreadDeath, OutOfMemoryError {
  try {
    byte[] result = transformer
      .transform(cl, 
            wovenClass.getClassName(),
            wovenClass.getDefinedClass(), 
            wovenClass.getProtectionDomain(),
            wovenClass.getBytes());
    if (result != null) {
      wovenClass.setBytes(result);
      wovenClass.getDynamicImports().add("org.eclipse.persistence.*");
      wovenClass.getDynamicImports().add("org.apache.openjpa.*");
      return true;
    }
  } catch (Exception t) {
    Bundle b = wovenClass.getBundleWiring().getBundle();
    String msg = String.format("Weaving failure on class %s in bundle %s/%s using transformer %s", wovenClass.getClassName(),
                  b.getSymbolicName(), b.getVersion(), transformer);
    throw new WeavingException(msg, t);
  }
  return false;
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle

@Override
  public void weave(WovenClass wovenClass) {
    Bundle consumerBundle = wovenClass.getBundleWiring().getBundle();
    Set<WeavingData> wd = activator.getWeavingData(consumerBundle);
    if (wd != null) {
      activator.log(Level.FINE, "Weaving class " + wovenClass.getClassName());

      ClassReader cr = new ClassReader(wovenClass.getBytes());
      ClassWriter cw = new OSGiFriendlyClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES,
        wovenClass.getBundleWiring().getClassLoader());
      TCCLSetterVisitor tsv = new TCCLSetterVisitor(cw, wovenClass.getClassName(), wd);
      cr.accept(tsv, ClassReader.SKIP_FRAMES);
      if (tsv.isWoven()) {
        wovenClass.setBytes(cw.toByteArray());
        if (tsv.additionalImportRequired())
          wovenClass.getDynamicImports().add(addedImport);
        if (activator.isLogEnabled(Level.FINEST)) {
          StringWriter stringWriter = new StringWriter();
          ClassReader reader = new ClassReader(wovenClass.getBytes());
          ClassVisitor tracer = new TraceClassVisitor(new PrintWriter(stringWriter));
          ClassVisitor checker = new CheckClassAdapter(tracer, true);
          reader.accept(checker, 0);
          activator.log(Level.FINEST, "Woven class bytecode: \n" + stringWriter.toString());
        }
      }
    }
  }
}

代码示例来源:origin: org.apache.aries.proxy/org.apache.aries.proxy.impl

wovenClass.setBytes(bytes);
List<String> imports = wovenClass.getDynamicImports();
imports.add(IMPORT_A);

代码示例来源:origin: net.osgiliath.framework/net.osgiliath.helper.pax-jpa.tx

@Override
public void weave(WovenClass wovenClass) {
  if (wovenClass.getBundleWiring().getBundle() == puInfo.getBundle()
    && managedClasses.contains(wovenClass.getClassName())) {
    try {
      synchronized (this) {
        LOG.debug("weaving {}", wovenClass.getClassName());
        byte[] transformed = transformer.transform(cl, wovenClass.getClassName(),
          wovenClass.getDefinedClass(), wovenClass.getProtectionDomain(),
          wovenClass.getBytes());
        wovenClass.setBytes(transformed);
        /*
         * 
         * TODO Hard-coded list of packages for OpenJPA and Eclipselink. We should only
         * add the ones required for the given provider.
         */
        wovenClass.getDynamicImports().add("org.apache.openjpa.enhance");
        wovenClass.getDynamicImports().add("org.apache.openjpa.util");
        wovenClass.getDynamicImports().add("org.eclipse.persistence.*");
        wovenClass.getDynamicImports().add("org.hibernate.*");
        wovenClass.getDynamicImports().add("javassist.util.proxy");
      }
    }
    catch (IllegalClassFormatException exc) {
      throw new WeavingException("cannot transform " + wovenClass.getClassName(), exc);
    }
  }
}

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com