微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javax.persistence.spi.ClassTransformer的实例源码

项目:aries-jpa    文件WrappingTransformer.java   
public WrappingTransformer(Classtransformer delegate,ServiceReference<?> persistenceProvider) {
    validate(delegate,persistenceProvider);
    this.delegate = delegate;

    Object packages = persistenceProvider.getProperty("org.apache.aries.jpa.container.weaving.packages");
    if (packages instanceof String[]) {
        for (String s : (String[])packages) {
            packageImportsToAdd.add(s);
        }
    } else {
        Bundle provider = persistenceProvider.getBundle();
        String suffix = ";" + Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE + "=" + provider.getSymbolicName()
                        + ";" + Constants.BUNDLE_VERSION_ATTRIBUTE + "=" + provider.getVersion();

        BundleRevision br = provider.adapt(BundleWiring.class).getRevision();
        for (BundleCapability bc : br.getDeclaredCapabilities(BundleRevision.PACKAGE_NAMESPACE)) {
            packageImportsToAdd.add(bc.getAttributes().get(BundleRevision.PACKAGE_NAMESPACE) + suffix);
        }
    }
}
项目:aries-jpa    文件JPAWeavingHook.java   
@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");
    }
}
项目:aries-jpa    文件JPAWeavingHook.java   
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",b.getSymbolicName(),b.getVersion(),transformer);
        throw new WeavingException(msg,t);
    }
    return false;
}
项目:bundles    文件datanucleusWrapper.java   
@Override
@SuppressWarnings("unchecked")
public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info,Map properties) {
    properties.put("datanucleus.jpa.addClasstransformer","false");
    properties.put("datanucleus.plugin.pluginRegistryClassName","org.datanucleus.plugin.OsgiPluginRegistry");

    info.addTransformer(new Classtransformer() {

        @Override
        public byte[] transform(ClassLoader loader,String className,Class<?> classBeingredefined,ProtectionDomain protectionDomain,byte[] classfilebuffer) throws IllegalClassFormatException {

            // Todo Auto-generated method stub
            return null;
        }
    });
    return pp.createContainerEntityManagerFactory(info,properties);
}
项目:aries-jpa    文件WrappingTransformer.java   
private static void validate(Classtransformer delegate,ServiceReference<?> persistenceProvider) {
    if (delegate == null) {
        throw new NullPointerException("Transformer delegate may not be null");
    }
    if (persistenceProvider == null) {
        throw new NullPointerException("PersistenceProvider may not be null");
    }
}
项目:aries-jpa    文件JPAWeavingHook.java   
@Override
public synchronized void addTransformer(Bundle pBundle,Classtransformer transformer) {
    LOGGER.info("Adding transformer " + transformer.getClass().getName());
    LinkedHashSet<Classtransformer> transformers = registeredTransformers.get(pBundle);
    if (transformers == null) {
        transformers = new LinkedHashSet<Classtransformer>();
        registeredTransformers.put(pBundle,transformers);
    }
    transformers.add(transformer);
}
项目:aries-jpa    文件JPAWeavingHook.java   
@Override
public synchronized void removeTransformer(Bundle pBundle,Classtransformer transformer) {
    LinkedHashSet<Classtransformer> set = registeredTransformers.get(pBundle);
    if (set == null || !set.remove(transformer)) {
        throw new IllegalStateException("Transformer " + transformer + " not registered");
    }
    if (set.isEmpty()) {
        registeredTransformers.remove(pBundle);
    }
}
项目:lams    文件SpringPersistenceUnitInfo.java   
/**
 * This implementation delegates to the LoadTimeweaver,if specified.
 */
@Override
public void addTransformer(Classtransformer classtransformer) {
    if (this.loadTimeweaver == null) {
        throw new IllegalStateException("Cannot apply class transformer without LoadTimeweaver specified");
    }
    this.loadTimeweaver.addTransformer(new ClassFileTransformerAdapter(classtransformer));
}
项目:spring4-understanding    文件SpringPersistenceUnitInfo.java   
/**
 * This implementation delegates to the LoadTimeweaver,if specified.
 */
