Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: Java-SDO-beta1
    • Fix Version/s: Java-SDO-1.1
    • Labels:
      None
    • Environment:
      OS X Eclipse 3.3 M7
    • Patch Info:
      Patch Available

      Description

      When I execute:

      XSDHelper.INSTANCE.define(schema, null);

      I end up with a NullPointerException. I've tracked down root cause ...

      The static initializer of the HelperProvider executes this code:

      provider = getInstance(HelperProvider.class.getClassLoader());

      which ends up calling:

      HelperProvider provider = loadImplementation(cl, implName);

      implName is null so

      if (implName == null)

      { implName = getImplementationName(cl); }

      ends up calling

      implName = getImplementationName(cl);

      which ends up calling:

      InputStream is = cl.getResourceAsStream(SERVICE_RESOURCE_NAME);

      where SERVICE_RESORUCE_NAME = "META-INF/services/commonj.sdo.impl.HelperProvider"
      getResourceAsStream() return null because META-INF/services does not exist in the API bundle. It exists in the IMPL bundle and since you are using the class loader from the API bundle, it won't work.

      You can set

      -Dcommonj.sdo.impl.HelperProvider=org.apache.tuscany.sdo.helper.HelperProviderImpl

      to get around the above problem, but as soon as

      return (HelperProvider) cl.loadClass(implName).newInstance();

      executes, you get a CalssNotFoundException. Again, this is because you are trying to load a class outside the bundle with the wrong class loader.

      tried modifying the API manifest by hand to add

      Eclipse-BuddyPolicy: dependent

      and

      Eclipse-BuddyPolicy: global

      Either of those buddy policies will get past the class loader problem (although I believe this is specific to eclipse and won't work for OSGi in general), but when HelperProvider is initializing, you get the following exception:

      java.lang.ExceptionInInitializerError
      at org.apache.tuscany.sdo.impl.AttributeImpl.<clinit>(AttributeImpl.java:126)
      at org.apache.tuscany.sdo.impl.SDOFactoryImpl.createAttribute(SDOFactoryImpl.java:239)
      at org.apache.tuscany.sdo.impl.ClassImpl.<clinit>(ClassImpl.java:68)
      at org.apache.tuscany.sdo.impl.SDOFactoryImpl$SDOEcoreFactory.createEClass(SDOFactoryImpl.java:76)
      at org.apache.tuscany.sdo.impl.SDOPackageImpl.createEClass(SDOPackageImpl.java:622)
      at org.apache.tuscany.sdo.impl.SDOPackageImpl.createPackageContents(SDOPackageImpl.java:550)
      at org.apache.tuscany.sdo.impl.SDOPackageImpl.init(SDOPackageImpl.java:259)
      at org.apache.tuscany.sdo.SDOPackage.<clinit>(SDOPackage.java:76)
      at sun.misc.Unsafe.ensureClassInitialized(Native Method)
      at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
      at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
      at java.lang.reflect.Field.acquireFieldAccessor(Field.java:917)
      at java.lang.reflect.Field.getFieldAccessor(Field.java:898)
      at java.lang.reflect.Field.get(Field.java:357)
      at org.apache.tuscany.sdo.util.SDOUtil.registerStaticTypes(SDOUtil.java:196)
      at org.apache.tuscany.sdo.model.impl.ModelFactoryImpl.init(ModelFactoryImpl.java:731)
      at org.apache.tuscany.sdo.model.ModelFactory.<clinit>(ModelFactory.java:41)
      at org.apache.tuscany.sdo.helper.TypeHelperImpl.getBuiltInModels(TypeHelperImpl.java:61)
      at org.apache.tuscany.sdo.helper.TypeHelperImpl.<init>(TypeHelperImpl.java:79)
      at org.apache.tuscany.sdo.helper.HelperContextImpl.<init>(HelperContextImpl.java:46)
      at org.apache.tuscany.sdo.helper.HelperProviderImpl.createDefaultHelpers(HelperProviderImpl.java:38)
      at org.apache.tuscany.sdo.rtlib.helper.HelperProviderBase.<init>(HelperProviderBase.java:78)
      at org.apache.tuscany.sdo.helper.HelperProviderImpl.<init>(HelperProviderImpl.java:31)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
      at java.lang.Class.newInstance0(Class.java:350)
      at java.lang.Class.newInstance(Class.java:303)
      at commonj.sdo.impl.HelperProvider.loadImplementation(HelperProvider.java:157)
      at commonj.sdo.impl.HelperProvider.getInstance(HelperProvider.java:126)
      at commonj.sdo.impl.HelperProvider.<clinit>(HelperProvider.java:69)
      at commonj.sdo.helper.XSDHelper.<clinit>(XSDHelper.java:195)
      at notification.sdo.Application.start(Application.java:23)
      at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:153)
      at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
      at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
      at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
      at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
      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:585)
      at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:497)
      at org.eclipse.equinox.launcher.Main.basicRun(Main.java:436)
      at org.eclipse.equinox.launcher.Main.run(Main.java:1162)
      at org.eclipse.equinox.launcher.Main.main(Main.java:1137)
      Caused by: java.lang.NullPointerException
      at org.apache.tuscany.sdo.impl.AttributeImpl.eStaticClass(AttributeImpl.java:73)
      at org.eclipse.emf.ecore.impl.EObjectImpl.eClass(EObjectImpl.java:224)
      at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicInverseAdd(BasicEObjectImpl.java:1413)
      at org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.eInverseAdd(EStructuralFeatureImpl.java:514)
      at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eInverseAdd(BasicEObjectImpl.java:1389)
      at org.eclipse.emf.ecore.util.EcoreEList.inverseAdd(EcoreEList.java:282)
      at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:318)
      at org.eclipse.emf.common.util.BasicEList.add(BasicEList.java:626)
      at org.eclipse.emf.ecore.impl.EPackageImpl.createEAttribute(EPackageImpl.java:745)
      at org.apache.tuscany.sdo.impl.FactoryBase.createDocumentRoot(FactoryBase.java:301)
      at org.apache.tuscany.sdo.impl.FactoryBase.initXSD(FactoryBase.java:156)
      at org.apache.tuscany.sdo.model.internal.impl.InternalFactoryImpl.createXSDMetaData(InternalFactoryImpl.java:211)
      at org.apache.tuscany.sdo.model.internal.impl.InternalFactoryImpl.initializeMetaData(InternalFactoryImpl.java:206)
      at org.apache.tuscany.sdo.model.internal.impl.InternalFactoryImpl.init(InternalFactoryImpl.java:172)
      at org.apache.tuscany.sdo.model.internal.InternalFactory.<clinit>(InternalFactory.java:41)
      ... 47 more

      1. sdo-osgi-export-patch.txt
        2 kB
        Rajini Sivaram
      2. sdo-osgi.txt
        31 kB
        Rajini Sivaram

        Activity

        ant elder made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Amita Vadhavkar made changes -
        Fix Version/s Java-SDO-Next [ 12312262 ]
        Fix Version/s Java-SDO-1.1 [ 12312995 ]
        Rajini Sivaram made changes -
        Attachment sdo-osgi-export-patch.txt [ 12375358 ]
        Kelvin Goodson made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Kelvin Goodson made changes -
        Patch Info [Patch Available]
        Rajini Sivaram made changes -
        Attachment sdo-osgi.txt [ 12372521 ]
        ant elder made changes -
        Field Original Value New Value
        Fix Version/s Java-SDO-Mx [ 12312262 ]
        Bryan Hunt created issue -

          People

          • Assignee:
            Unassigned
            Reporter:
            Bryan Hunt
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development