项目: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
项目: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
项目:aries-jpa
文件:PersistenceUnit.java
项目: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
项目:lams
文件:ClassFileTransformerAdapter.java
项目:vertx-jpa
文件:DefaultPersistenceUnitInfoImpl.java
项目:jspare-vertx-ms-blueprint
文件:DefaultPersistenceUnitInfoImpl.java
项目:spring4-understanding
文件:MutablePersistenceUnitInfo.java
项目:spring4-understanding
文件:ClassFileTransformerAdapter.java
项目:carbon
文件:DefaultPersistenceUnitInfo.java
@Override
public void addTransformer(Classtransformer transformer) {
}
项目:jspare-container
文件:DefaultPersistenceUnitInfoImpl.java
项目:cibet
文件:DefaultPersistenceUnitInfo.java
项目:cibet
文件:DelegatingPersistenceUnitInfo.java
public void addTransformer(Classtransformer transformer) {
delegate.addTransformer(transformer);
}
public void addTransformer(Classtransformer transformer) {
delegate.addTransformer(transformer);
}
项目:dropwizard-entitymanager
文件:PersistenceUnitInfoImpl.java
项目:class-guard
文件:MutablePersistenceUnitInfo.java
项目:class-guard
文件:ClassFileTransformerAdapter.java
项目:minnal
文件:MinnalPersistenceUnitInfo.java
项目:bundles
文件:TransformersHook.java
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。