@Override
public void addTransformer(Classtransformer classtransformer) {
    if (this.loadTimeweaver == null) {
        throw new IllegalStateException("Cannot apply class transformer without LoadTimeweaver specified");
    }
    this.loadTimeweaver.addTransformer(new ClassFileTransformerAdapter(classtransformer));
}
项目:wisdom-jdbc    文件JPATransformer.java   
@Override
public void weave(WovenClass clazz) {
    try {
        if (transformers.isEmpty()) {
            return;
        }

        BundleWiring wiring = clazz.getBundleWiring();
        Bundle b = wiring.getBundle();

        Classtransformer trfs[];
        synchronized (transformers) {
            Collection<Classtransformer> list = transformers.get(b);
            if (list == null) {
                return;
            }
            trfs = list.toArray(new Classtransformer[list.size()]);
        }
        LOGGER.info("Transforming {} with {}",clazz.getClassName(),Arrays.toString(trfs));
        for (Classtransformer ctf : trfs) {
            if (ctf != null) {
                ctf.transform(wiring.getClassLoader(),clazz.getDefinedClass(),clazz.getProtectionDomain(),clazz.getBytes());
            }
        }

        if (!imports.isEmpty()) {
            clazz.getDynamicImports().addAll(imports);
        }

    } catch (Exception e) {
        LOGGER.error("Error while weaving class {}",e);
    }
}
项目:wisdom-jdbc    文件JPATransformer.java   
boolean register(Bundle b,Classtransformer ctf) {
    LOGGER.info("register transformer {} on bundle {}",ctf,b);
    if (ctf == null) {
        ctf = DUMMY_TRANSFORMER;
    }
    synchronized (transformers) {
        List<Classtransformer> list = transformers.get(b);
        if (list == null) {
            list = new ArrayList<>();
            transformers.put(b,list);
        }
        list.add(ctf);
        return true;
    }
}
项目:class-guard    文件SpringPersistenceUnitInfo.java   
/**
 * This implementation delegates to the LoadTimeweaver,if specified.
 */
@Override
public void addTransformer(Classtransformer classtransformer) {
    if (this.loadTimeweaver == null) {
        throw new IllegalStateException("Cannot apply class transformer without LoadTimeweaver specified");
    }
    this.loadTimeweaver.addTransformer(new ClassFileTransformerAdapter(classtransformer));
}
项目:bundles    文件TransformersHook.java   
@Override
public void weave(WovenClass clazz) {
    try {
        if (transformers.isEmpty())
            return;

        BundleWiring wiring = clazz.getBundleWiring();
        Bundle b = wiring.getBundle();

        Classtransformer trfs[];
        synchronized (transformers) {
            List<Classtransformer> list = transformers.get(b);
            if (list == null)
                return;
            trfs = list.toArray(empty);
        }
        System.out.println("transforming " + Arrays.toString(trfs) + " " + clazz);
        for (Classtransformer ctf : trfs) {
            if (ctf != null) {
                ctf.transform(wiring.getClassLoader(),clazz.getBytes());
            }

        }

        if (!imports.isEmpty())
            clazz.getDynamicImports().addAll(imports);

    } catch (Exception e) {
        // Todo Auto-generated catch block
        e.printstacktrace();
    }
}
项目:bundles    文件TransformersHook.java   
boolean register(Bundle b,Classtransformer ctf) {
    System.out.println("register transformer " + ctf + " on bundle " + b);
    if (ctf == null) {
        ctf = DUMMY_TRANSFORMER;
    }
    synchronized (transformers) {
        return transformers.add(b,ctf);
    }
}
项目:bundles    文件PersistenceUnitInfoImpl.java   
/**
 * Add a new transformer. SPEC: can this be called multiple times?
 * 
 * @see javax.persistence.spi.PersistenceUnitInfo#addTransformer(javax.persistence.spi.Classtransformer)
 */
@Override
public void addTransformer(Classtransformer transformer) {
    try {
        sourceBundle.bridge.transformersHook.register(sourceBundle.bundle,transformer);
        if (transformer != null)
            transformers.add(transformer);
    } catch (RuntimeException e) {
        e.printstacktrace();
        throw e;
    }
}
项目:hightide    文件HightidePersistenceUnitInfo.java   
@Override
public void addTransformer(Classtransformer transformer) {
    if (isNull(transformers)) {
        transformers = new ArrayList<>();
    }
    transformers.add(transformer);
}
项目:testee.fi    文件PersistenceUnitInfoImpl.java   
@Override
public void addTransformer(final Classtransformer transformer) {
    // This is called by eclipselink but doing nothing with it seems to be no problem right Now
    // Todo investigate
}
项目:aries-jpa    文件PersistenceUnit.java   
@Override
public void addTransformer(Classtransformer transformer) {
    TransformerRegistry reg = TransformerRegistrySingleton.get();
    reg.addTransformer(bundle,transformer);
}
项目:aries-jpa    文件WrappingTransformer.java   
public WrappingTransformer(Classtransformer transformer) {
    delegate = transformer;
}
项目:aries-jpa    文件JPAWeavingHook.java   
@SuppressWarnings("unchecked")
private synchronized Collection<Classtransformer> getTransformers(Bundle bundle) {
    LinkedHashSet<Classtransformer> transformers = registeredTransformers.get(bundle);
    return (Collection<Classtransformer>)(transformers != null ? new ArrayList<Classtransformer>(transformers) : Collections.emptyList());
}
项目:aries-jpa    文件PersistenceUnitProxyWithTargetServer.java   
@Override
public void addTransformer(Classtransformer arg0) {
    delegate.addTransformer(arg0);
}
项目:lams    文件MutablePersistenceUnitInfo.java   
/**
 * This implementation throws an UnsupportedOperationException.
 */
