Hi, It may be related to Java 7 classes including Frames.
It would be great if you can give me access to the code (either dropbox or github or anything). Regards, Clement PS: my dropbox account is [email protected] On 12.05.2012, at 15:59, Alexey Romanov wrote: > Unfortunately, I was not able to reproduce this in a stand-alone > example so far (tried simply adding all involved files to one bundle). > I can share the code on Dropbox if needed. > > Yours, Alexey Romanov > > > On Sat, May 12, 2012 at 4:38 PM, Alexey Romanov > <[email protected]> wrote: >> Additional information. This works: >> >> @Bind >> public synchronized void bindDriver(Driver driver) { >> if (getCurrentDriverByName(driver) == null) { >> // drivers.put(driver.getName(), driver); >> // logger.info("Driver '{}' added", driver.getName()); >> // for (OdpObjectClass objectClass : >> driver.getSupportedClasses()) { >> // objectRegistry.addObjectClass(objectClass); >> // } >> } >> } >> >> but uncommenting >> >> drivers.put(driver.getName(), driver); >> >> restores the error. >> >> Yours, Alexey Romanov >> >> >> On Sat, May 12, 2012 at 4:24 PM, Alexey Romanov >> <[email protected]> wrote: >>> For some reason PojoizationPlugin is failing to handle this class: >>> >>> package ru.focusmedia.odp.server.sspd.impl; >>> >>> import java.util.Map; >>> >>> import org.apache.felix.ipojo.annotations.Bind; >>> import org.apache.felix.ipojo.annotations.Component; >>> import org.apache.felix.ipojo.annotations.Instantiate; >>> import org.apache.felix.ipojo.annotations.Provides; >>> import org.apache.felix.ipojo.annotations.Requires; >>> import org.apache.felix.ipojo.annotations.Unbind; >>> import org.slf4j.Logger; >>> import org.slf4j.LoggerFactory; >>> >>> import com.google.common.collect.Maps; >>> >>> import ru.focusmedia.odp.server.api.objects.OdpObjectClass; >>> import ru.focusmedia.odp.server.drivers.api.Driver; >>> import ru.focusmedia.odp.server.sspd.api.DriverRegistry; >>> import ru.focusmedia.odp.server.sspd.api.ObjectRegistry; >>> >>> @Component >>> //@Provides >>> //@Instantiate >>> public class DriverRegistryImpl implements DriverRegistry { >>> private final Logger logger = LoggerFactory.getLogger(getClass()); >>> private Map<String, Driver> drivers = Maps.newHashMap(); >>> >>> // @Requires >>> private ObjectRegistry objectRegistry; >>> >>> @Override >>> public Driver getDriver(String name) { >>> return drivers.get(name); >>> } >>> >>> // @Bind >>> public synchronized void bindDriver(Driver driver) { >>> if (getCurrentDriverByName(driver) == null) { >>> drivers.put(driver.getName(), driver); >>> logger.info("Driver '{}' added", driver.getName()); >>> for (OdpObjectClass objectClass : >>> driver.getSupportedClasses()) { >>> objectRegistry.addObjectClass(objectClass); >>> } >>> } >>> } >>> >>> // @Unbind >>> public synchronized void unbindDriver(Driver driver) { >>> if (getCurrentDriverByName(driver) == driver) { >>> drivers.remove(driver.getName()); >>> logger.info("Driver '{}' removed", driver.getName()); >>> } else { >>> logger.debug( >>> "Driver with name '{}' removed, but >>> it isn't currently the one >>> registered for this name", >>> driver.getName()); >>> } >>> } >>> >>> private Driver getCurrentDriverByName(Driver driver) { >>> return drivers.get(driver.getName()); >>> } >>> } >>> >>> >>> Same exception happens in Eclipse and from the command line: >>> >>> java.lang.IllegalStateException: ClassReader.accept() should be called >>> with EXPAND_FRAMES flag >>> at org.objectweb.asm.commons.LocalVariablesSorter.visitFrame(Unknown >>> Source) >>> at org.objectweb.asm.ClassReader.accept(Unknown Source) >>> at org.objectweb.asm.ClassReader.accept(Unknown Source) >>> at >>> org.apache.felix.ipojo.manipulation.Manipulator.manipulate(Manipulator.java:100) >>> at >>> org.apache.felix.ipojo.manipulator.ManipulationEngine.generate(ManipulationEngine.java:111) >>> at >>> org.apache.felix.ipojo.manipulator.Pojoization.pojoization(Pojoization.java:312) >>> at >>> org.apache.felix.ipojo.bnd.PojoizationPlugin.analyzeJar(PojoizationPlugin.java:118) >>> at aQute.lib.osgi.Analyzer.analyze(Analyzer.java:130) >>> at aQute.lib.osgi.Builder.analyze(Builder.java:306) >>> at aQute.lib.osgi.Analyzer.calcManifest(Analyzer.java:301) >>> at aQute.lib.osgi.Builder.build(Builder.java:73) >>> at >>> org.apache.felix.bundleplugin.BundlePlugin.buildOSGiBundle(BundlePlugin.java:547) >>> at >>> org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:347) >>> at >>> org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:264) >>> at >>> org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:255) >>> at >>> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) >>> at >>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) >>> at >>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) >>> at >>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) >>> at >>> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) >>> at >>> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) >>> at >>> org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) >>> at >>> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) >>> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) >>> at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) >>> at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) >>> at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) >>> at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>> at >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> at java.lang.reflect.Method.invoke(Method.java:597) >>> at >>> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) >>> at >>> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) >>> at >>> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) >>> at >>> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) >>> >>> >>> The error goes away after commenting out @Component or bindDriver and >>> unbindDriver methods. >>> >>> >>> Relevant part of pom.xml: >>> >>> <build> >>> <plugins> >>> <plugin> >>> <groupId>org.apache.felix</groupId> >>> <artifactId>maven-bundle-plugin</artifactId> >>> <extensions>true</extensions> >>> <configuration> >>> <instructions> >>> <_include>bnd.bnd</_include> >>> </instructions> >>> </configuration> >>> </plugin> >>> </plugins> >>> </build> >>> >>> >>> bnd.bnd: >>> >>> -src: src/main/java >>> -classpath: target/classes >>> -plugin: >>> org.apache.felix.ipojo.bnd.PojoizationPlugin;path:="${basedir}/../cnf/plugins/bnd-ipojo-plugin-1.8.4-fat.jar";metadata=${basedir}/src/main/resources/metadata.xml;use-local-schemas=true >>> >>> Bundle-SymbolicName: ru.focusmedia.odp.server.sspd.impl >>> Bundle-Version: 0.1.0 >>> Private-Package: ru.focusmedia.odp.server.sspd.impl.* >>> >>> >>> bnd-ipojo-plugin-1.8.4-fat.jar mentioned in bnd.bnd is a single file >>> containing bnd-ipojo-plugin and its dependencies. >>> >>> Yours, Alexey Romanov > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] >

