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

Reply via email to