Hm. Ok, after rebulding this version it works for me as well. Don't know why, as the code is the exact copy of what was failing. Perhaps something wasn't cleaned properly again. Sorry for bothering, I'll email you if something like that happens again and hopefully will be able to reproduce it next time.
Yours, Alexey Romanov On Thu, May 17, 2012 at 12:35 PM, clement escoffier <[email protected]> wrote: > Hi, > > I was able to build the bundle without issues > (ru.focusmedia.odp.server.sspd.impl). Do I have to change anything in the > project ot reproduce the issue ? > > Regards, > > Clement > > 2012/5/12 Alexey Romanov <[email protected]> > >> 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] >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

