I am developing rest plugin for jira atlassian and I have this kind of problem. every time I want that my apis are showing up I need to add empty constructor to my new api in this format
<span>import</span><span> javax</span><span>.</span><span>ws</span><span>.</span><span>rs</span><span>.</span><span>Path</span><span>;</span>
<span>import</span><span> javax</span><span>.</span><span>ws</span><span>.</span><span>rs</span><span>.</span><span>Produces</span><span>;</span>
<span>import</span><span> javax</span><span>.</span><span>ws</span><span>.</span><span>rs</span><span>.</span><span>core</span><span>.</span><span>MediaType</span><span>;</span>
<span>import</span><span> javax</span><span>.</span><span>ws</span><span>.</span><span>rs</span><span>.</span><span>core</span><span>.</span><span>Response</span><span>;</span>
<span>@Path</span><span>(</span><span>"/import-issues"</span><span>)</span>
<span>public</span> <span>class</span> <span>ImportIssuesRestResource</span> <span>{</span>
<span>private</span> <span>ImportIssuesAction</span><span> importIssuesAction</span><span>;</span>
<span>public</span> <span>ImportIssuesRestResource</span><span>()</span> <span>{</span>
<span>}</span>
<span>public</span> <span>ImportIssuesRestResource</span><span>(</span><span>final</span> <span>ImportIssuesAction</span><span> importIssuesAction</span><span>)</span> <span>{</span>
<span>this</span><span>.</span><span>importIssuesAction </span><span>=</span><span> importIssuesAction</span><span>;</span>
<span>}</span>
<span>@GET</span>
<span>@Path</span><span>(</span><span>"issueNumber"</span><span>)</span>
<span>@Produces</span><span>(</span><span>MediaType</span><span>.</span><span>APPLICATION_JSON</span><span>)</span>
<span>public</span> <span>Response</span><span> getFields</span><span>()</span> <span>{</span>
<span>return</span> <span>Response</span><span>.</span><span>ok</span><span>().</span><span>entity</span><span>(</span><span>importIssuesAction</span><span>.</span><span>getIssueNumber</span><span>()).</span><span>build</span><span>();</span>
<span>}</span>
<span>}</span>
However what I want is something like this
<span>@Scanned</span>
<span>@Path</span><span>(</span><span>"/import-issues"</span><span>)</span>
<span>public</span> <span>class</span> <span>ImportIssuesRestResource</span><span>{</span>
<span>private</span> <span>ImportIssuesAction</span><span> importIssuesAction</span><span>;</span>
<span>@Inject</span>
<span>public</span> <span>ImportIssuesRestResource</span><span>(</span><span>final</span> <span>ImportIssuesAction</span><span> importIssuesAction</span><span>)</span> <span>{</span>
<span>this</span><span>.</span><span>importIssuesAction </span><span>=</span><span> importIssuesAction</span><span>;</span>
<span>}</span>
<span>@GET</span>
<span>@Path</span><span>(</span><span>"issueNumber"</span><span>)</span>
<span>@Produces</span><span>(</span><span>MediaType</span><span>.</span><span>APPLICATION_JSON</span><span>)</span>
<span>public</span> <span>Response</span><span> getFields</span><span>()</span> <span>{</span>
<span>return</span> <span>Response</span><span>.</span><span>ok</span><span>().</span><span>entity</span><span>(</span><span>importIssuesAction</span><span>.</span><span>getIssueNumber</span><span>()).</span><span>build</span><span>();</span>
<span>}</span>
<span>}</span>with injected constructor and @Scanned. I get this error when I am using the second version of code with @Named in ImportIssuesAction. I have tried also @Scanned.
<span>Error</span><span> creating bean with name </span><span>'rest.ImportIssuesRestResource'</span><span>:</span> <span>Unsatisfied</span><span> dependency expressed through constructor argument with index </span><span>0</span><span> of type </span><span>[</span><span>action</span><span>.</span><span>ImportIssuesAction</span><span>]</span><span> found </span><span>for</span><span> dependency</span><span>:</span><span> expected at least </span><span>1</span><span> bean which qualifies as autowire candidate </span><span>for</span> <span>this</span><span> dependency</span><span>.</span> <span>Dependency</span><span> annotations</span><span>:</span> <span>{}</span> The others custom implemented working api have similar injected constructor and using annotations @Scanned or @Named. I need my api real-time getting information from class. However currently I am getting NullPointerException from empty constructor in rest of my public getter getIssueNumber. When I am using @Named @Inject combination the all of my custom apis are hidden. I have tried also
<component-import key="importIssuesAction" interface="sk.eea.jira.telecom.extension.action."/>
in atlassian-plugin.xml. In atlassian-plugin I have also
<rest name="CSMT Rest Resource" key="csmt-rest-resource" path="/csmt" version="1.0">
<description>CSMT Rest Resources</description>
</rest>
Can somebody help with implementing custom REST API?