@Override
public void addTransformer(Classtransformer classtransformer) {
    throw new UnsupportedOperationException("addTransformer not supported");
}
项目:lams    文件ClassFileTransformerAdapter.java   
public ClassFileTransformerAdapter(Classtransformer classtransformer) {
    Assert.notNull(classtransformer,"Classtransformer must not be null");
    this.classtransformer = classtransformer;
}
项目:vertx-jpa    文件DefaultPersistenceUnitInfoImpl.java   
/**
 * This implementation throws an UnsupportedOperationException.
 */
@Override
public void addTransformer(Classtransformer classtransformer) {
  throw new UnsupportedOperationException("addTransformer not supported");
}
项目:jspare-vertx-ms-blueprint    文件DefaultPersistenceUnitInfoImpl.java   
/**
 * This implementation throws an UnsupportedOperationException.
 */
@Override
public void addTransformer(Classtransformer classtransformer) {
    throw new UnsupportedOperationException("addTransformer not supported");
}
项目:spring4-understanding    文件MutablePersistenceUnitInfo.java   
/**
 * This implementation throws an UnsupportedOperationException.
 */
@Override
public void addTransformer(Classtransformer classtransformer) {
    throw new UnsupportedOperationException("addTransformer not supported");
}
项目:spring4-understanding    文件ClassFileTransformerAdapter.java   
public ClassFileTransformerAdapter(Classtransformer classtransformer) {
    Assert.notNull(classtransformer,"Classtransformer must not be null");
    this.classtransformer = classtransformer;
}
项目:carbon    文件DefaultPersistenceUnitInfo.java   
@Override
public void addTransformer(Classtransformer transformer) {
}
项目:jspare-container    文件DefaultPersistenceUnitInfoImpl.java   
/**
 * This implementation throws an UnsupportedOperationException.
 */
@Override
public void addTransformer(Classtransformer classtransformer) {
  throw new UnsupportedOperationException("addTransformer not supported");
}
项目:cibet    文件DefaultPersistenceUnitInfo.java   
public void addTransformer(Classtransformer transformer) {
   classtransformers.add(transformer);
}
项目:cibet    文件DelegatingPersistenceUnitInfo.java   
public void addTransformer(Classtransformer transformer) {
    delegate.addTransformer(transformer);
}
项目:jpasecurity    文件DelegatingPersistenceUnitInfo.java   
public void addTransformer(Classtransformer transformer) {
    delegate.addTransformer(transformer);
}
项目:dropwizard-entitymanager    文件PersistenceUnitInfoImpl.java   
@Override
public void addTransformer(Classtransformer transformer) {
    logger.warn("Dropwizard EntityManager does not support JPA class transformation.  " +
            "The " + transformer.getClass().getName() + " class transformer will be ignored.");
}
项目:dropwizard-entitymanager    文件PersistenceUnitInfoImpltest.java   
@Test
public void testAddingClasstransformerGeneratesWarning() {
    Classtransformer classtransformer = mock(Classtransformer.class);
    persistenceUnitInfo.addTransformer(classtransformer);
    verify(logger).warn(contains("does not support"));
}
项目:osgi.ee    文件PersistenceUnitInfoImpl.java   
@Override
public void addTransformer(Classtransformer transformer) {
    System.out.println("WARNING: bytecode weaving using " + 
            transformer.getClass().getName() + " not performed for unit " + deFinition.name);
}
项目:class-guard    文件MutablePersistenceUnitInfo.java   
/**
 * This implementation throws an UnsupportedOperationException.
 */
public void addTransformer(Classtransformer classtransformer) {
    throw new UnsupportedOperationException("addTransformer not supported");
}
项目:class-guard    文件ClassFileTransformerAdapter.java   
public ClassFileTransformerAdapter(Classtransformer classtransformer) {
    Assert.notNull(classtransformer,"Classtransformer must not be null");
    this.classtransformer = classtransformer;
}
项目:minnal    文件MinnalPersistenceUnitInfo.java   
public void addTransformer(Classtransformer transformer) {
    logger.info("Add transformer called on the persistent unit info. Ignoring");
    // Todo Support adding transformers.
    // Ignore this for Now
}
项目:bundles    文件TransformersHook.java   
boolean unregister(Bundle b,Classtransformer ctf) {
    System.out.println("unregister transformer " + ctf + " on bundle " + b);
    synchronized (transformers) {
        return transformers.remove(b,ctf);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。