X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdbcapi%2Fmodel%2FDR_Sub.java;h=9b6e2d74b5d654094475c1dd5904c23545964148;hb=d6ac6f8b10e90411dd650d6f7a9ee51179e39bfc;hp=5a768c5fcc5b4d17dece0e1c6ffd2b7be30b655a;hpb=8f54f37825746cf82b33a21ff356950eb682d290;p=dmaap%2Fdbcapi.git diff --git a/src/main/java/org/onap/dmaap/dbcapi/model/DR_Sub.java b/src/main/java/org/onap/dmaap/dbcapi/model/DR_Sub.java index 5a768c5..9b6e2d7 100644 --- a/src/main/java/org/onap/dmaap/dbcapi/model/DR_Sub.java +++ b/src/main/java/org/onap/dmaap/dbcapi/model/DR_Sub.java @@ -42,32 +42,13 @@ public class DR_Sub extends DmaapObject { private boolean use100; private boolean suspended; private String owner; + private boolean guaranteedDelivery; + private boolean guaranteedSequence; + private boolean privilegedSubscriber; - public String getOwner() { - return owner; - } - - public void setOwner(String owner) { - this.owner = owner; - } - - public boolean isSuspended() { - return suspended; - } - - public void setSuspended(boolean suspended) { - this.suspended = suspended; - } - - - - public boolean isUse100() { - return use100; - } - - public void setUse100(boolean use100) { - this.use100 = use100; - } + // NOTE: the following fields are optional in the API but not stored in the DB + private String feedName; + private String feedVersion; public DR_Sub() { @@ -107,13 +88,32 @@ public class DR_Sub extends DmaapObject { this.setOwner( (String) jsonObj.get("subscriber")); this.setSuspended( (boolean) jsonObj.get("suspend")); - JSONObject links = (JSONObject) jsonObj.get("links"); - String url = (String) links.get("feed"); - this.setFeedId( url.substring( url.lastIndexOf('/')+1, url.length() )); - url = (String) links.get("self"); - this.setSubId( url.substring( url.lastIndexOf('/')+1, url.length() )); - logger.info( "feedid="+ this.getFeedId() ); - this.setLogURL( (String) links.get("log") ); + try { + JSONObject links = (JSONObject) jsonObj.get("links"); + String url = (String) links.get("feed"); + this.setFeedId( url.substring( url.lastIndexOf('/')+1, url.length() )); + url = (String) links.get("self"); + this.setSubId( url.substring( url.lastIndexOf('/')+1, url.length() )); + logger.info( "feedid="+ this.getFeedId() ); + this.setLogURL( (String) links.get("log") ); + } catch (NullPointerException npe ) { + + } + try { + this.setGuaranteedDelivery( (boolean) jsonObj.get("guaranteed_delivery")); + } catch( NullPointerException npe ) { + this.setGuaranteedDelivery(false); + } + try { + this.setGuaranteedSequence( (boolean) jsonObj.get("guaranteed_sequence")); + } catch( NullPointerException npe ) { + this.setGuaranteedSequence(false); + } + try { + this.setPrivilegedSubscriber((boolean) jsonObj.get("privilegedSubscriber")); + } catch( NullPointerException npe ) { + this.setPrivilegedSubscriber(false); + } JSONObject del = (JSONObject) jsonObj.get("delivery"); this.setDeliveryURL( (String) del.get("url") ); @@ -121,10 +121,38 @@ public class DR_Sub extends DmaapObject { this.setUserpwd( (String) del.get( "password")); this.setUse100((boolean) del.get( "use100")); + + this.setStatus( DmaapObject_Status.VALID ); logger.info( "new DR_Sub returning"); } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public boolean isSuspended() { + return suspended; + } + + public void setSuspended(boolean suspended) { + this.suspended = suspended; + } + + + + public boolean isUse100() { + return use100; + } + + public void setUse100(boolean use100) { + this.use100 = use100; + } public String getDcaeLocationName() { return dcaeLocationName; @@ -183,13 +211,80 @@ public class DR_Sub extends DmaapObject { } + public boolean isGuaranteedDelivery() { + return guaranteedDelivery; + } + + public void setGuaranteedDelivery(boolean guaranteedDelivery) { + this.guaranteedDelivery = guaranteedDelivery; + } + + public boolean isGuaranteedSequence() { + return guaranteedSequence; + } + + public void setGuaranteedSequence(boolean guaranteedSequence) { + this.guaranteedSequence = guaranteedSequence; + } + + public boolean isPrivilegedSubscriber() { + return privilegedSubscriber; + } + + public void setPrivilegedSubscriber(boolean privilegedSubscriber) { + this.privilegedSubscriber = privilegedSubscriber; + } + + + + public String getFeedName() { + return feedName; + } + + public void setFeedName(String feedName) { + this.feedName = feedName; + } + + public String getFeedVersion() { + return feedVersion; + } + + public void setFeedVersion(String feedVersion) { + this.feedVersion = feedVersion; + } - public byte[] getBytes() { + public byte[] getBytes(String provApi) { + if ( "AT&T".equals(provApi)) { + return toProvJSONforATT().getBytes(StandardCharsets.UTF_8); + } return toProvJSON().getBytes(StandardCharsets.UTF_8); } - // returns the DR_Sub object in JSON that conforms to DR Prov Server expectations - public String toProvJSON() { + // returns the DR_Sub object in JSON that conforms to ONAP DR Prov Server expectations + public String toProvJSON() { + // this is the original DR API that was contributed to ONAP + String postJSON = String.format("{\"suspend\": %s, \"delivery\":" + + "{\"url\": \"%s\", \"user\": \"%s\", \"password\": \"%s\", \"use100\": %s }" + + ", \"metadataOnly\": %s, \"groupid\": \"%s\", \"follow_redirect\": %s " + + ", \"privilegedSubscriber\": %s " + + "}" + ,this.suspended + ,this.getDeliveryURL() + ,this.getUsername() + ,this.getUserpwd() + ,this.isUse100() + ,"false" + ,"0" + ,"true" + ,this.isPrivilegedSubscriber() + ); + logger.info( postJSON ); + return postJSON; + } + // returns the DR_Sub object in JSON that conforms to AT&T DR Prov Server expectations + // In Jan, 2019, the DR API used internally at AT&T diverged, so this function can be used in + // that runtime environment + public String toProvJSONforATT() { // in DR 3.0, API v2.1 a new groupid field is added. We are not using this required field so just set it to 0. // we send this regardless of DR Release because older versions of DR seem to safely ignore it // and soon those versions won't be around anyway... @@ -197,18 +292,27 @@ public class DR_Sub extends DmaapObject { // We are setting it to "true" because that is the general behavior desired in OpenDCAE. // But it is really a no-op for OpenDCAE because we've deployed DR with the SYSTEM-level parameter for FOLLOW_REDIRECTS set to true. // In the event we abandon that, then setting the sub attribute to true will be a good thing. + // Update Jan, 2019: added guaranteed_delivery and guaranteed_sequence with value false for + // backwards compatibility // TODO: // - introduce Bus Controller API support for these attributes // - store the default values in the DB - String postJSON = String.format("{\"suspend\": \"%s\", \"delivery\": {\"url\": \"%s\", \"user\": \"%s\", \"password\": \"%s\", \"use100\": \"%s\"}, \"metadataOnly\": %s, \"groupid\": \"%s\", \"follow_redirect\": %s }", - this.suspended, - this.getDeliveryURL(), - this.getUsername(), - this.getUserpwd(), - this.isUse100(), - "false", - "0", - "true"); + String postJSON = String.format("{\"suspend\": %s, \"delivery\":" + + "{\"url\": \"%s\", \"user\": \"%s\", \"password\": \"%s\", \"use100\": %s}" + + ", \"metadataOnly\": %s, \"groupid\": \"%s\", \"follow_redirect\": %s " + + ", \"guaranteed_delivery\": %s, \"guaranteed_sequence\": %s" + + "}" + ,this.suspended + ,this.getDeliveryURL() + ,this.getUsername() + ,this.getUserpwd() + ,this.isUse100() + ,"false" + ,"0" + ,"true" + ,this.isGuaranteedDelivery() + ,this.isGuaranteedSequence() + ); logger.info( postJSON ); return postJSON;