/* | |
* Copyright 2015 Open Networking Laboratory | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package org.onosproject.pcepio.protocol.ver1; | |
import org.onosproject.pcepio.exceptions.PcepParseException; | |
import org.onosproject.pcepio.protocol.PcInitiatedLspRequest; | |
import org.onosproject.pcepio.protocol.PcepAttribute; | |
import org.onosproject.pcepio.protocol.PcepEndPointsObject; | |
import org.onosproject.pcepio.protocol.PcepEroObject; | |
import org.onosproject.pcepio.protocol.PcepLspObject; | |
import org.onosproject.pcepio.protocol.PcepSrpObject; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import com.google.common.base.MoreObjects; | |
import com.google.common.base.MoreObjects.ToStringHelper; | |
/** | |
* Provides PcInitiatedLspRequest for PCEP Initiate message. | |
* Reference : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03. | |
*/ | |
public class PcInitiatedLspRequestVer1 implements PcInitiatedLspRequest { | |
/* | |
* <PCE-initiated-lsp-request> ::= (<PCE-initiated-lsp-instantiation>|<PCE-initiated-lsp-deletion>) | |
<PCE-initiated-lsp-instantiation> ::= <SRP> | |
<LSP> | |
<END-POINTS> | |
<ERO> | |
[<attribute-list>] | |
<PCE-initiated-lsp-deletion> ::= <SRP> | |
<LSP> | |
*/ | |
protected static final Logger log = LoggerFactory.getLogger(PcInitiatedLspRequestVer1.class); | |
//PCEP SRP Object | |
private PcepSrpObject srpObject; | |
//PCEP LSP Object | |
private PcepLspObject lspObject; | |
//PCEP End Point Object | |
private PcepEndPointsObject endPointsObject; | |
//PCEP ERO Object | |
private PcepEroObject eroObject; | |
//PCEP Attribute list | |
private PcepAttribute pcepAttribute; | |
/** | |
* Default constructor. | |
*/ | |
public PcInitiatedLspRequestVer1() { | |
srpObject = null; | |
lspObject = null; | |
endPointsObject = null; | |
eroObject = null; | |
pcepAttribute = null; | |
} | |
/** | |
* Constructor to initialize all parameters of PC initiated lsp request. | |
* | |
* @param srpObject PCEP srp Object | |
* @param lspObject PCEP lsp object | |
* @param endPointsObject PCPE endpoints object | |
* @param eroObject PCEP ero object | |
* @param pcepAttribute PCEP attribute | |
*/ | |
public PcInitiatedLspRequestVer1(PcepSrpObject srpObject, PcepLspObject lspObject, | |
PcepEndPointsObject endPointsObject, PcepEroObject eroObject, PcepAttribute pcepAttribute) { | |
this.srpObject = srpObject; | |
this.lspObject = lspObject; | |
this.endPointsObject = endPointsObject; | |
this.eroObject = eroObject; | |
this.pcepAttribute = pcepAttribute; | |
} | |
@Override | |
public PcepSrpObject getSrpObject() { | |
return srpObject; | |
} | |
@Override | |
public PcepLspObject getLspObject() { | |
return lspObject; | |
} | |
@Override | |
public PcepEndPointsObject getEndPointsObject() { | |
return endPointsObject; | |
} | |
@Override | |
public PcepEroObject getEroObject() { | |
return eroObject; | |
} | |
@Override | |
public PcepAttribute getPcepAttribute() { | |
return pcepAttribute; | |
} | |
@Override | |
public void setSrpObject(PcepSrpObject srpobj) { | |
this.srpObject = srpobj; | |
} | |
@Override | |
public void setLspObject(PcepLspObject lspObject) { | |
this.lspObject = lspObject; | |
} | |
@Override | |
public void setEndPointsObject(PcepEndPointsObject endPointsObject) { | |
this.endPointsObject = endPointsObject; | |
} | |
@Override | |
public void setEroObject(PcepEroObject eroObject) { | |
this.eroObject = eroObject; | |
} | |
@Override | |
public void setPcepAttribute(PcepAttribute pcepAttribute) { | |
this.pcepAttribute = pcepAttribute; | |
} | |
/** | |
* Builder class for PC initiated lsp reuqest. | |
*/ | |
public static class Builder implements PcInitiatedLspRequest.Builder { | |
private boolean bIsSRPObjectSet = false; | |
private boolean bIsLSPObjectSet = false; | |
private boolean bIsEndPointsObjectSet = false; | |
private boolean bIsEROObjectSet = false; | |
private boolean bIsPcepAttributeSet = false; | |
private boolean bIsbRFlagSet = false; | |
//PCEP SRP Object | |
private PcepSrpObject srpObject; | |
//PCEP LSP Object | |
private PcepLspObject lspObject; | |
//PCEP End Point Object | |
private PcepEndPointsObject endPointsObject; | |
//PCEP ERO Object | |
private PcepEroObject eroObject; | |
//PCEP Attribute list | |
private PcepAttribute pcepAttribute; | |
@Override | |
public PcInitiatedLspRequest build() throws PcepParseException { | |
//PCEP SRP Object | |
PcepSrpObject srpObject = null; | |
//PCEP LSP Object | |
PcepLspObject lspObject = null; | |
//PCEP End Point Object | |
PcepEndPointsObject endPointsObject = null; | |
//PCEP ERO Object | |
PcepEroObject eroObject = null; | |
//PCEP Attribute list | |
PcepAttribute pcepAttribute = null; | |
boolean bRFlag = false; | |
if (!this.bIsSRPObjectSet) { | |
throw new PcepParseException("Srp object NOT Set while building PcInitiatedLspRequest"); | |
} else { | |
srpObject = this.srpObject; | |
bRFlag = srpObject.getRFlag(); | |
} | |
if (bRFlag) { | |
this.bIsbRFlagSet = true; | |
} else { | |
this.bIsbRFlagSet = false; | |
} | |
if (!this.bIsLSPObjectSet) { | |
throw new PcepParseException("LSP Object NOT Set while building PcInitiatedLspRequest"); | |
} else { | |
lspObject = this.lspObject; | |
} | |
if (!this.bIsbRFlagSet) { | |
if (!this.bIsEndPointsObjectSet) { | |
throw new PcepParseException("EndPoints Object NOT Set while building PcInitiatedLspRequest"); | |
} else { | |
endPointsObject = this.endPointsObject; | |
} | |
if (!this.bIsEROObjectSet) { | |
throw new PcepParseException("ERO Object NOT Set while building PcInitiatedLspRequest"); | |
} else { | |
eroObject = this.eroObject; | |
} | |
if (bIsPcepAttributeSet) { | |
pcepAttribute = this.pcepAttribute; | |
} | |
} | |
return new PcInitiatedLspRequestVer1(srpObject, lspObject, endPointsObject, eroObject, pcepAttribute); | |
} | |
@Override | |
public PcepSrpObject getSrpObject() { | |
return this.srpObject; | |
} | |
@Override | |
public PcepLspObject getLspObject() { | |
return this.lspObject; | |
} | |
@Override | |
public PcepEndPointsObject getEndPointsObject() { | |
return this.endPointsObject; | |
} | |
@Override | |
public PcepEroObject getEroObject() { | |
return this.eroObject; | |
} | |
@Override | |
public PcepAttribute getPcepAttribute() { | |
return this.pcepAttribute; | |
} | |
@Override | |
public Builder setSrpObject(PcepSrpObject srpobj) { | |
this.srpObject = srpobj; | |
this.bIsSRPObjectSet = true; | |
return this; | |
} | |
@Override | |
public Builder setLspObject(PcepLspObject lspObject) { | |
this.lspObject = lspObject; | |
this.bIsLSPObjectSet = true; | |
return this; | |
} | |
@Override | |
public Builder setEndPointsObject(PcepEndPointsObject endPointsObject) { | |
this.endPointsObject = endPointsObject; | |
this.bIsEndPointsObjectSet = true; | |
return this; | |
} | |
@Override | |
public Builder setEroObject(PcepEroObject eroObject) { | |
this.eroObject = eroObject; | |
this.bIsEROObjectSet = true; | |
return this; | |
} | |
@Override | |
public Builder setPcepAttribute(PcepAttribute pcepAttribute) { | |
this.pcepAttribute = pcepAttribute; | |
this.bIsPcepAttributeSet = true; | |
return this; | |
} | |
} | |
@Override | |
public String toString() { | |
ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()); | |
toStrHelper.add("SrpObject", srpObject).add("LspObject", lspObject); | |
if (endPointsObject instanceof PcepEndPointsObject) { | |
toStrHelper.add("EndPointObject", endPointsObject); | |
} | |
if (eroObject instanceof PcepEroObject) { | |
toStrHelper.add("EroObject", eroObject); | |
} | |
if (pcepAttribute instanceof PcepAttribute) { | |
toStrHelper.add("PcepAttribute", pcepAttribute); | |
} | |
return toStrHelper.toString(); | |
} | |
} |