You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by da...@apache.org on 2011/03/23 23:49:26 UTC
svn commit: r1084792 - in /aries/trunk/spi-fly: ./ spi-fly-core/
spi-fly-core/src/main/java/org/apache/aries/spifly/ spi-fly-dynamic-bundle/
spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/
spi-fly-static-tool/ spi-fly-static-tool/...
Author: davidb
Date: Wed Mar 23 22:49:25 2011
New Revision: 1084792
URL: http://svn.apache.org/viewvc?rev=1084792&view=rev
Log:
More SPI-Fly refactoring
Added:
aries/trunk/spi-fly/spi-fly-weaver/
aries/trunk/spi-fly/spi-fly-weaver/pom.xml
aries/trunk/spi-fly/spi-fly-weaver/src/
aries/trunk/spi-fly/spi-fly-weaver/src/main/
aries/trunk/spi-fly/spi-fly-weaver/src/main/java/
aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/
aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/apache/
aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/apache/aries/
aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/apache/aries/spifly/
aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/apache/aries/spifly/weaver/
aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/apache/aries/spifly/weaver/TCCLSetterVisitor.java
- copied, changed from r1084722, aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/TCCLSetterVisitor.java
Removed:
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/TCCLSetterVisitor.java
Modified:
aries/trunk/spi-fly/pom.xml
aries/trunk/spi-fly/spi-fly-core/pom.xml
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/BaseActivator.java
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/Util.java
aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml
aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java
aries/trunk/spi-fly/spi-fly-static-tool/pom.xml
aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java
Modified: aries/trunk/spi-fly/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/pom.xml?rev=1084792&r1=1084791&r2=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/pom.xml (original)
+++ aries/trunk/spi-fly/pom.xml Wed Mar 23 22:49:25 2011
@@ -38,6 +38,10 @@
<description>
SPI support for OSGi
</description>
+
+ <properties>
+ <asm.version>3.2</asm.version>
+ </properties>
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/aries/trunk/spi-fly</connection>
@@ -56,6 +60,7 @@
<modules>
<module>spi-fly-deps</module>
<module>spi-fly-core</module>
+ <module>spi-fly-weaver</module>
<module>spi-fly-dynamic-bundle</module>
<module>spi-fly-static-tool</module>
<module>spi-fly-static-bundle</module>
Modified: aries/trunk/spi-fly/spi-fly-core/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-core/pom.xml?rev=1084792&r1=1084791&r2=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-core/pom.xml (original)
+++ aries/trunk/spi-fly/spi-fly-core/pom.xml Wed Mar 23 22:49:25 2011
@@ -37,20 +37,14 @@ JRE through META-INF/services resources)
<dependencies>
<dependency>
- <groupId>asm</groupId>
- <artifactId>asm-all</artifactId>
- <version>3.3.1</version>
- <scope>provided</scope>
- </dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </dependency>
<dependency>
- <!-- Use the Eclipse version of OSGi until the core 4.3 OSGi jar is available in Maven. -->
- <groupId>org.eclipse</groupId>
- <artifactId>osgi</artifactId>
- <version>3.7M5</version>
- <scope>system</scope>
- <systemPath>${basedir}/../spi-fly-deps/target/downloaded/org.eclipse.osgi_3.7.0.jar</systemPath>
- </dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ </dependency>
<dependency>
<groupId>org.easymock</groupId>
Modified: aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/BaseActivator.java
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/BaseActivator.java?rev=1084792&r1=1084791&r2=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/BaseActivator.java (original)
+++ aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/BaseActivator.java Wed Mar 23 22:49:25 2011
@@ -31,13 +31,11 @@ import java.util.concurrent.ConcurrentHa
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CopyOnWriteArrayList;
-import org.apache.aries.spifly.api.SpiFlyConstants;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleEvent;
import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
import org.osgi.service.log.LogService;
import org.osgi.util.tracker.BundleTracker;
import org.osgi.util.tracker.ServiceTracker;
@@ -53,8 +51,8 @@ public abstract class BaseActivator impl
private BundleContext bundleContext;
private LogServiceTracker logServiceTracker;
private List<LogService> logServices = new CopyOnWriteArrayList<LogService>();
- private BundleTracker<Object> consumerBundleTracker;
- private BundleTracker<List<ServiceRegistration<?>>> providerBundleTracker;
+ private BundleTracker consumerBundleTracker;
+ private BundleTracker providerBundleTracker;
private final ConcurrentMap<Bundle, Set<WeavingData>> bundleWeavingData =
new ConcurrentHashMap<Bundle, Set<WeavingData>>();
@@ -71,11 +69,11 @@ public abstract class BaseActivator impl
logServiceTracker = new LogServiceTracker(context);
logServiceTracker.open();
- providerBundleTracker = new BundleTracker<List<ServiceRegistration<?>>>(context,
+ providerBundleTracker = new BundleTracker(context,
Bundle.ACTIVE, new ProviderBundleTrackerCustomizer(this, context.getBundle()));
providerBundleTracker.open();
- consumerBundleTracker = new BundleTracker<Object>(context, Bundle.INSTALLED, null) {
+ consumerBundleTracker = new BundleTracker(context, Bundle.INSTALLED, null) {
@Override
public Object addingBundle(Bundle bundle, BundleEvent event) {
processBundle(bundle, consumerHeaderName);
@@ -109,9 +107,9 @@ public abstract class BaseActivator impl
return;
}
- String consumerHeader = bundle.getHeaders().get(consumerHeaderName);
- if (consumerHeader != null) {
- Set<WeavingData> wd = ConsumerHeaderProcessor.processHeader(consumerHeader);
+ Object consumerHeader = bundle.getHeaders().get(consumerHeaderName);
+ if (consumerHeader instanceof String) {
+ Set<WeavingData> wd = ConsumerHeaderProcessor.processHeader((String) consumerHeader);
bundleWeavingData.put(bundle, Collections.unmodifiableSet(wd));
for (WeavingData w : wd) {
@@ -218,20 +216,20 @@ public abstract class BaseActivator impl
// TODO unRegisterConsumerBundle();
- private class LogServiceTracker extends ServiceTracker<LogService, LogService> {
+ private class LogServiceTracker extends ServiceTracker {
public LogServiceTracker(BundleContext context) {
- super(context, LogService.class, null);
+ super(context, LogService.class.getName(), null);
}
- public LogService addingService(ServiceReference<LogService> reference) {
- LogService svc = super.addingService(reference);
- if (svc != null)
- logServices.add(svc);
+ public Object addingService(ServiceReference reference) {
+ Object svc = super.addingService(reference);
+ if (svc instanceof LogService)
+ logServices.add((LogService) svc);
return svc;
}
@Override
- public void removedService(ServiceReference<LogService> reference, LogService service) {
+ public void removedService(ServiceReference reference, Object service) {
logServices.remove(service);
}
}
Modified: aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java?rev=1084792&r1=1084791&r2=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java (original)
+++ aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java Wed Mar 23 22:49:25 2011
@@ -36,7 +36,7 @@ import org.osgi.util.tracker.BundleTrack
/**
* Listens for new bundles being installed and registers them as service providers if applicable.
*/
-public class ProviderBundleTrackerCustomizer implements BundleTrackerCustomizer<List<ServiceRegistration<?>>> {
+public class ProviderBundleTrackerCustomizer implements BundleTrackerCustomizer {
final BaseActivator activator;
final Bundle spiBundle;
@@ -47,7 +47,7 @@ public class ProviderBundleTrackerCustom
// TODO handle pre-existing bundles.
}
- public List<ServiceRegistration<?>> addingBundle(Bundle bundle, BundleEvent event) {
+ public List<ServiceRegistration> addingBundle(Bundle bundle, BundleEvent event) {
log(LogService.LOG_INFO, "Bundle Considered for SPI providers: "
+ bundle.getSymbolicName());
@@ -66,12 +66,13 @@ public class ProviderBundleTrackerCustom
+ bundle.getSymbolicName());
}
+ @SuppressWarnings("unchecked")
Enumeration<URL> entries = bundle.findEntries("META-INF/services", "*", false);
if (entries == null) {
return null;
}
- List<ServiceRegistration<?>> registrations = new ArrayList<ServiceRegistration<?>>();
+ List<ServiceRegistration> registrations = new ArrayList<ServiceRegistration>();
while (entries.hasMoreElements()) {
URL url = entries.nextElement();
log(LogService.LOG_INFO, "Found SPI resource: " + url);
@@ -96,7 +97,7 @@ public class ProviderBundleTrackerCustom
registrationClassName = s.substring(idx + 1);
}
- ServiceRegistration<?> reg = bundle.getBundleContext()
+ ServiceRegistration reg = bundle.getBundleContext()
.registerService(registrationClassName, o, props);
registrations.add(reg);
@@ -111,15 +112,16 @@ public class ProviderBundleTrackerCustom
return registrations;
}
- public void modifiedBundle(Bundle bundle, BundleEvent event, List<ServiceRegistration<?>> registrations) {
+ public void modifiedBundle(Bundle bundle, BundleEvent event, Object registrations) {
// should really be doing something here...
}
- public void removedBundle(Bundle bundle, BundleEvent event, List<ServiceRegistration<?>> registrations) {
+ @SuppressWarnings("unchecked")
+ public void removedBundle(Bundle bundle, BundleEvent event, Object registrations) {
if (registrations == null)
return;
- for (ServiceRegistration<?> reg : registrations) {
+ for (ServiceRegistration reg : (List<ServiceRegistration>) registrations) {
reg.unregister();
log(LogService.LOG_INFO, "Unregistered: " + reg);
}
Modified: aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/Util.java
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/Util.java?rev=1084792&r1=1084791&r2=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/Util.java (original)
+++ aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/Util.java Wed Mar 23 22:49:25 2011
@@ -18,8 +18,10 @@
*/
package org.apache.aries.spifly;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -28,7 +30,6 @@ import java.util.ServiceLoader;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleReference;
-import org.osgi.framework.wiring.BundleWiring;
import org.osgi.service.log.LogService;
/**
@@ -97,15 +98,38 @@ public class Util {
return null;
case 1:
Bundle bundle = bundles.iterator().next();
- BundleWiring wiring = bundle.adapt(BundleWiring.class);
- return wiring.getClassLoader();
+ return getBundleClassLoader(bundle);
+// BundleWiring wiring = bundle.adapt(BundleWiring.class);
+// return wiring.getClassLoader();
default:
List<ClassLoader> loaders = new ArrayList<ClassLoader>();
for (Bundle b : bundles) {
- BundleWiring bw = b.adapt(BundleWiring.class);
- loaders.add(bw.getClassLoader());
+// BundleWiring bw = b.adapt(BundleWiring.class);
+// loaders.add(bw.getClassLoader());
+ loaders.add(getBundleClassLoader(b));
}
return new MultiDelegationClassloader(loaders.toArray(new ClassLoader[loaders.size()]));
}
}
+
+ @SuppressWarnings("unchecked")
+ private static ClassLoader getBundleClassLoader(Bundle b) {
+ // In 4.3 this can be done much easier by using the BundleWiring...
+ // but here we're just finding any class in the bundle, load that and then use its classloader.
+ Enumeration<String> paths = b.getEntryPaths("/");
+ while(paths.hasMoreElements()) {
+ String path = paths.nextElement();
+ if (path.endsWith(".class")) {
+ String className = path.substring(0,path.length() - ".class".length());
+ className = className.replace('/', '.');
+ try {
+ Class<?> cls = b.loadClass(className);
+ return cls.getClassLoader();
+ } catch (ClassNotFoundException e) {
+ // try the next class
+ }
+ }
+ }
+ throw new RuntimeException("Could not obtain classloader for bundle " + b);
+ }
}
Modified: aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml?rev=1084792&r1=1084791&r2=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml (original)
+++ aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml Wed Mar 23 22:49:25 2011
@@ -41,10 +41,9 @@ JRE through META-INF/services resources)
<dependency>
<groupId>asm</groupId>
<artifactId>asm-all</artifactId>
- <version>3.2</version>
- <scope>provided</scope>
+ <version>${asm.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.aries.spifly</groupId>
<artifactId>org.apache.aries.spifly.core</artifactId>
@@ -52,6 +51,12 @@ JRE through META-INF/services resources)
</dependency>
<dependency>
+ <groupId>org.apache.aries.spifly</groupId>
+ <artifactId>org.apache.aries.spifly.weaver</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
<!-- Use the Eclipse version of OSGi until the core 4.3 OSGi jar is available in Maven. -->
<groupId>org.eclipse</groupId>
<artifactId>osgi</artifactId>
Modified: aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java?rev=1084792&r1=1084791&r2=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java (original)
+++ aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java Wed Mar 23 22:49:25 2011
@@ -20,9 +20,9 @@ package org.apache.aries.spifly.dynamic;
import java.util.Set;
-import org.apache.aries.spifly.TCCLSetterVisitor;
import org.apache.aries.spifly.Util;
import org.apache.aries.spifly.WeavingData;
+import org.apache.aries.spifly.weaver.TCCLSetterVisitor;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.osgi.framework.Bundle;
Modified: aries/trunk/spi-fly/spi-fly-static-tool/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-static-tool/pom.xml?rev=1084792&r1=1084791&r2=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-static-tool/pom.xml (original)
+++ aries/trunk/spi-fly/spi-fly-static-tool/pom.xml Wed Mar 23 22:49:25 2011
@@ -37,7 +37,7 @@
<dependency>
<groupId>asm</groupId>
<artifactId>asm-all</artifactId>
- <version>3.3.1</version>
+ <version>${asm.version}</version>
</dependency>
<dependency>
@@ -45,6 +45,12 @@
<artifactId>org.apache.aries.spifly.core</artifactId>
<version>${pom.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.spifly</groupId>
+ <artifactId>org.apache.aries.spifly.weaver</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
</dependencies>
<build>
Modified: aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java?rev=1084792&r1=1084791&r2=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java (original)
+++ aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java Wed Mar 23 22:49:25 2011
@@ -33,10 +33,10 @@ import java.util.jar.Manifest;
import org.apache.aries.spifly.ConsumerHeaderProcessor;
import org.apache.aries.spifly.Streams;
-import org.apache.aries.spifly.TCCLSetterVisitor;
import org.apache.aries.spifly.Util;
import org.apache.aries.spifly.WeavingData;
import org.apache.aries.spifly.api.SpiFlyConstants;
+import org.apache.aries.spifly.weaver.TCCLSetterVisitor;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
Added: aries/trunk/spi-fly/spi-fly-weaver/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-weaver/pom.xml?rev=1084792&view=auto
==============================================================================
--- aries/trunk/spi-fly/spi-fly-weaver/pom.xml (added)
+++ aries/trunk/spi-fly/spi-fly-weaver/pom.xml Wed Mar 23 22:49:25 2011
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.aries.spifly</groupId>
+ <artifactId>spifly</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.apache.aries.spifly.weaver</artifactId>
+ <packaging>jar</packaging>
+ <name>Apache Aries SPI Fly Weaver</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm-all</artifactId>
+ <version>${asm.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.spifly</groupId>
+ <artifactId>org.apache.aries.spifly.core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>3.0</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Copied: aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/apache/aries/spifly/weaver/TCCLSetterVisitor.java (from r1084722, aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/TCCLSetterVisitor.java)
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/apache/aries/spifly/weaver/TCCLSetterVisitor.java?p2=aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/apache/aries/spifly/weaver/TCCLSetterVisitor.java&p1=aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/TCCLSetterVisitor.java&r1=1084722&r2=1084792&rev=1084792&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/TCCLSetterVisitor.java (original)
+++ aries/trunk/spi-fly/spi-fly-weaver/src/main/java/org/apache/aries/spifly/weaver/TCCLSetterVisitor.java Wed Mar 23 22:49:25 2011
@@ -16,12 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.aries.spifly;
+package org.apache.aries.spifly.weaver;
import java.util.Arrays;
import java.util.ServiceLoader;
import java.util.Set;
+import org.apache.aries.spifly.Util;
+import org.apache.aries.spifly.WeavingData;
import org.objectweb.asm.ClassAdapter;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.MethodAdapter;