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]
>
>

Reply via email to