gpt4 book ai didi

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

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

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

WovenClass.getBytes介绍

[英]Returns the class file bytes to be used to define the WovenClass#getClassName() class.

While in the #TRANSFORMING state, this method returns a reference to the class files byte array contained in this object. After leaving the #TRANSFORMING state, this woven class can no longer be transformed and a copy of the class file byte array is returned.
[中]返回用于定义WovenClass#getClassName()类的类文件字节。
在#转换状态下,此方法返回对该对象中包含的类文件字节数组的引用。离开#转换状态后,这个编织类将无法再被转换,并返回类文件字节数组的副本。

代码示例

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

public boolean isSuperClassWoven(WovenClass wovenClass)
{
 ClassReader cReader = new ClassReader(wovenClass.getBytes());
 try {
   Class<?> superClass = Class.forName(cReader.getSuperName().replace('/', '.'), false,
       wovenClass.getBundleWiring().getClassLoader());
   return WovenProxy.class.isAssignableFrom(superClass);
 } catch (ClassNotFoundException e) {
   throw weavingException(wovenClass, e);
 }
}

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

public boolean isSuperClassWoven(WovenClass wovenClass)
{
 ClassReader cReader = new ClassReader(wovenClass.getBytes());
 try {
   Class<?> superClass = Class.forName(cReader.getSuperName().replace('/', '.'), false,
       wovenClass.getBundleWiring().getClassLoader());
   return WovenProxy.class.isAssignableFrom(superClass);
 } catch (ClassNotFoundException e) {
   String failureMessage = NLS.MESSAGES.getMessage("fatal.weaving.failure", wovenClass.getClassName());
   //This is a failure that should stop the class loading!
   LOGGER.error(failureMessage, e);
   throw new WeavingException(failureMessage, e);
 }
}

代码示例来源: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

bytes = WovenProxyGenerator.getWovenProxy(wovenClass.getBytes(),
    wovenClass.getBundleWiring().getClassLoader());

代码示例来源: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: 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);
    }
  }
}

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

bytes = WovenProxyGenerator.getWovenProxy(wovenClass.getBytes(),
    wovenClass.getBundleWiring().getClassLoader());

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