Interfaces added for PCEP messages and PCEP Controller

Change-Id: Id678b6832b42bcf4a437322996244d224c4052d0
diff --git a/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java b/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java
new file mode 100755
index 0000000..e9eb125
--- /dev/null
+++ b/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java
@@ -0,0 +1,241 @@
+/*
+ * 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;
+
+/**
+ * Abstraction of an Message factory providing Builder functions to PCEP Messages and Objects.
+ *
+ */
+public interface PcepFactory {
+
+    /**
+     * To get Builder Object for Open Message.
+     *
+     * @return Builder Object for Open Message
+     */
+    PcepOpenMsg.Builder buildOpenMsg();
+
+    /**
+     * To get Builder Object for Open Object.
+     *
+     * @return Builder Object for Open Object
+     */
+    PcepOpenObject.Builder buildOpenObject();
+
+    /**
+     * To get Builder Object for Keepalive Message.
+     *
+     * @return Builder Object for Keepalive Message
+     */
+    PcepKeepaliveMsg.Builder buildKeepaliveMsg();
+
+    /**
+     * To get Builder Object for Close Message.
+     *
+     * @return Builder Object for Close Message
+     */
+    PcepCloseMsg.Builder buildCloseMsg();
+
+    /**
+     * To get Builder Object for Report Message.
+     *
+     * @return Builder Object for Report Message
+     */
+    PcepReportMsg.Builder buildReportMsg();
+
+    /**
+     * To get Builder Object for Update Message.
+     *
+     * @return Builder Object for Update Message
+     */
+    PcepUpdateMsg.Builder buildUpdateMsg();
+
+    /**
+     * To get Builder Object for Initiate Message.
+     *
+     * @return Builder Object for Initiate Message
+     */
+    PcepInitiateMsg.Builder buildPcepInitiateMsg();
+
+    /**
+     * To get Builder Object for LSP Object.
+     *
+     * @return Builder Object for LSP Object
+     */
+    PcepLspObject.Builder buildLspObject();
+
+    /**
+     * To get Builder Object for SRP Object.
+     *
+     * @return Builder Object for SRP Object
+     */
+    PcepSrpObject.Builder buildSrpObject();
+
+    /**
+     * To get Builder Object for EndPoints Object.
+     *
+     * @return Builder Object for EndPoints Object
+     */
+    PcepEndPointsObject.Builder buildEndPointsObject();
+
+    /**
+     * To get Builder Object for ERO Object.
+     *
+     * @return Builder Object for ERO Object
+     */
+    PcepEroObject.Builder buildEroObject();
+
+    /**
+     * To get Builder Object for RRO Object.
+     *
+     * @return Builder Object for RRO Object
+     */
+    PcepRroObject.Builder buildRroObject();
+
+    /**
+     * To get Builder Object for LSPA Object.
+     *
+     * @return Builder Object for LSPA Object
+     */
+    PcepLspaObject.Builder buildLspaObject();
+
+    /**
+     * To get Builder Object for IRO Object.
+     *
+     * @return Builder Object for IRO Object
+     */
+    PcepIroObject.Builder buildIroObject();
+
+    /**
+     * To get Builder Object for METRIC Object.
+     *
+     * @return Builder Object for METRIC Object
+     */
+    PcepMetricObject.Builder buildMetricObject();
+
+    /**
+     * To get Builder Object for Bandwidth Object.
+     *
+     * @return Builder Object for Bandwidth Object
+     */
+    PcepBandwidthObject.Builder buildBandwidthObject();
+
+    /**
+     * Returns PCEP Message Reader.
+     *
+     * @return PCEP Message Reader
+     */
+    PcepMessageReader<PcepMessage> getReader();
+
+    /**
+     * Returns PCEP version.
+     *
+     * @return PCEP version
+     */
+    PcepVersion getVersion();
+
+    /**
+     * Returns PcepStateReport.
+     *
+     * @return PcepStateReport
+     */
+    PcepStateReport.Builder buildPcepStateReport();
+
+    /**
+     * Returns PcepUpdateRequest.
+     *
+     * @return PcepUpdateRequest
+     */
+    PcepUpdateRequest.Builder buildPcepUpdateRequest();
+
+    /**
+     * Returns PcInitiatedLspRequest.
+     *
+     * @return PcInitiatedLspRequest
+     */
+    PcInitiatedLspRequest.Builder buildPcInitiatedLspRequest();
+
+    /**
+     * Returns PcepMsgPath.
+     *
+     * @return PcepMsgPath
+     */
+    PcepMsgPath.Builder buildPcepMsgPath();
+
+    /**
+     * Return PcepAttribute list.
+     *
+     * @return PcepAttribute
+     */
+    PcepAttribute.Builder buildPcepAttribute();
+
+    /**
+     * To get Builder Object for LabelUpdate message.
+     *
+     * @return Builder Object for LabelUpdate message
+     */
+    PcepLabelUpdateMsg.Builder buildPcepLabelUpdateMsg();
+
+    /**
+     * To get Builder Object for PcepLabelUpdate Object.
+     *
+     * @return Builder Object for PcepLabelUpdate Object
+     */
+    PcepLabelUpdate.Builder buildPcepLabelUpdateObject();
+
+    /**
+     * To get Builder Object for PcepLabel Object.
+     *
+     * @return Builder Object for PcepLabel Object
+     */
+    PcepLabelObject.Builder buildLabelObject();
+
+    /**
+     * To get Builder Object for Error Message.
+     *
+     * @return Builder Object for Error Message
+     */
+    PcepErrorMsg.Builder buildPcepErrorMsg();
+
+    /**
+     * To get Builder Object for Error Object.
+     *
+     * @return Builder Object for Error Object
+     */
+    PcepErrorObject.Builder buildPcepErrorObject();
+
+    /**
+     * To get Builder Object for FecIpv4Adjacency.
+     *
+     * @return Builder Object for FecIpv4Adjacency
+     */
+    PcepFecObjectIPv4Adjacency.Builder buildFecIpv4Adjacency();
+
+    /**
+     * To get Builder Object for ErrorInfo.
+     *
+     * @return Builder Object for ErrorInfo
+     */
+    PcepErrorInfo.Builder buildPcepErrorInfo();
+
+    /**
+     * To get Builder Object for PcepError.
+     *
+     * @return Builder Object for PcepError
+     */
+    PcepError.Builder buildPcepError();
+}