Hei,
Tämä koodi ei toimi. Miten korjata?
if (jsonDependenciesQuery.getJSONArray("added")==null) { jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("removed"); .. koodia .. } else { .. koodia .. }
Asiaa paremmin tuntematta, mutta tulisiko olla muodossa: jsonDependenciesArray[]
Oletan, että käytössä on javax.json ja että noilla muuttujilla on järkevät tyypit. Yritä jatkossa kysyä niin, että kysymyksessä on kaikki ratkaisuun olennainen tieto.
Auttaa, jos esim. kirjoittaa metodien nimet oikein: Json (esim. getJsonArray) eikä JSON.
Ongelma varmaan löytyisi myös virheilmoituksia katsomalla.
Delphi_Object kirjoitti:
Asiaa paremmin tuntematta, mutta tulisiko olla muodossa: jsonDependenciesArray[]
Suosittelen jättämään väliin kysymykset, joista ei ole mitään hajua.
Hei,
Koodista ei tule mitään virheilmoitusta.
Tarkoitus on siis JIRA:ssa poista issue linkitys functiolla:
https://docs.atlassian.com/jira/server/com/
Eli siis jos kerran kysymkseni on epäselvä niin yritän nyt selventää sitä.
Eli JavaScript-käyttöliittymäframeworkki postittaa palelimelle seuraavat Json-koodit:
{"type":"sync","requestId":1488179775266,"dependencies":{"removed":[{"Id":11902}]}} {"type":"sync","requestId":1488180122275,"dependencies":{"added":[{"$PhantomId":"ext-record-549","From":15505,"To":15509,"Type":2,"Lag":0,"Cls":"","LagUnit":"d"}]},"tasks":{"updated":[{"EndDate":"2017-03-17T16:38:25","Duration":4.693344907407408,"StartDate":"2017-03-13T00:00:00","Id":15509,"parentId":null}]}}
Eli pitäisi tedä jos-lause, joka tunnistaa kumpi Json-koodeista on postitettu.
Millä tavalla tuo koodisi siis ei toimi?
Grez kirjoitti:
Millä tavalla tuo koodisi siis ei toimi?
En tiedä kun en saa noita System.out.println("Removed works!"); debuggauksia näkymään catalina.out-tiedostossa. Mutta palvelin vastaa tyhjällä JSON-koodilla.
try { jsonDependenciesQuery = new JSONObject(query); jsonDependenciesQuery = jsonDependenciesQuery.getJSONObject("dependencies"); if (jsonDependenciesQuery.getJSONArray("added")==null) { System.out.println("Removed works!"); jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("removed"); for (int iii = 0; iii < jsonDependenciesArray.length(); iii++) { try { jsonDependenciesQuery = jsonDependenciesArray.getJSONObject(iii); long il = jsonDependenciesQuery.getLong("Id"); System.out.println(il); IssueLink issueLink = issueLinkManager.getIssueLink(il); issueLinkManager.removeIssueLink(issueLink, targetUser); } catch (IllegalArgumentException iae) { iae.printStackTrace(); System.out.println("Got an JSONException: " + iae.getCause()); value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "false")); } } value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "true")); } else { System.out.println("Added works!"); jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("added"); for (int ii = 0; ii < jsonDependenciesArray.length(); ii++) { try { jsonDependenciesQuery = jsonDependenciesArray.getJSONObject(ii); from = jsonDependenciesQuery.getLong("From"); to = jsonDependenciesQuery.getLong("To"); type = jsonDependenciesQuery.getLong("Type"); if (type==3) { //Finish-to-Finish issueLinkType = issueLinkTypeManager.getIssueLinkTypesByName("Finish-to-Finish"); for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) { IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next(); linkTypeId = dependency.getId(); } } else if (type==2) { //Finish-to-Start issueLinkType = issueLinkTypeManager.getIssueLinkTypesByName("Finish-to-Start"); for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) { IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next(); linkTypeId = dependency.getId(); } } else if (type==1) { //Start-to-Finish issueLinkType = issueLinkTypeManager.getIssueLinkTypesByName("Start-to-Finish"); for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) { IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next(); linkTypeId = dependency.getId(); } } else if (type==0) { //Start-to-Start issueLinkType = issueLinkTypeManager.getIssueLinkTypesByName("Start-to-Start"); for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) { IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next(); linkTypeId = dependency.getId(); } } else { } List<IssueLink> allOutIssueLink = ComponentAccessor.getIssueLinkManager().getOutwardLinks(from); for (Iterator<IssueLink> outIterator = allOutIssueLink.iterator(); outIterator.hasNext();) { IssueLink issueLink = (IssueLink) outIterator.next(); sequence = issueLink.getSequence(); } try { sequence = sequence + 1; issueLinkManager.createIssueLink(from, to, linkTypeId, sequence, targetUser); } catch (CreateException err) { err.printStackTrace(); System.out.println("Got an JSONException: " + err.getCause()); value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "false")); //System.out.println("Got an ParseException: " + e.getCause()); msg = "Got an JSONException: " + err.getCause(); } } catch (JSONException err) { err.printStackTrace(); System.out.println("Got an JSONException: " + err.getCause()); value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "false")); //System.out.println("Got an ParseException: " + e.getCause()); msg = "Got an JSONException: " + err.getCause(); } } } } catch (JSONException err) { //err.printStackTrace(); //System.out.println("Got an JSONException: " + err.getCause()); //value = Boolean.valueOf(!"false" //.equalsIgnoreCase((String) "false")); //System.out.println("Got an ParseException: " + e.getCause()); //msg = "Got an JSONException: " + err.getCause(); }
Muutin nyt koodia a vain Issue Linkkien deletointi toimii mutta muut ei toimi. Eli jsonDependenciesQuery.getJSONArray("removed")==null koodilla ei ole null-arvoa.
try { jsonDependenciesQuery = new JSONObject(query); jsonDependenciesQuery = jsonDependenciesQuery.getJSONObject("dependencies"); if (jsonDependenciesQuery.getJSONArray("removed")!=null) { System.out.println("Removed works!"); jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("removed"); for (int iii = 0; iii < jsonDependenciesArray.length(); iii++) { try { jsonDependenciesQuery = jsonDependenciesArray.getJSONObject(iii); long il = jsonDependenciesQuery.getLong("Id"); System.out.println(il); IssueLink issueLink = issueLinkManager.getIssueLink(il); issueLinkManager.removeIssueLink(issueLink, targetUser); value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "true")); } catch (IllegalArgumentException iae) { iae.printStackTrace(); System.out.println("Got an JSONException: " + iae.getCause()); value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "false")); msg = "Got an JSONException: " + iae.getCause(); } } } else if (jsonDependenciesQuery.getJSONArray("removed")==null) { System.out.println("Added works!"); jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("added"); for (int ii = 0; ii < jsonDependenciesArray.length(); ii++) { try { jsonDependenciesQuery = jsonDependenciesArray.getJSONObject(ii); from = jsonDependenciesQuery.getLong("From"); to = jsonDependenciesQuery.getLong("To"); type = jsonDependenciesQuery.getLong("Type"); if (type==3) { //Finish-to-Finish issueLinkType = issueLinkTypeManager.getIssueLinkTypesByName("Finish-to-Finish"); for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) { IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next(); linkTypeId = dependency.getId(); } } else if (type==2) { //Finish-to-Start issueLinkType = issueLinkTypeManager.getIssueLinkTypesByName("Finish-to-Start"); for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) { IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next(); linkTypeId = dependency.getId(); } } else if (type==1) { //Start-to-Finish issueLinkType = issueLinkTypeManager.getIssueLinkTypesByName("Start-to-Finish"); for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) { IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next(); linkTypeId = dependency.getId(); } } else if (type==0) { //Start-to-Start issueLinkType = issueLinkTypeManager.getIssueLinkTypesByName("Start-to-Start"); for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) { IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next(); linkTypeId = dependency.getId(); } } else { } List<IssueLink> allOutIssueLink = ComponentAccessor.getIssueLinkManager().getOutwardLinks(from); for (Iterator<IssueLink> outIterator = allOutIssueLink.iterator(); outIterator.hasNext();) { IssueLink issueLink = (IssueLink) outIterator.next(); sequence = issueLink.getSequence(); } try { sequence = sequence + 1; issueLinkManager.createIssueLink(from, to, linkTypeId, sequence, targetUser); } catch (CreateException err) { err.printStackTrace(); System.out.println("Got an JSONException: " + err.getCause()); value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "false")); //System.out.println("Got an ParseException: " + e.getCause()); msg = "Got an JSONException: " + err.getCause(); } } catch (JSONException err) { err.printStackTrace(); System.out.println("Got an JSONException: " + err.getCause()); value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "false")); //System.out.println("Got an ParseException: " + e.getCause()); msg = "Got an JSONException: " + err.getCause(); } } } else { } } catch (JSONException err) { //err.printStackTrace(); //System.out.println("Got an JSONException: " + err.getCause()); value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "false")); //System.out.println("Got an ParseException: " + e.getCause()); msg = "Got an JSONException: " + err.getCause(); } try { json = new JSONObject() .put("success", value) .put("message", msg) .toString(); } catch (JSONException err) { err.printStackTrace(); System.out.println("Got an JSONException: " + err.getCause()); } resp.setContentType("application/json"); resp.getWriter().write(json); resp.getWriter().close(); }
Sain nyt koodin toimimaan. Kiitos siitä, että yrititte auttaa..
koititko debugata koodia lainkaan? Jos siis et tiedä miten koodisi todellisuudessa käyttäytyy, vaan olet konsoliviestien varassa. Debugilla tarkoitan siis sitä, että reaaliaikaisesti seurataan koodirivien suoritusta ohjelmointityökalullasi (Mitä sitten IDE:nä käytätkään, Eclipseä jne).
groovyb kirjoitti:
(03.03.2017 12:40:19): koititko debugata koodia lainkaan? Jos siis et...
Siis tämä on Tomcat-sovellus joten catalina.out-tiedostoon pitää nk. Dabukkaus tulostaa. Joo kyllä debukkasin.
...
Ei tarvitse. Kyllä niitä servlettejä voi ihan tavallisesti debugata ilman mitään printtaamisia. Surkea video tämä seuraava, mutta ihan kelaamalla jo näin että kyllä siellä ihan normaalisti debugataan breakpointeilla. Linkki: Youtube
Ihan googlettamalla Atlassian JSONObject löytyy dokumentaatiota, jonka mukaan puuttuvan arvon hakemisesta heitetään poikkeus (JSONException) eikä palauteta null-arvoa. Olisiko tällä vaikutusta? Kannattaisiko tarkastaa arvon olemassaolo ensin isNull-metodilla?
Tykkään myös tuosta toistuvasta pätkästä:
value = Boolean.valueOf(!"false" .equalsIgnoreCase((String) "false"));
Onnea urallasi!
Aihe on jo aika vanha, joten et voi enää vastata siihen.