Active Objects in Jira 7.2.2 plugin circular dependency error

Hello,
I am trying to build a JIRA 7.2.2 plugin that uses Active Objects to store some json and other data. Before getting to save operations though, I get this error:

[INFO] [talledLocalContainer] com.atlassian.activeobjects.internal.ActiveObjectsInitException: bundle [com.seguira.jira.
seguira-test-automation-for-jira-plugin]
[INFO] [talledLocalContainer] at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects$1$1$1.call(TenantAwareActiv
eObjects.java:95)
[INFO] [talledLocalContainer] at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects$1$1$1.call(TenantAwareActiv
eObjects.java:86)
[INFO] [talledLocalContainer] at com.atlassian.sal.core.executor.ThreadLocalDelegateCallable.call(ThreadLocalDelegateC
allable.java:38)
[INFO] [talledLocalContainer] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[INFO] [talledLocalContainer] at java.lang.Thread.run(Thread.java:745)
[INFO] [talledLocalContainer] Caused by: java.lang.RuntimeException: Circular dependency detected
[INFO] [talledLocalContainer] at net.java.ao.schema.SchemaGenerator.parseDDL(SchemaGenerator.java:143)
[INFO] [talledLocalContainer] at net.java.ao.schema.SchemaGenerator.generateImpl(SchemaGenerator.java:106)
[INFO] [talledLocalContainer] at net.java.ao.schema.SchemaGenerator.migrate(SchemaGenerator.java:84)
[INFO] [talledLocalContainer] at net.java.ao.EntityManager.migrate(EntityManager.java:128)
[INFO] [talledLocalContainer] at com.atlassian.activeobjects.internal.EntityManagedActiveObjects.migrate(EntityManaged
ActiveObjects.java:51)
[INFO] [talledLocalContainer] at com.atlassian.activeobjects.internal.AbstractActiveObjectsFactory$1.doInTransaction(A
bstractActiveObjectsFactory.java:72)
[INFO] [talledLocalContainer] at com.atlassian.sal.core.transaction.HostContextTransactionTemplate$1.doInTransaction(H
ostContextTransactionTemplate.java:21)
[INFO] [talledLocalContainer] at com.atlassian.jira.DefaultHostContextAccessor.doInTransaction(DefaultHostContextAcces
sor.java:34)
[INFO] [talledLocalContainer] … 2 filtered
[INFO] [talledLocalContainer] at java.lang.reflect.Method.invoke(Method.java:498)
[INFO] [talledLocalContainer] at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextCl
assLoaderSettingInvocationHandler.java:26)
[INFO] [talledLocalContainer] at com.sun.proxy.$Proxy125.doInTransaction(Unknown Source)
[INFO] [talledLocalContainer] … 2 filtered
[INFO] [talledLocalContainer] at java.lang.reflect.Method.invoke(Method.java:498)
[INFO] [talledLocalContainer] at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvo
cationHandler.invoke(HostComponentFactoryBean.java:136)
[INFO] [talledLocalContainer] at com.sun.proxy.$Proxy125.doInTransaction(Unknown Source)
[INFO] [talledLocalContainer] at com.atlassian.sal.core.transaction.HostContextTransactionTemplate.execute(HostContext
TransactionTemplate.java:18)
[INFO] [talledLocalContainer] … 2 filtered
[INFO] [talledLocalContainer] at java.lang.reflect.Method.invoke(Method.java:498)
[INFO] [talledLocalContainer] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java
:317)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doI
nvoke(ServiceInvoker.java:56)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.inv
oke(ServiceInvoker.java:60)
[INFO] [talledLocalContainer] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethod
Invocation.java:179)
[INFO] [talledLocalContainer] at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(Delegatin
gIntroductionInterceptor.java:133)
[INFO] [talledLocalContainer] at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIn
troductionInterceptor.java:121)
[INFO] [talledLocalContainer] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethod
Invocation.java:179)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeU
nprivileged(ServiceTCCLInterceptor.java:70)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(
ServiceTCCLInterceptor.java:53)
[INFO] [talledLocalContainer] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethod
Invocation.java:179)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke
(LocalBundleContextAdvice.java:57)
[INFO] [talledLocalContainer] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethod
Invocation.java:179)
[INFO] [talledLocalContainer] at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(Delegatin
gIntroductionInterceptor.java:133)
[INFO] [talledLocalContainer] at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIn
troductionInterceptor.java:121)
[INFO] [talledLocalContainer] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethod
Invocation.java:179)
[INFO] [talledLocalContainer] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:2
07)
[INFO] [talledLocalContainer] at com.sun.proxy.$Proxy870.execute(Unknown Source)
[INFO] [talledLocalContainer] at com.atlassian.activeobjects.internal.AbstractActiveObjectsFactory.create(AbstractActi
veObjectsFactory.java:72)
[INFO] [talledLocalContainer] at com.atlassian.activeobjects.internal.DelegatingActiveObjectsFactory.create(Delegating
ActiveObjectsFactory.java:32)
[INFO] [talledLocalContainer] at com.atlassian.activeobjects.osgi.TenantAwareActiveObjects$1$1$1.call(TenantAwareActiv
eObjects.java:91)
[INFO] [talledLocalContainer] … 6 more

Here are the relevant pom.xml blocks, note i have only pasted relevant blocks, they are not under the same tag in my actual file:

            <properties>
                <jira.version>7.2.2</jira.version>
                <amps.version>6.2.11</amps.version>
                <plugin.testrunner.version>1.2.3</plugin.testrunner.version>
                <!-- TestKit version 6.x for JIRA 6.x -->
                <testkit.version>6.3.11</testkit.version>
            </properties>
                <dependency>
                    <groupId>com.atlassian.activeobjects</groupId>
                    <artifactId>activeobjects-plugin</artifactId>
                    <version>1.2.3</version>
                    <scope>provided</scope>
                </dependency>

atlassian-plugin.xml

    <ao key="ao-module">
          <description>The module configuring the Active Objects service used by this plugin</description>
          <entity>com.seguira.jira.plugin.ta.db.TestCase</entity>
          <entity>com.seguira.jira.plugin.ta.db.TestGraph</entity>
      </ao>
      <component-import key="applicationProperties," interface="com.atlassian.jira.config.properties.ApplicationProperties"/>
      <component-import key="ao" name="Active Objects components" interface="com.atlassian.activeobjects.external.ActiveObjects">
        <description>Access to the Active Objects service</description>
      </component-import>
      <component key="txnAnnotationProcessor" class="com.atlassian.activeobjects.external.TransactionalAnnotationProcessor"/>
      <component key="graphService" class="com.seguira.jira.plugin.ta.service.GraphServiceImpl">
          <description>Provides graph services.</description>
          <interface>com.seguira.jira.plugin.ta.service.GraphService</interface>
      </component>  

GraphServiceImpl.java:
public class GraphServiceImpl implements GraphService{

private final ActiveObjects ao;
private final Logger LOGGER = Logger.getLogger(GraphServiceImpl.class.getName());

public GraphServiceImpl(ActiveObjects ao) {
    this.ao = ao;
}

And finally, the REST class:
@Path("/message")
public class GraphRest {

private final GraphService graphService;

public GraphRest(GraphService graphService)
{
this.graphService = graphService;
}

I appreciate the help, thanks!

check the dependency relationship with com.seguira.jira.seguira-test-automation-for-jira-plugin

1 Like