gpt4 book ai didi

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

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

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

WovenClass.getBundleWiring介绍

[英]Returns the bundle wiring whose class loader will define the woven class.
[中]返回其类装入器将定义编织类的绑定。

代码示例

代码示例来源: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.ops4j.pax.wicket/org.ops4j.pax.wicket.service

/** {@inheritDoc} */
public void weave(WovenClass wovenClass) {
  try {
    BundleWiring bundleWiring = wovenClass.getBundleWiring();
    Bundle bundle = bundleWiring.getBundle();
    synchronized (extendedBundles) {
      if (extendedBundles.contains(bundle.getBundleId())) {
        // Nothing to do
        return;
      }
      extendedBundles.add(bundle.getBundleId());
    }
    LOGGER.debug("considering to add imports via weaving for bundle {} ",bundle.getSymbolicName());
    ExtendedBundle extendedBundle = new ExtendedBundle(extendedBundleContext, bundle);
    if (extendedBundle.isRelevantForImportEnhancements()) {
      LOGGER.debug("Enhance DynamicImports of bundle {}...", bundle.getSymbolicName());
      wovenClass.getDynamicImports().addAll(ADDITIONAL_IMPORTS);
    }
  } catch (RuntimeException e) {
    LOGGER.warn("RuntimeException while trying to extend bundle imports");
  }
}

代码示例来源:origin: ops4j/org.ops4j.pax.wicket

/** {@inheritDoc} */
public void weave(WovenClass wovenClass) {
  try {
    BundleWiring bundleWiring = wovenClass.getBundleWiring();
    Bundle bundle = bundleWiring.getBundle();
    synchronized (extendedBundles) {
      if (extendedBundles.contains(bundle.getBundleId())) {
        // Nothing to do
        return;
      }
      extendedBundles.add(bundle.getBundleId());
    }
    LOGGER.debug("considering to add imports via weaving for bundle {} ",bundle.getSymbolicName());
    ExtendedBundle extendedBundle = new ExtendedBundle(extendedBundleContext, bundle);
    if (extendedBundle.isRelevantForImportEnhancements()) {
      LOGGER.debug("Enhance DynamicImports of bundle {}...", bundle.getSymbolicName());
      wovenClass.getDynamicImports().addAll(ADDITIONAL_IMPORTS);
    }
  } catch (RuntimeException e) {
    LOGGER.warn("RuntimeException while trying to extend bundle imports");
  }
}

代码示例来源: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.ops4j.pax.cdi/pax-cdi-weld

@Override
public void weave(WovenClass wovenClass) {
  BundleWiring wiring = wovenClass.getBundleWiring();
  Bundle bundle = wiring.getBundle();
  Boolean seen = bundleMap.get(wiring);
  if (seen != null) {
    return;
  }
  boolean requiresWeaving = false;
  if (isBeanBundle(bundle) || isExtension(bundle)) {
    log.debug("weaving {}", wovenClass.getClassName());
    wovenClass.getDynamicImports().add("org.jboss.weld.*");
    requiresWeaving = true;
  }
  bundleMap.put(wiring, requiresWeaving);
}

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

@Override
public void weave(WovenClass wovenClass) {
  BundleWiring wiring = wovenClass.getBundleWiring();
  Bundle bundle = wiring.getBundle();
  ClassLoader cl = wiring.getClassLoader();
  Collection<ClassTransformer> transformersToTry = getTransformers(bundle);
  for (ClassTransformer transformer : transformersToTry) {
    if (transformClass(wovenClass, cl, transformer)) {
      LOGGER.info("Weaving " + wovenClass.getClassName() + " using " + transformer.getClass().getName());
      break;
    }
  }
  Class<?> dClass = wovenClass.getDefinedClass();
  if (transformersToTry.isEmpty() && dClass != null && dClass.getAnnotation(Entity.class) != null) {
    LOGGER.warn("Loading " + wovenClass.getClassName() + " before transformer is present");
  }
}

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

public final void weave(WovenClass wovenClass) {
 BundleWiring bw = wovenClass.getBundleWiring();
       wovenClass.getBundleWiring().getClassLoader());

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

public final void weave(WovenClass wovenClass) {
 BundleWiring bw = wovenClass.getBundleWiring();
       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);
    }
  }
}

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