all: merge from official Eclipse branch
Change-Id: Iba1502617c1c401217471a52b15273ac4690ac1f
Signed-off-by: BONNARDEL Gregory <gbonnardel.ext@orange.com>
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/constants/DBEntities.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/constants/DBEntities.java
index 4d560f6..975cbe8 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/constants/DBEntities.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/constants/DBEntities.java
@@ -33,6 +33,7 @@
import org.eclipse.om2m.commons.entities.FlexContainerAnncEntity;
import org.eclipse.om2m.commons.entities.FlexContainerEntity;
import org.eclipse.om2m.commons.entities.LabelEntity;
+import org.eclipse.om2m.commons.entities.MgmtObjEntity;
import org.eclipse.om2m.commons.entities.PollingChannelEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
import org.eclipse.om2m.commons.entities.SubscriptionEntity;
@@ -432,13 +433,28 @@
public static final String LOCAL_RESOURCE_ID = "LOCAL_RESOURCE_ID";
public static final String ANNOUNCE_CSE_ID = "ANNOUNCE_CSE_ID";
-// // RegularResource-AccessControlPolicies
-// public static final String REGULARRESOURCE_ACP_JOIN = "REGULARRESOURCE_ACP_JOIN";
-// public static final String REGULARRESOURCE_JOINID = "REGULARRESOURCE_JOINID";
-//
-// // AnnouncedResource-AccessControlPolicies
-// public static final String ANNOUNCEDRESOURCE_ACP_JOIN = "REGULARRESOURCE_ACP_JOIN";
-// public static final String ANNOUNCEDRESOURCE_JOINID = "REGULARRESOURCE_JOINID";
+ // Announced MGMT OBJ
+ // AreaNetworkAnncInfo
+ public static final String ANIA_ACP_JOIN = "ANIA_ACP_JOIN";
+ public static final String ANIA_DAC_JOIN = "ANIA_DAC_JOIN";
+ public static final String ANIA_JOIN_ID = "ANIA_JOIN_ID";
+ public static final String ANIA_SUB_JOIN = "ANIA_SUB_JOIN";
+ public static final String ANIA_NOD_JOIN = "ANIA_NOD_JOIN";
+ public static final String ANIA_NODANNC_JOIN = "ANIA_NODANNC_JOIN";
+ // AreaNetworkAnncDeviceInfo
+ public static final String ANDIA_ACP_JOIN = "ANDIA_ACP_JOIN";
+ public static final String ANDIA_DAC_JOIN = "ANDIA_DAC_JOIN";
+ public static final String ANDIA_JOIN_ID = "ANDIA_JOIN_ID";
+ public static final String ANDIA_SUB_JOIN = "ANDIA_SUB_JOIN";
+ public static final String ANDIA_NOD_JOIN = "ANDIA_NOD_JOIN";
+ public static final String ANDIA_NODANNC_JOIN = "ANDIA_NODANNC_JOIN";
+ // AnncDeviceInfo
+ public static final String DVIA_ACP_JOIN = "DVIA_ACP_JOIN";
+ public static final String DVIA_DAC_JOIN = "DVIA_DAC_JOIN";
+ public static final String DVIA_JOIN_ID = "DVIA_JOIN_ID";
+ public static final String DVIA_SUB_JOIN = "DVIA_SUB_JOIN";
+ public static final String DVIA_NOD_JOIN = "DVIA_NOD_JOIN";
+ public static final String DVIA_NODANNC_JOIN = "DVIA_NODANNC_JOIN";
// DynamicAuthorisationConsultation DAC
public static final String DAC_JOINID = "DAC_JOINID";
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/constants/ShortName.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/constants/ShortName.java
index 008f302..37f91d6 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/constants/ShortName.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/constants/ShortName.java
@@ -379,7 +379,7 @@
// Attributes for Node
public static final String NODE_ID = "ni";
public static final String HOSTED_CSE_LINK = "hcl";
- public static final String HOSTED_APP_LINK = "hapl";
+ public static final String HOSTED_SRV_LINK = "hsl";
// Short names for mgmt objects generic attributes
public static final String DESCRIPTION = "des";
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/AreaNwkDeviceInfoAnncEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/AreaNwkDeviceInfoAnncEntity.java
new file mode 100644
index 0000000..3bec573
--- /dev/null
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/AreaNwkDeviceInfoAnncEntity.java
@@ -0,0 +1,283 @@
+/*******************************************************************************
+ * Copyright (c) 2013-2016 LAAS-CNRS (www.laas.fr)
+ * 7 Colonel Roche 31077 Toulouse - France
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial Contributors:
+ * Thierry Monteil : Project manager, technical co-manager
+ * Mahdi Ben Alaya : Technical co-manager
+ * Samir Medjiah : Technical co-manager
+ * Khalil Drira : Strategy expert
+ * Guillaume Garzone : Developer
+ * François Aïssaoui : Developer
+ *
+ * New contributors :
+ *******************************************************************************/
+package org.eclipse.om2m.commons.entities;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+
+import org.eclipse.om2m.commons.constants.DBEntities;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
+import org.eclipse.om2m.commons.constants.ShortName;
+import org.eclipse.om2m.commons.resource.AnnouncedMgmtResource;
+import org.eclipse.om2m.commons.resource.AreaNwkDeviceInfoAnnc;
+
+/**
+ * Area Nwk Device Info entity - Specialization of MgmtObj
+ *
+ */
+@Entity(name = ShortName.AREA_NWK_DEVICE_INFO_ANNC)
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+public class AreaNwkDeviceInfoAnncEntity extends MgmtObjAnncEntity {
+
+ @Column(name = ShortName.DEV_ID)
+ protected String devID;
+ @Column(name = ShortName.DEV_TYPE)
+ protected String devType;
+ @Column(name = ShortName.AREA_NWK_ID)
+ protected String areaNwkId;
+ @Column(name = ShortName.SLEEP_INTERVAL)
+ protected BigInteger sleepInterval;
+ @Column(name = ShortName.SLEEP_DURATION)
+ protected BigInteger sleepDuration;
+ @Column(name = ShortName.STATUS)
+ protected String status;
+ @Column(name = ShortName.LIST_OF_NEIGHBORS)
+ protected List<String> listOfNeighbors;
+
+ /** AccessControlPolicies linked to the MgmtObj */
+ @ManyToMany(fetch=FetchType.LAZY)
+ @JoinTable(
+ name = DBEntities.ANDIA_ACP_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.ANDIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<AccessControlPolicyEntity> accessControlPolicies;
+
+ /** List of DynamicAuthorizationConsultations*/
+ @ManyToMany(fetch=FetchType.LAZY, mappedBy="linkedAreaNwkDeviceInfoEntities")
+ @JoinTable(
+ name = DBEntities.ANDIA_DAC_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.ANDIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.DAC_JOINID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<DynamicAuthorizationConsultationEntity> dynamicAuthorizationConsultations;
+
+
+ // Database link to Subscriptions
+ @OneToMany(fetch = FetchType.LAZY, targetEntity = SubscriptionEntity.class, mappedBy="parentAndi")
+ @JoinTable(
+ name = DBEntities.ANDIA_SUB_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.ANDIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.SUB_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<SubscriptionEntity> subscriptions;
+
+ // Database link to Node
+ @ManyToOne(fetch = FetchType.LAZY, targetEntity = NodeEntity.class)
+ @JoinTable(
+ name = DBEntities.ANDIA_NOD_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.ANDIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.NOD_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected NodeAnncEntity parentNode;
+
+ public AreaNwkDeviceInfoAnncEntity() {
+ this.mgmtDefinition = MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO;
+ }
+
+ /**
+ * @return the devID
+ */
+ public String getDevID() {
+ return devID;
+ }
+
+ /**
+ * @param devID the devID to set
+ */
+ public void setDevID(String devID) {
+ this.devID = devID;
+ }
+
+ /**
+ * @return the devType
+ */
+ public String getDevType() {
+ return devType;
+ }
+
+ /**
+ * @param devType the devType to set
+ */
+ public void setDevType(String devType) {
+ this.devType = devType;
+ }
+
+ /**
+ * @return the areaNwkId
+ */
+ public String getAreaNwkId() {
+ return areaNwkId;
+ }
+
+ /**
+ * @param areaNwkId the areaNwkId to set
+ */
+ public void setAreaNwkId(String areaNwkId) {
+ this.areaNwkId = areaNwkId;
+ }
+
+ /**
+ * @return the sleepInterval
+ */
+ public BigInteger getSleepInterval() {
+ return sleepInterval;
+ }
+
+ /**
+ * @param sleepInterval the sleepInterval to set
+ */
+ public void setSleepInterval(BigInteger sleepInterval) {
+ this.sleepInterval = sleepInterval;
+ }
+
+ /**
+ * @return the sleepDuration
+ */
+ public BigInteger getSleepDuration() {
+ return sleepDuration;
+ }
+
+ /**
+ * @param sleepDuration the sleepDuration to set
+ */
+ public void setSleepDuration(BigInteger sleepDuration) {
+ this.sleepDuration = sleepDuration;
+ }
+
+ /**
+ * @return the status
+ */
+ public String getStatus() {
+ return status;
+ }
+
+ /**
+ * @param status the status to set
+ */
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ /**
+ * @return the listOfNeighbors
+ */
+ public List<String> getListOfNeighbors() {
+ if (this.listOfNeighbors == null) {
+ this.listOfNeighbors = new ArrayList<>();
+ }
+ return listOfNeighbors;
+ }
+
+ /**
+ * @param listOfNeighbors the listOfNeighbors to set
+ */
+ public void setListOfNeighbors(List<String> listOfNeighbors) {
+ this.listOfNeighbors = listOfNeighbors;
+ }
+
+ /**
+ * @return the subscriptions
+ */
+ public List<SubscriptionEntity> getSubscriptions() {
+ if (this.subscriptions == null) {
+ this.subscriptions = new ArrayList<>();
+ }
+ return subscriptions;
+ }
+
+ /**
+ * @param subscriptions the subscriptions to set
+ */
+ public void setSubscriptions(List<SubscriptionEntity> subscriptions) {
+ this.subscriptions = subscriptions;
+ }
+
+ /**
+ * @return the parentNode
+ */
+ public NodeAnncEntity getParentNode() {
+ return parentNode;
+ }
+
+ /**
+ * @param parentNode the parentNode to set
+ */
+ public void setParentNode(NodeAnncEntity parentNode) {
+ this.parentNode = parentNode;
+ }
+
+ /**
+ * @return the acps
+ */
+ public List<AccessControlPolicyEntity> getAccessControlPolicies() {
+ if (this.accessControlPolicies == null) {
+ this.accessControlPolicies = new ArrayList<>();
+ }
+ return accessControlPolicies;
+ }
+
+ /**
+ * @param acps the acps to set
+ */
+ public void setAccessControlPolicies(List<AccessControlPolicyEntity> acps) {
+ this.accessControlPolicies = acps;
+ }
+
+
+ @Override
+ public List<DynamicAuthorizationConsultationEntity> getDynamicAuthorizationConsultations() {
+ if (this.dynamicAuthorizationConsultations == null) {
+ this.dynamicAuthorizationConsultations = new ArrayList<>();
+ }
+ return dynamicAuthorizationConsultations;
+ }
+
+ @Override
+ public void setDynamicAuthorizationConsultations(List<DynamicAuthorizationConsultationEntity> list) {
+ this.dynamicAuthorizationConsultations = list;
+ }
+
+ @Override
+ public void fillFrom(AnnouncedMgmtResource mgmtObj) {
+ super.fillFrom(mgmtObj);
+ AreaNwkDeviceInfoAnnc andi = (AreaNwkDeviceInfoAnnc) mgmtObj;
+ this.devID = andi.getDevID();
+ this.devType = andi.getDevType();
+ this.areaNwkId = andi.getAreaNwkId();
+ this.sleepDuration = andi.getSleepDuration();
+ this.sleepInterval = andi.getSleepInterval();
+ this.status = andi.getStatus();
+ this.listOfNeighbors = andi.getListOfNeighbors();
+ }
+
+}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/AreaNwkInfoAnncEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/AreaNwkInfoAnncEntity.java
new file mode 100644
index 0000000..9a3fd28
--- /dev/null
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/AreaNwkInfoAnncEntity.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2017 Orange.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.om2m.commons.entities;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+
+import org.eclipse.om2m.commons.constants.DBEntities;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
+import org.eclipse.om2m.commons.constants.ShortName;
+import org.eclipse.om2m.commons.resource.AnnouncedMgmtResource;
+import org.eclipse.om2m.commons.resource.AreaNwkInfoAnnc;
+
+/**
+ * Area Network Info Entity - Specialization of MgmtObj
+ *
+ */
+@Entity(name = ShortName.AREA_NWK_INFO_ANNC)
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+public class AreaNwkInfoAnncEntity extends MgmtObjAnncEntity {
+
+ @Column(name = ShortName.AREA_NWK_TYPE)
+ protected String areaNwkType;
+ @Column(name = ShortName.LIST_DEVICES)
+ protected List<String> listOfDevices;
+
+ // link to acp
+ // Database link to ACP
+ @ManyToMany(fetch = FetchType.LAZY, targetEntity = AccessControlPolicyEntity.class)
+ @JoinTable(
+ name = DBEntities.ANIA_ACP_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.ANIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<AccessControlPolicyEntity> accessControlPolicies;
+
+ /** List of DynamicAuthorizationConsultations*/
+ @ManyToMany(fetch=FetchType.LAZY, mappedBy="linkedAreaNwkInfoAnncEntities")
+ @JoinTable(
+ name = DBEntities.ANIA_DAC_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.ANIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.DAC_JOINID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<DynamicAuthorizationConsultationEntity> dynamicAuthorizationConsultations;
+
+ // Database link to Subscriptions
+ @OneToMany(fetch = FetchType.LAZY, targetEntity = SubscriptionEntity.class, mappedBy="parentAni")
+ @JoinTable(
+ name = DBEntities.ANIA_SUB_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.ANIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.SUB_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<SubscriptionEntity> subscriptions;
+
+ // Database link to Node
+ @ManyToOne(fetch = FetchType.LAZY, targetEntity = NodeEntity.class)
+ @JoinTable(
+ name = DBEntities.ANIA_NOD_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.ANIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.NOD_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected NodeAnncEntity parentNode;
+
+ /**
+ * Constructor
+ */
+ public AreaNwkInfoAnncEntity() {
+ this.mgmtDefinition = MgmtDefinitionTypes.AREA_NWK_INFO;
+ }
+
+ /**
+ * @return the areaNwkType
+ */
+ public String getAreaNwkType() {
+ return areaNwkType;
+ }
+
+ /**
+ * @param areaNwkType the areaNwkType to set
+ */
+ public void setAreaNwkType(String areaNwkType) {
+ this.areaNwkType = areaNwkType;
+ }
+
+ /**
+ * @return the listOfDevices
+ */
+ public List<String> getListOfDevices() {
+ return listOfDevices;
+ }
+
+ /**
+ * @param listOfDevices the listOfDevices to set
+ */
+ public void setListOfDevices(List<String> listOfDevices) {
+ this.listOfDevices = listOfDevices;
+ }
+
+ /**
+ * @return the acps
+ */
+ public List<AccessControlPolicyEntity> getAccessControlPolicies() {
+ if (this.accessControlPolicies == null) {
+ this.accessControlPolicies = new ArrayList<>();
+ }
+ return accessControlPolicies;
+ }
+
+ /**
+ * @param acps the acps to set
+ */
+ public void setAccessControlPolicies(List<AccessControlPolicyEntity> acps) {
+ this.accessControlPolicies = acps;
+ }
+
+ /**
+ * @return the parentNode
+ */
+ public NodeAnncEntity getParentNode() {
+ return parentNode;
+ }
+
+ /**
+ * @param parentNode the parentNode to set
+ */
+ public void setParentNode(NodeAnncEntity parentNode) {
+ this.parentNode = parentNode;
+ }
+
+ /**
+ * @return the subscriptions
+ */
+ public List<SubscriptionEntity> getSubscriptions() {
+ if (this.subscriptions == null) {
+ this.subscriptions = new ArrayList<>();
+ }
+ return subscriptions;
+ }
+
+ /**
+ * @param subscriptions the subscriptions to set
+ */
+ public void setSubscriptions(List<SubscriptionEntity> subscriptions) {
+ this.subscriptions = subscriptions;
+ }
+
+
+ @Override
+ public List<DynamicAuthorizationConsultationEntity> getDynamicAuthorizationConsultations() {
+ if (dynamicAuthorizationConsultations == null) {
+ dynamicAuthorizationConsultations = new ArrayList<>();
+ }
+ return dynamicAuthorizationConsultations;
+ }
+
+ @Override
+ public void setDynamicAuthorizationConsultations(List<DynamicAuthorizationConsultationEntity> list) {
+ this.dynamicAuthorizationConsultations = list;
+ }
+
+ @Override
+ public void fillFrom(AnnouncedMgmtResource mgmtObj) {
+ super.fillFrom(mgmtObj);
+ AreaNwkInfoAnnc ani = (AreaNwkInfoAnnc) mgmtObj;
+ this.areaNwkType = ani.getAreaNwkType();
+ this.listOfDevices = ani.getListOfDevices();
+ }
+
+}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/CSEBaseEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/CSEBaseEntity.java
index c4edc98..cd633a8 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/CSEBaseEntity.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/CSEBaseEntity.java
@@ -76,9 +76,8 @@
protected String nodeLink;
-
/** List of Nodes */
- @OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL})
+ @OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL}, mappedBy="parentCsb")
@JoinTable(
name=DBEntities.CSB_NOD_CH_JOIN,
joinColumns={@JoinColumn(name=DBEntities.CSEB_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
@@ -86,6 +85,15 @@
)
protected List<NodeEntity> childNodes;
+ /** List of Nodes */
+ @OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL}, mappedBy="parentCsb")
+ @JoinTable(
+ name=DBEntities.CSB_NODANNC_CH_JOIN,
+ joinColumns={@JoinColumn(name=DBEntities.CSEB_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
+ inverseJoinColumns={@JoinColumn(name=DBEntities.NODANNC_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
+ )
+ protected List<NodeAnncEntity> childAnncNodes;
+
// TODO list of mgmtCmd
// TODO list of location policy
@@ -446,6 +454,23 @@
public void setChildNodes(List<NodeEntity> childNodes) {
this.childNodes = childNodes;
}
+
+ /**
+ * @return the childNodes
+ */
+ public List<NodeAnncEntity> getChildAnncNodes() {
+ if (childAnncNodes == null) {
+ childAnncNodes = new ArrayList<NodeAnncEntity>();
+ }
+ return childAnncNodes;
+ }
+
+ /**
+ * @param childNodes the childNodes to set
+ */
+ public void setChildAnncNodes(List<NodeAnncEntity> childNodes) {
+ this.childAnncNodes = childNodes;
+ }
public List<DynamicAuthorizationConsultationEntity> getChildDynamicAuthorizationConsultation() {
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/DeviceInfoAnncEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/DeviceInfoAnncEntity.java
new file mode 100644
index 0000000..e80a73d
--- /dev/null
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/DeviceInfoAnncEntity.java
@@ -0,0 +1,457 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2017 Orange.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.om2m.commons.entities;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+
+import org.eclipse.om2m.commons.constants.DBEntities;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
+import org.eclipse.om2m.commons.constants.ShortName;
+import org.eclipse.om2m.commons.resource.AnnouncedMgmtResource;
+import org.eclipse.om2m.commons.resource.DeviceInfoAnnc;
+
+/**
+ * Device Info entity - Specialization of MgmtObj
+ *
+ */
+@Entity(name = ShortName.DEVICE_INFO_ANNC)
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+public class DeviceInfoAnncEntity extends MgmtObjAnncEntity {
+
+ @Column(name = ShortName.DEVICE_LABEL)
+ protected String deviceLabel;
+ @Column(name = ShortName.DEVICE_TYPE)
+ protected String deviceType;
+ @Column(name = ShortName.DEVICE_MODEL)
+ protected String model;
+ @Column(name = ShortName.MANUFACTURER)
+ protected String manufacturer;
+
+ @Column(name = ShortName.FW_VERSION)
+ protected String fwVersion;
+ @Column(name = ShortName.SW_VERSION)
+ protected String swVersion;
+ @Column(name = ShortName.HW_VERSION)
+ protected String hwVersion;
+ @Column(name = ShortName.OS_VERSION)
+ protected String osVersion;
+ @Column(name = ShortName.MANUF_DET_LINKS)
+ protected String manufacturerDetailsLink;
+ @Column(name = ShortName.MANUF_DATE)
+ protected String manufacturingDate;
+ @Column(name = ShortName.DEVICE_SUB_MODEL)
+ protected String subModel;
+ @Column(name = ShortName.DEVICE_NAME)
+ protected String deviceName;
+ @Column(name = ShortName.COUNTRY)
+ protected String country;
+ @Column(name = ShortName.LOCATION)
+ protected String location;
+ @Column(name = ShortName.SYS_TIME)
+ protected String systemTime;
+ @Column(name = ShortName.SUPPORT_URL)
+ protected String supportURL;
+ @Column(name = ShortName.PRES_URL)
+ protected String presentationURL;
+ @Column(name = ShortName.PROTOCOL)
+ protected String protocol;
+
+ /** AccessControlPolicies linked to the MgmtObj */
+ @ManyToMany(fetch=FetchType.LAZY)
+ @JoinTable(
+ name = DBEntities.DVIA_ACP_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.DVIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<AccessControlPolicyEntity> accessControlPolicies;
+
+ /** List of DynamicAuthorizationConsultations*/
+ @ManyToMany(fetch=FetchType.LAZY, mappedBy="linkedDeviceInfoEntities")
+ @JoinTable(
+ name = DBEntities.DVIA_DAC_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.DVIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.DAC_JOINID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<DynamicAuthorizationConsultationEntity> dynamicAuthorizationConsultations;
+
+ // Database link to Subscriptions
+ @OneToMany(fetch = FetchType.LAZY, targetEntity = SubscriptionEntity.class, mappedBy="parentDvi")
+ @JoinTable(
+ name = DBEntities.DVIA_SUB_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.DVIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.SUB_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<SubscriptionEntity> subscriptions;
+
+ // Database link to Node
+ @ManyToOne(fetch = FetchType.LAZY, targetEntity = NodeEntity.class)
+ @JoinTable(
+ name = DBEntities.DVIA_NOD_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.DVIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.NOD_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected NodeAnncEntity parentNode;
+
+ public DeviceInfoAnncEntity() {
+ this.mgmtDefinition = MgmtDefinitionTypes.DEVICE_INFO;
+ }
+
+ /**
+ * @return the subscriptions
+ */
+ @Override
+ public List<SubscriptionEntity> getSubscriptions() {
+ if (this.subscriptions == null) {
+ this.subscriptions = new ArrayList<>();
+ }
+ return subscriptions;
+ }
+
+ /**
+ * @param subscriptions the subscriptions to set
+ */
+ public void setSubscriptions(List<SubscriptionEntity> subscriptions) {
+ this.subscriptions = subscriptions;
+ }
+
+ /**
+ * @return the parentNode
+ */
+ @Override
+ public NodeAnncEntity getParentNode() {
+ return parentNode;
+ }
+
+ /**
+ * @param parentNode the parentNode to set
+ */
+ @Override
+ public void setParentNode(NodeAnncEntity parentNode) {
+ this.parentNode = parentNode;
+ }
+
+ /**
+ * @return the acps
+ */
+ public List<AccessControlPolicyEntity> getAccessControlPolicies() {
+ if (this.accessControlPolicies == null) {
+ this.accessControlPolicies = new ArrayList<>();
+ }
+ return accessControlPolicies;
+ }
+
+ /**
+ * @param acps the acps to set
+ */
+ public void setAccessControlPolicies(List<AccessControlPolicyEntity> acps) {
+ this.accessControlPolicies = acps;
+ }
+
+
+ @Override
+ public List<DynamicAuthorizationConsultationEntity> getDynamicAuthorizationConsultations() {
+ if (this.dynamicAuthorizationConsultations == null) {
+ this.dynamicAuthorizationConsultations = new ArrayList<>();
+ }
+ return dynamicAuthorizationConsultations;
+ }
+
+ @Override
+ public void setDynamicAuthorizationConsultations(List<DynamicAuthorizationConsultationEntity> list) {
+ this.dynamicAuthorizationConsultations = list;
+ }
+
+ /**
+ * @return the deviceLabel
+ */
+ public String getDeviceLabel() {
+ return deviceLabel;
+ }
+
+ /**
+ * @param deviceLabel the deviceLabel to set
+ */
+ public void setDeviceLabel(String deviceLabel) {
+ this.deviceLabel = deviceLabel;
+ }
+
+ /**
+ * @return the deviceType
+ */
+ public String getDeviceType() {
+ return deviceType;
+ }
+
+ /**
+ * @param deviceType the deviceType to set
+ */
+ public void setDeviceType(String deviceType) {
+ this.deviceType = deviceType;
+ }
+
+ /**
+ * @return the model
+ */
+ public String getModel() {
+ return model;
+ }
+
+ /**
+ * @param model the model to set
+ */
+ public void setModel(String model) {
+ this.model = model;
+ }
+
+ /**
+ * @return the manufacturer
+ */
+ public String getManufacturer() {
+ return manufacturer;
+ }
+
+ /**
+ * @param manufacturer the manufacturer to set
+ */
+ public void setManufacturer(String manufacturer) {
+ this.manufacturer = manufacturer;
+ }
+
+ /**
+ * @return the fwVersion
+ */
+ public String getFwVersion() {
+ return fwVersion;
+ }
+
+ /**
+ * @param fwVersion the fwVersion to set
+ */
+ public void setFwVersion(String fwVersion) {
+ this.fwVersion = fwVersion;
+ }
+
+ /**
+ * @return the swVersion
+ */
+ public String getSwVersion() {
+ return swVersion;
+ }
+
+ /**
+ * @param swVersion the swVersion to set
+ */
+ public void setSwVersion(String swVersion) {
+ this.swVersion = swVersion;
+ }
+
+ /**
+ * @return the hwVersion
+ */
+ public String getHwVersion() {
+ return hwVersion;
+ }
+
+ /**
+ * @param hwVersion the hwVersion to set
+ */
+ public void setHwVersion(String hwVersion) {
+ this.hwVersion = hwVersion;
+ }
+
+ /**
+ * @return the osVersion
+ */
+ public String getOsVersion() {
+ return osVersion;
+ }
+
+ /**
+ * @param osVersion the osVersion to set
+ */
+ public void setOsVersion(String osVersion) {
+ this.osVersion = osVersion;
+ }
+
+ /**
+ * @return the manufacturerDetailsLink
+ */
+ public String getManufacturerDetailsLink() {
+ return manufacturerDetailsLink;
+ }
+
+ /**
+ * @param manufacturerDetailsLink the manufacturerDetailsLink to set
+ */
+ public void setManufacturerDetailsLink(String manufacturerDetailsLink) {
+ this.manufacturerDetailsLink = manufacturerDetailsLink;
+ }
+
+ /**
+ * @return the manufacturingDate
+ */
+ public String getManufacturingDate() {
+ return manufacturingDate;
+ }
+
+ /**
+ * @param manufacturingDate the manufacturingDate to set
+ */
+ public void setManufacturingDate(String manufacturingDate) {
+ this.manufacturingDate = manufacturingDate;
+ }
+
+ /**
+ * @return the subModel
+ */
+ public String getSubModel() {
+ return subModel;
+ }
+
+ /**
+ * @param subModel the subModel to set
+ */
+ public void setSubModel(String subModel) {
+ this.subModel = subModel;
+ }
+
+ /**
+ * @return the deviceName
+ */
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ /**
+ * @param deviceName the deviceName to set
+ */
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
+ /**
+ * @return the country
+ */
+ public String getCountry() {
+ return country;
+ }
+
+ /**
+ * @param country the country to set
+ */
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+ /**
+ * @return the location
+ */
+ public String getLocation() {
+ return location;
+ }
+
+ /**
+ * @param location the location to set
+ */
+ public void setLocation(String location) {
+ this.location = location;
+ }
+
+ /**
+ * @return the systemTime
+ */
+ public String getSystemTime() {
+ return systemTime;
+ }
+
+ /**
+ * @param systemTime the systemTime to set
+ */
+ public void setSystemTime(String systemTime) {
+ this.systemTime = systemTime;
+ }
+
+ /**
+ * @return the supportURL
+ */
+ public String getSupportURL() {
+ return supportURL;
+ }
+
+ /**
+ * @param supportURL the supportURL to set
+ */
+ public void setSupportURL(String supportURL) {
+ this.supportURL = supportURL;
+ }
+
+ /**
+ * @return the presentationURL
+ */
+ public String getPresentationURL() {
+ return presentationURL;
+ }
+
+ /**
+ * @param presentationURL the presentationURL to set
+ */
+ public void setPresentationURL(String presentationURL) {
+ this.presentationURL = presentationURL;
+ }
+
+ /**
+ * @return the protocol
+ */
+ public String getProtocol() {
+ return protocol;
+ }
+
+ /**
+ * @param protocol the protocol to set
+ */
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
+ @Override
+ public void fillFrom(AnnouncedMgmtResource mgmtObj) {
+ super.fillFrom(mgmtObj);
+ DeviceInfoAnnc di = (DeviceInfoAnnc) mgmtObj;
+ this.deviceLabel = di.getDeviceLabel();
+ this.deviceType = di.getDeviceType();
+ this.model = di.getModel();
+ this.manufacturer = di.getManufacturer();
+ this.fwVersion = di.getFwVersion();
+ this.swVersion = di.getSwVersion();
+ this.hwVersion = di.getHwVersion();
+ this.osVersion = di.getOsVersion();
+ this.manufacturerDetailsLink = di.getManufacturerDetailsLink();
+ this.manufacturingDate = di.getManufacturingDate();
+ this.subModel = di.getSubModel();
+ this.deviceName = di.getDeviceName();
+ this.country = di.getCountry();
+ this.location = di.getLocation();
+ this.systemTime = di.getSystemTime();
+ this.supportURL = di.getSupportURL();
+ this.presentationURL = di.getPresentationURL();
+ this.protocol = di.getProtocol();
+ }
+
+}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/DynamicAuthorizationConsultationEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/DynamicAuthorizationConsultationEntity.java
index 615640a..b64b56b 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/DynamicAuthorizationConsultationEntity.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/DynamicAuthorizationConsultationEntity.java
@@ -222,6 +222,38 @@
)
private List<AeAnncEntity> linkedAeAnncEntities;
+ @ManyToMany(fetch=FetchType.LAZY)
+ @JoinTable(
+ name = DBEntities.ANDIA_DAC_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.DAC_JOINID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.ANDIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ private List<AreaNwkDeviceInfoAnncEntity> linkedAreaNwkDeviceInfoAnncEntities;
+
+ @ManyToMany(fetch=FetchType.LAZY)
+ @JoinTable(
+ name = DBEntities.ANIA_DAC_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.DAC_JOINID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.ANIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ private List<AreaNwkInfoAnncEntity> linkedAreaNwkInfoAnncEntities;
+
+ @ManyToMany(fetch=FetchType.LAZY)
+ @JoinTable(
+ name = DBEntities.DVIA_DAC_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.DAC_JOINID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.DVIA_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ private List<DeviceInfoAnncEntity> linkedDeviceInfoAnncEntities;
+
+ @ManyToMany(fetch=FetchType.LAZY)
+ @JoinTable(
+ name = DBEntities.NODANNC_DAC_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.DAC_JOINID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.NODANNC_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ private List<NodeAnncEntity> linkedNodeAnncEntities;
+
public List<AccessControlPolicyEntity> getAccessControlPolicies() {
if (accessControlPolicyIDs == null) {
@@ -457,12 +489,55 @@
this.linkedDeviceInfoEntities = linkedMgmtObjEntities;
}
- public List<MgmtObjEntity> getMgmtObjEntities() {
- List<MgmtObjEntity> ret = new ArrayList<MgmtObjEntity>();
- ret.addAll(getLinkedAreaNwkInfoEntities());
- ret.addAll(getLinkedAreaNwkDeviceInfoEntities());
- ret.addAll(getLinkedDeviceInfoEntities());
- return ret;
+ /**
+ * @return the linkedMgmtObjEntities
+ */
+ public List<AreaNwkDeviceInfoAnncEntity> getLinkedAreaNwkDeviceInfoAnncEntities() {
+ if (linkedAreaNwkDeviceInfoAnncEntities == null) {
+ linkedAreaNwkDeviceInfoAnncEntities = new ArrayList<>();
+ }
+ return linkedAreaNwkDeviceInfoAnncEntities;
+ }
+
+ /**
+ * @param linkedMgmtObjEntities the linkedMgmtObjEntities to set
+ */
+ public void setLinkedAreaNwkDeviceInfoAnncEntities(List<AreaNwkDeviceInfoAnncEntity> linkedMgmtObjEntities) {
+ this.linkedAreaNwkDeviceInfoAnncEntities = linkedMgmtObjEntities;
+ }
+
+ /**
+ * @return the linkedAreaNwkInfoEntities
+ */
+ public List<AreaNwkInfoAnncEntity> getLinkedAreaNwkInfoAnncEntities() {
+ if(linkedAreaNwkInfoAnncEntities == null) {
+ linkedAreaNwkInfoAnncEntities = new ArrayList<>();
+ }
+ return linkedAreaNwkInfoAnncEntities;
+ }
+
+ /**
+ * @param linkedAreaNwkInfoEntities the linkedAreaNwkInfoEntities to set
+ */
+ public void setLinkedAreaNwkInfoAnncEntities(List<AreaNwkInfoAnncEntity> linkedAreaNwkInfoEntities) {
+ this.linkedAreaNwkInfoAnncEntities = linkedAreaNwkInfoEntities;
+ }
+
+ /**
+ * @return the linkedMgmtObjEntities
+ */
+ public List<DeviceInfoAnncEntity> getLinkedDeviceInfoAnncEntities() {
+ if (linkedDeviceInfoAnncEntities == null) {
+ linkedDeviceInfoAnncEntities = new ArrayList<>();
+ }
+ return linkedDeviceInfoAnncEntities;
+ }
+
+ /**
+ * @param linkedMgmtObjEntities the linkedMgmtObjEntities to set
+ */
+ public void setLinkedDeviceInfoAnncEntities(List<DeviceInfoAnncEntity> linkedMgmtObjEntities) {
+ this.linkedDeviceInfoAnncEntities = linkedMgmtObjEntities;
}
/**
@@ -483,6 +558,23 @@
}
/**
+ * @return the linkedNodeAnncEntities
+ */
+ public List<NodeAnncEntity> getLinkedNodeAnncEntities() {
+ if (linkedNodeAnncEntities == null) {
+ linkedNodeAnncEntities = new ArrayList<>();
+ }
+ return linkedNodeAnncEntities;
+ }
+
+ /**
+ * @param linkedNodeEntities the linkedNodeAnncEntities to set
+ */
+ public void setLinkedNodeAnncEntities(List<NodeAnncEntity> linkedNodeEntities) {
+ this.linkedNodeAnncEntities = linkedNodeEntities;
+ }
+
+ /**
* @return the linkedRemoteCSEEntities
*/
public List<RemoteCSEEntity> getLinkedRemoteCSEEntities() {
@@ -586,5 +678,41 @@
else if (mgmtDef.equals(MgmtDefinitionTypes.DEVICE_INFO))
getLinkedDeviceInfoEntities().remove((DeviceInfoEntity) mgmtObjEntity);
}
+
+ public void addMgmtObj(MgmtObjAnncEntity mgmtObjEntity) {
+ BigInteger mgmtDef = mgmtObjEntity.getMgmtDefinition();
+ if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
+ getLinkedAreaNwkInfoAnncEntities().add((AreaNwkInfoAnncEntity) mgmtObjEntity);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO))
+ getLinkedAreaNwkDeviceInfoAnncEntities().add((AreaNwkDeviceInfoAnncEntity) mgmtObjEntity);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.DEVICE_INFO))
+ getLinkedDeviceInfoAnncEntities().add((DeviceInfoAnncEntity) mgmtObjEntity);
+ }
+
+ public void removeMgmtObj(MgmtObjAnncEntity mgmtObjEntity) {
+ BigInteger mgmtDef = mgmtObjEntity.getMgmtDefinition();
+ if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
+ getLinkedAreaNwkInfoAnncEntities().remove((AreaNwkInfoAnncEntity) mgmtObjEntity);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO))
+ getLinkedAreaNwkDeviceInfoAnncEntities().remove((AreaNwkDeviceInfoAnncEntity) mgmtObjEntity);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.DEVICE_INFO))
+ getLinkedDeviceInfoAnncEntities().remove((DeviceInfoAnncEntity) mgmtObjEntity);
+ }
+
+ public List<MgmtObjEntity> getMgmtObjEntities() {
+ List<MgmtObjEntity> ret = new ArrayList<MgmtObjEntity>();
+ ret.addAll(getLinkedAreaNwkDeviceInfoEntities());
+ ret.addAll(getLinkedAreaNwkInfoEntities());
+ ret.addAll(getLinkedDeviceInfoEntities());
+ return ret;
+ }
+
+ public List<MgmtObjAnncEntity> getMgmtObjAnncEntities() {
+ List<MgmtObjAnncEntity> ret = new ArrayList<MgmtObjAnncEntity>();
+ ret.addAll(getLinkedAreaNwkDeviceInfoAnncEntities());
+ ret.addAll(getLinkedAreaNwkInfoAnncEntities());
+ ret.addAll(getLinkedDeviceInfoAnncEntities());
+ return ret;
+ }
}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/FlexContainerAnncEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/FlexContainerAnncEntity.java
index fcc9dcb..42c492f 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/FlexContainerAnncEntity.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/FlexContainerAnncEntity.java
@@ -34,7 +34,6 @@
@Column(name="shortName")
protected String shortName;
-
@Column(name = ShortName.STATETAG)
protected BigInteger stateTag;
@Column(name = ShortName.CREATOR)
@@ -43,7 +42,9 @@
protected String ontologyRef;
@Column(name = ShortName.CONTAINER_DEFINITION)
protected String containerDefinition;
-
+ @Column(name=ShortName.NODE_LINK)
+ protected String nodeLink;
+
/** List of DynamicAuthorizationConsultations*/
@ManyToMany(fetch=FetchType.LAZY, mappedBy="linkedFlexContainerAnncEntities")
@JoinTable(
@@ -263,6 +264,12 @@
this.parentAeAnnc = parentAeAnnc;
}
-
+ public String getNodeLink() {
+ return nodeLink;
+ }
+
+ public void setNodeLink(String nodeLink) {
+ this.nodeLink = nodeLink;
+ }
}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/LabelEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/LabelEntity.java
index 6bbb6db..385cdca 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/LabelEntity.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/LabelEntity.java
@@ -84,15 +84,27 @@
@ManyToMany(targetEntity = NodeEntity.class, mappedBy = "labelsEntities")
protected List<NodeEntity> linkedNodes;
+ @ManyToMany(targetEntity = NodeAnncEntity.class, mappedBy = "labelsEntities")
+ protected List<NodeAnncEntity> linkedNodesA;
+
@ManyToMany(targetEntity = AreaNwkInfoEntity.class, mappedBy = "labelsEntities")
protected List<AreaNwkInfoEntity> linkedAni;
+ @ManyToMany(targetEntity = AreaNwkInfoAnncEntity.class, mappedBy = "labelsEntities")
+ protected List<AreaNwkInfoAnncEntity> linkedAniA;
+
@ManyToMany(targetEntity = AreaNwkDeviceInfoEntity.class, mappedBy = "labelsEntities")
protected List<AreaNwkDeviceInfoEntity> linkedAndi;
+ @ManyToMany(targetEntity = AreaNwkDeviceInfoAnncEntity.class, mappedBy = "labelsEntities")
+ protected List<AreaNwkDeviceInfoAnncEntity> linkedAndiA;
+
@ManyToMany(targetEntity = DeviceInfoEntity.class, mappedBy = "labelsEntities")
protected List<DeviceInfoEntity> linkedDvi;
+ @ManyToMany(targetEntity = DeviceInfoAnncEntity.class, mappedBy = "labelsEntities")
+ protected List<DeviceInfoAnncEntity> linkedDviA;
+
/**
* @return the linkedSub
*/
@@ -323,9 +335,6 @@
this.linkedPch = linkedPch;
}
-
-
-
/**
* @return the linkedNode
*/
@@ -342,6 +351,23 @@
public void setLinkedNodes(List<NodeEntity> linkedNode) {
this.linkedNodes = linkedNode;
}
+
+ /**
+ * @return the linkedNode
+ */
+ public List<NodeAnncEntity> getLinkedNodesA() {
+ if (this.linkedNodesA == null) {
+ this.linkedNodesA = new ArrayList<>();
+ }
+ return linkedNodesA;
+ }
+
+ /**
+ * @param linkedNode the linkedNode to set
+ */
+ public void setLinkedNodesA(List<NodeAnncEntity> linkedNode) {
+ this.linkedNodesA = linkedNode;
+ }
/**
* @return the linkedAni
@@ -361,6 +387,23 @@
}
/**
+ * @return the linkedAni
+ */
+ public List<AreaNwkInfoAnncEntity> getLinkedAniA() {
+ if (this.linkedAniA == null) {
+ this.linkedAniA = new ArrayList<>();
+ }
+ return linkedAniA;
+ }
+
+ /**
+ * @param linkedAni the linkedAni to set
+ */
+ public void setLinkedAniA(List<AreaNwkInfoAnncEntity> linkedAni) {
+ this.linkedAniA = linkedAni;
+ }
+
+ /**
* @return the linkedAndi
*/
public List<AreaNwkDeviceInfoEntity> getLinkedAndi() {
@@ -378,6 +421,23 @@
}
/**
+ * @return the linkedAndi
+ */
+ public List<AreaNwkDeviceInfoAnncEntity> getLinkedAndiA() {
+ if (this.linkedAndiA == null) {
+ this.linkedAndiA = new ArrayList<>();
+ }
+ return linkedAndiA;
+ }
+
+ /**
+ * @param linkedAndi the linkedAndi to set
+ */
+ public void setLinkedAndiA(List<AreaNwkDeviceInfoAnncEntity> linkedAndi) {
+ this.linkedAndiA = linkedAndi;
+ }
+
+ /**
* @return the linkedDvi
*/
public List<DeviceInfoEntity> getLinkedDvi() {
@@ -394,6 +454,23 @@
this.linkedDvi = linkedDvi;
}
+ /**
+ * @return the linkedDvi
+ */
+ public List<DeviceInfoAnncEntity> getLinkedDviA() {
+ if (this.linkedDviA == null) {
+ this.linkedDviA = new ArrayList<>();
+ }
+ return linkedDviA;
+ }
+
+ /**
+ * @param linkedDvi the linkedDvi to set
+ */
+ public void setLinkedDviA(List<DeviceInfoAnncEntity> linkedDvi) {
+ this.linkedDviA = linkedDvi;
+ }
+
public void addMgmtObj(MgmtObjEntity mgmtObjEntity) {
BigInteger mgmtDef = mgmtObjEntity.getMgmtDefinition();
if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
@@ -404,6 +481,16 @@
getLinkedDvi().add((DeviceInfoEntity) mgmtObjEntity);
}
+ public void addMgmtObjA(MgmtObjAnncEntity mgmtObjAnncEntity) {
+ BigInteger mgmtDef = mgmtObjAnncEntity.getMgmtDefinition();
+ if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
+ getLinkedAniA().add((AreaNwkInfoAnncEntity) mgmtObjAnncEntity);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO))
+ getLinkedAndiA().add((AreaNwkDeviceInfoAnncEntity) mgmtObjAnncEntity);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.DEVICE_INFO))
+ getLinkedDviA().add((DeviceInfoAnncEntity) mgmtObjAnncEntity);
+ }
+
@Override
public boolean equals(Object obj) {
if (this == obj){
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/MgmtObjAnncEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/MgmtObjAnncEntity.java
index e1a4c81..54c9c6a 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/MgmtObjAnncEntity.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/MgmtObjAnncEntity.java
@@ -30,7 +30,6 @@
import org.eclipse.om2m.commons.constants.ShortName;
import org.eclipse.om2m.commons.exceptions.BadRequestException;
import org.eclipse.om2m.commons.resource.AnnouncedMgmtResource;
-import org.eclipse.om2m.commons.resource.MgmtObj;
/**
* Generic common attributes for management objects entities
@@ -122,18 +121,17 @@
}
public static MgmtObjAnncEntity create(BigInteger mgmtDef) {
- // TODO
-// if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
-// return new AreaNwkInfoEntity();
-// if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO))
-// return new AreaNwkDeviceInfoEntity();
-// if (mgmtDef.equals(MgmtDefinitionTypes.DEVICE_INFO))
-// return new DeviceInfoEntity();
+ if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
+ return new AreaNwkInfoAnncEntity();
+ if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO))
+ return new AreaNwkDeviceInfoAnncEntity();
+ if (mgmtDef.equals(MgmtDefinitionTypes.DEVICE_INFO))
+ return new DeviceInfoAnncEntity();
throw new BadRequestException("Not implemented");
}
- abstract public NodeEntity getParentNode();
- abstract public void setParentNode(NodeEntity parentNode);
+ abstract public NodeAnncEntity getParentNode();
+ abstract public void setParentNode(NodeAnncEntity parentNode);
abstract public List<AccessControlPolicyEntity> getAccessControlPolicies();
abstract public List<SubscriptionEntity> getSubscriptions();
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/NodeAnncEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/NodeAnncEntity.java
new file mode 100644
index 0000000..f654151
--- /dev/null
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/NodeAnncEntity.java
@@ -0,0 +1,314 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2017 Orange.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.om2m.commons.entities;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+
+import org.eclipse.om2m.commons.constants.DBEntities;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
+import org.eclipse.om2m.commons.constants.ShortName;
+
+@Inheritance(strategy = InheritanceType.JOINED)
+@Entity(name = DBEntities.NODE_ANNC_ENTITY)
+public class NodeAnncEntity extends AnnouncedResourceEntity {
+
+ // linked ACP
+ @ManyToMany(fetch=FetchType.LAZY)
+ @JoinTable(
+ name = DBEntities.ACP_NODANNC_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.NODANNC_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.ACP_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<AccessControlPolicyEntity> linkedAcps;
+
+ /** List of DynamicAuthorizationConsultations*/
+ @ManyToMany(fetch=FetchType.LAZY, mappedBy="linkedNodeAnncEntities")
+ @JoinTable(
+ name = DBEntities.NODANNC_DAC_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.NODANNC_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.DAC_JOINID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<DynamicAuthorizationConsultationEntity> dynamicAuthorizationConsultations;
+
+ // node id
+ @Column(name = ShortName.NODE_ID)
+ protected String nodeID;
+
+ // hosted CSE LINK
+ @Column(name = ShortName.HOSTED_CSE_LINK)
+ protected String hostedCSELink;
+
+ // hosted APP LINK
+ @Column(name = ShortName.HOSTED_SRV_LINK)
+ protected String hostedServiceLinks;
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinTable(
+ name = DBEntities.CSB_NODANNC_CH_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.NODANNC_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.CSEB_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected CSEBaseEntity parentCsb;
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinTable(
+ name = DBEntities.CSR_NODANNC_CH_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.NODANNC_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.CSR_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected RemoteCSEEntity parentCsr;
+
+ @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
+ @JoinTable(
+ name = DBEntities.NODANNC_SUB_JOIN,
+ joinColumns = { @JoinColumn(name = DBEntities.NODANNC_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.SUB_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<SubscriptionEntity> childSubscriptions;
+
+ // Database link to AreaNwkInfo Entity
+ @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
+ @JoinTable(
+ name = DBEntities.ANI_NODANNC_JOIN,
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.ANI_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ joinColumns = { @JoinColumn(name = DBEntities.NODANNC_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<AreaNwkInfoAnncEntity> childAreaNwkInfoEntities;
+
+ // Database link to AreaNwkDeviceInfo entity
+ @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
+ @JoinTable(
+ name = DBEntities.ANDI_NODANNC_JOIN,
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.ANDI_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ joinColumns = { @JoinColumn(name = DBEntities.NODANNC_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<AreaNwkDeviceInfoAnncEntity> childAreaNwkDeviceInfoEntities;
+
+ // Database link to DeviceInfo entity
+ @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
+ @JoinTable(
+ name = DBEntities.DVI_NODANNC_JOIN,
+ inverseJoinColumns = { @JoinColumn(name = DBEntities.DVI_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
+ joinColumns = { @JoinColumn(name = DBEntities.NODANNC_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
+ )
+ protected List<DeviceInfoAnncEntity> childDeviceInfoEntities;
+
+ /**
+ * @return the accessControlPolicies
+ */
+ public List<AccessControlPolicyEntity> getAccessControlPolicies() {
+ if (this.linkedAcps == null) {
+ this.linkedAcps = new ArrayList<>();
+ }
+ return linkedAcps;
+ }
+
+ /**
+ * @param accessControlPolicies the accessControlPolicies to set
+ */
+ public void setAccessControlPolicies(List<AccessControlPolicyEntity> accessControlPolicies) {
+ this.linkedAcps = accessControlPolicies;
+ }
+
+ /**
+ * @return the nodeID
+ */
+ public String getNodeID() {
+ return nodeID;
+ }
+
+ /**
+ * @param nodeID the nodeID to set
+ */
+ public void setNodeID(String nodeID) {
+ this.nodeID = nodeID;
+ }
+
+ /**
+ * @return the hostedCSELink
+ */
+ public String getHostedCSELink() {
+ return hostedCSELink;
+ }
+
+ /**
+ * @param hostedCSELink the hostedCSELink to set
+ */
+ public void setHostedCSELink(String hostedCSELink) {
+ this.hostedCSELink = hostedCSELink;
+ }
+
+ /**
+ * @return the hostedAppLink
+ */
+ public String getHostedServiceLinks() {
+ return hostedServiceLinks;
+ }
+
+ /**
+ * @param hostedCSELink the hostedAppLink to set
+ */
+ public void setHostedServiceLinks(String hostedServiceLinks) {
+ this.hostedServiceLinks = hostedServiceLinks;
+ }
+
+ /**
+ * @return the parentCsb
+ */
+ public CSEBaseEntity getParentCsb() {
+ return parentCsb;
+ }
+
+ /**
+ * @param parentCsb the parentCsb to set
+ */
+ public void setParentCsb(CSEBaseEntity parentCsb) {
+ this.parentCsb = parentCsb;
+ }
+
+ /**
+ * @return the parentCsr
+ */
+ public RemoteCSEEntity getParentCsr() {
+ return parentCsr;
+ }
+
+ /**
+ * @param parentCsr the parentCsr to set
+ */
+ public void setParentCsr(RemoteCSEEntity parentCsr) {
+ this.parentCsr = parentCsr;
+ }
+
+ /**
+ * @return the childSubscriptions
+ */
+ public List<SubscriptionEntity> getChildSubscriptions() {
+ return childSubscriptions;
+ }
+
+ /**
+ * @param childSubscriptions the childSubscriptions to set
+ */
+ public void setChildSubscriptions(List<SubscriptionEntity> childSubscriptions) {
+ this.childSubscriptions = childSubscriptions;
+ }
+
+ /**
+ * @return the childAreaNwkInfoEntities
+ */
+ public List<AreaNwkInfoAnncEntity> getChildAreaNwkInfoEntities() {
+ if (this.childAreaNwkInfoEntities == null) {
+ this.childAreaNwkInfoEntities = new ArrayList<>();
+ }
+ return childAreaNwkInfoEntities;
+ }
+
+ /**
+ * @param childAreaNwkInfoEntities the childAreaNwkInfoEntities to set
+ */
+ public void setChildAreaNwkInfoAnncEntities(List<AreaNwkInfoAnncEntity> childAreaNwkInfoEntities) {
+ this.childAreaNwkInfoEntities = childAreaNwkInfoEntities;
+ }
+
+ /**
+ * @return the childAreaNwkDeviceInfoEntities
+ */
+ public List<AreaNwkDeviceInfoAnncEntity> getChildAreaNwkDeviceInfoEntities() {
+ if (this.childAreaNwkDeviceInfoEntities == null) {
+ this.childAreaNwkDeviceInfoEntities = new ArrayList<>();
+ }
+ return childAreaNwkDeviceInfoEntities;
+ }
+
+ /**
+ * @param childAreaNwkDeviceInfoEntities the childAreaNwkDeviceInfoEntities to set
+ */
+ public void setChildAreaNwkDeviceInfoAnncEntities(List<AreaNwkDeviceInfoAnncEntity> childAreaNwkDeviceInfoEntities) {
+ this.childAreaNwkDeviceInfoEntities = childAreaNwkDeviceInfoEntities;
+ }
+
+ /**
+ * @return the childDeviceInfoEntities
+ */
+ public List<DeviceInfoAnncEntity> getChildDeviceInfoEntities() {
+ if (this.childDeviceInfoEntities == null) {
+ this.childDeviceInfoEntities = new ArrayList<>();
+ }
+ return childDeviceInfoEntities;
+ }
+
+ /**
+ * @param childDeviceInfoEntities the childDeviceInfoEntities to set
+ */
+ public void setChildDeviceInfoAnncEntities(List<DeviceInfoAnncEntity> childDeviceInfoEntities) {
+ this.childDeviceInfoEntities = childDeviceInfoEntities;
+ }
+
+ @Override
+ /**
+ * Retrieve linked dynamicAuthorizationConsultations
+ */
+ public List<DynamicAuthorizationConsultationEntity> getDynamicAuthorizationConsultations() {
+ if (dynamicAuthorizationConsultations == null) {
+ dynamicAuthorizationConsultations = new ArrayList<>();
+ }
+ return dynamicAuthorizationConsultations;
+ }
+
+ @Override
+ /**
+ * Set linked dynamicAuthorizationConsultations
+ */
+ public void setDynamicAuthorizationConsultations(List<DynamicAuthorizationConsultationEntity> list) {
+ this.dynamicAuthorizationConsultations = list;
+ }
+
+ public List<MgmtObjAnncEntity> getMgmtObjEntities() {
+ List<MgmtObjAnncEntity> ret = new ArrayList<MgmtObjAnncEntity>();
+ ret.addAll(getChildAreaNwkInfoEntities());
+ ret.addAll(getChildAreaNwkDeviceInfoEntities());
+ ret.addAll(getChildDeviceInfoEntities());
+ return ret;
+ }
+
+ public void addMgmtObj(MgmtObjAnncEntity mgmtObj) {
+ BigInteger mgmtDef = mgmtObj.getMgmtDefinition();
+ if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
+ getChildAreaNwkInfoEntities().add((AreaNwkInfoAnncEntity) mgmtObj);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO))
+ getChildAreaNwkDeviceInfoEntities().add((AreaNwkDeviceInfoAnncEntity) mgmtObj);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.DEVICE_INFO))
+ getChildDeviceInfoEntities().add((DeviceInfoAnncEntity) mgmtObj);
+ }
+
+ public void removeMgmtObj(MgmtObjAnncEntity mgmtObj) {
+ BigInteger mgmtDef = mgmtObj.getMgmtDefinition();
+ if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
+ getChildAreaNwkInfoEntities().remove((AreaNwkInfoAnncEntity) mgmtObj);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO))
+ getChildAreaNwkDeviceInfoEntities().remove((AreaNwkDeviceInfoAnncEntity) mgmtObj);
+ else if (mgmtDef.equals(MgmtDefinitionTypes.DEVICE_INFO))
+ getChildDeviceInfoEntities().remove((DeviceInfoAnncEntity) mgmtObj);
+ }
+
+}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/NodeEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/NodeEntity.java
index fff23af..da172c6 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/NodeEntity.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/NodeEntity.java
@@ -70,10 +70,10 @@
protected String hostedCSELink;
// hosted APP LINK
- @Column(name = ShortName.HOSTED_APP_LINK)
- protected String hostedAppLink;
+ @Column(name = ShortName.HOSTED_SRV_LINK)
+ protected String hostedServiceLinks;
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch=FetchType.LAZY, targetEntity=CSEBaseEntity.class)
@JoinTable(
name = DBEntities.CSB_NOD_CH_JOIN,
joinColumns = { @JoinColumn(name = DBEntities.NOD_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
@@ -81,13 +81,13 @@
)
protected CSEBaseEntity parentCsb;
- @ManyToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch=FetchType.LAZY, targetEntity=RemoteCSEEntity.class)
@JoinTable(
name = DBEntities.CSR_NOD_CH_JOIN,
joinColumns = { @JoinColumn(name = DBEntities.NOD_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
inverseJoinColumns = { @JoinColumn(name = DBEntities.CSR_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) }
)
- protected CSEBaseEntity parentCsr;
+ protected RemoteCSEEntity parentCsr;
@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
@JoinTable(
@@ -116,7 +116,7 @@
protected List<AreaNwkDeviceInfoEntity> childAreaNwkDeviceInfoEntities;
// Database link to DeviceInfo entity
- @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
+ @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL}, mappedBy="parentNode")
@JoinTable(
name = DBEntities.DVI_NOD_JOIN,
inverseJoinColumns = { @JoinColumn(name = DBEntities.DVI_JOIN_ID, referencedColumnName = ShortName.RESOURCE_ID) },
@@ -173,15 +173,15 @@
/**
* @return the hostedAppLink
*/
- public String getHostedAppLink() {
- return hostedAppLink;
+ public String getHostedServiceLinks() {
+ return hostedServiceLinks;
}
/**
* @param hostedCSELink the hostedAppLink to set
*/
- public void setHostedAppLink(String hostedAppLink) {
- this.hostedAppLink = hostedAppLink;
+ public void setHostedServiceLinks(String hostedServiceLinks) {
+ this.hostedServiceLinks = hostedServiceLinks;
}
/**
@@ -201,14 +201,14 @@
/**
* @return the parentCsr
*/
- public CSEBaseEntity getParentCsr() {
+ public RemoteCSEEntity getParentCsr() {
return parentCsr;
}
/**
* @param parentCsr the parentCsr to set
*/
- public void setParentCsr(CSEBaseEntity parentCsr) {
+ public void setParentCsr(RemoteCSEEntity parentCsr) {
this.parentCsr = parentCsr;
}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/RemoteCSEEntity.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/RemoteCSEEntity.java
index 7596093..a76f0e4 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/RemoteCSEEntity.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/entities/RemoteCSEEntity.java
@@ -175,13 +175,22 @@
protected ScheduleEntity linkedSchedule;
/** List of Nodes */
- @OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.ALL})
+ @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="parentCsr")
@JoinTable(
name=DBEntities.CSR_NOD_CH_JOIN,
joinColumns={@JoinColumn(name=DBEntities.CSR_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
inverseJoinColumns={@JoinColumn(name=DBEntities.NOD_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
)
protected List<NodeEntity> childNodes;
+
+ /** List of announced Nodes */
+ @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="parentCsr")
+ @JoinTable(
+ name=DBEntities.CSR_NODANNC_CH_JOIN,
+ joinColumns={@JoinColumn(name=DBEntities.CSR_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)},
+ inverseJoinColumns={@JoinColumn(name=DBEntities.NODANNC_JOIN_ID, referencedColumnName=ShortName.RESOURCE_ID)}
+ )
+ protected List<NodeAnncEntity> childAnncNodes;
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL,mappedBy="parentRemoteCse")
@JoinTable(
@@ -494,6 +503,9 @@
* @return the childNodes
*/
public List<NodeEntity> getChildNodes() {
+ if (this.childNodes == null) {
+ this.childNodes = new ArrayList<>();
+ }
return childNodes;
}
@@ -505,6 +517,23 @@
}
/**
+ * @return the childNodes
+ */
+ public List<NodeAnncEntity> getChildAnncNodes() {
+ if (this.childAnncNodes == null) {
+ this.childAnncNodes = new ArrayList<>();
+ }
+ return childAnncNodes;
+ }
+
+ /**
+ * @param childNodes the childNodes to set
+ */
+ public void setChildAnncNodes(List<NodeAnncEntity> childNodes) {
+ this.childAnncNodes = childNodes;
+ }
+
+ /**
* @return the generatedAcp
*/
public AccessControlPolicyEntity getGeneratedAcp() {
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/AbstractFlexContainerAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/AbstractFlexContainerAnnc.java
index 2f2d7ad..8e2c705 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/AbstractFlexContainerAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/AbstractFlexContainerAnnc.java
@@ -41,6 +41,9 @@
@XmlSchemaType(name = "anyURI")
@XmlElement(name = ShortName.CONTAINER_DEFINITION, namespace="")
protected String containerDefinition;
+ @XmlSchemaType(name = "anyURI")
+ @XmlElement(name = ShortName.NODE_LINK, required = false, namespace="")
+ protected String nodeLink;
@XmlElement(name = ShortName.CHILD_RESOURCE, namespace="")
protected List<ChildResourceRef> childResource;
@XmlElements({
@@ -258,7 +261,28 @@
}
return this.flexContainerOrContainerOrSubscription;
}
-
+
+ /**
+ * Gets the value of the nodeLink property.
+ *
+ * @return possible object is {@link String }
+ *
+ */
+ public String getNodeLink() {
+ return nodeLink;
+ }
+
+ /**
+ * Sets the value of the nodeLink property.
+ *
+ * @param value
+ * allowed object is {@link String }
+ *
+ */
+ public void setNodeLink(String value) {
+ this.nodeLink = value;
+ }
+
public void finalizeSerialization() {
// do nothing
// should be overwrote
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/AnnouncedMgmtResource.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/AnnouncedMgmtResource.java
index f19d843..804705c 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/AnnouncedMgmtResource.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/AnnouncedMgmtResource.java
@@ -65,7 +65,8 @@
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "announcedMgmtResource")
+@XmlType(name = "announcedMgmtResource", propOrder = { "mgmtDefinition",
+ "objectIDs", "objectPaths", "description", "subscriptions", "childResource" })
@XmlSeeAlso({ EventLogAnnc.class, RebootAnnc.class, DeviceCapabilityAnnc.class,
DeviceInfoAnnc.class, SoftwareAnnc.class, FirmwareAnnc.class,
AreaNwkDeviceInfoAnnc.class, AreaNwkInfoAnnc.class, BatteryAnnc.class,
@@ -73,16 +74,16 @@
public class AnnouncedMgmtResource extends AnnouncedResource {
@XmlElement(name = ShortName.MGMT_DEF, required = true, namespace="")
- protected BigInteger mgmtDefinition;
-
- @XmlList
+ protected BigInteger mgmtDefinition;
+
+ @XmlList
@XmlElement(name = ShortName.OBJ_IDS, namespace="")
protected List<String> objectIDs;
-
- @XmlList
+
+ @XmlList
@XmlElement(name = ShortName.OBJ_PATHS, namespace="")
protected List<String> objectPaths;
-
+
@XmlElement(name = ShortName.DESCRIPTION, namespace="")
protected String description;
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/BatteryAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/BatteryAnnc.java
index 409d87e..93399fd 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/BatteryAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/BatteryAnnc.java
@@ -34,6 +34,7 @@
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
import org.eclipse.om2m.commons.constants.ShortName;
/**
@@ -66,12 +67,17 @@
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = ShortName.BATTERY_ANNC)
-public class BatteryAnnc extends AnnouncedMgmtResource {
+public class BatteryAnnc extends MgmtObjAnncWithChildren {
@XmlSchemaType(name = "unsignedInt")
protected Long batteryLevel;
-
protected BigInteger batteryStatus;
+
+
+ public BatteryAnnc() {
+ super();
+ setMgmtDefinition(MgmtDefinitionTypes.BATTERY);
+ }
/**
* Gets the value of the batteryLevel property.
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/CSEBase.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/CSEBase.java
index a7869ff..c9b0369 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/CSEBase.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/CSEBase.java
@@ -124,7 +124,7 @@
@XmlElements({
@XmlElement(name = ShortName.REMOTE_CSE, namespace = "http://www.onem2m.org/xml/protocols", type = RemoteCSE.class),
- @XmlElement(name = "node", namespace = "http://www.onem2m.org/xml/protocols", type = Node.class),
+ @XmlElement(name = ShortName.NODE, namespace = "http://www.onem2m.org/xml/protocols", type = Node.class),
@XmlElement(name = ShortName.AE, namespace = "http://www.onem2m.org/xml/protocols", type = AE.class),
@XmlElement(name = ShortName.CNT, namespace = "http://www.onem2m.org/xml/protocols", type = Container.class),
@XmlElement(name = ShortName.GROUP, namespace = "http://www.onem2m.org/xml/protocols", type = Group.class),
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceCapability.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceCapability.java
index c3ac172..7b9d803 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceCapability.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceCapability.java
@@ -79,7 +79,7 @@
protected boolean currentState;
protected Boolean enable;
protected Boolean disable;
-
+
public DeviceCapability() {
super();
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceCapabilityAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceCapabilityAnnc.java
index 03e66e7..7d904d4 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceCapabilityAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceCapabilityAnnc.java
@@ -68,7 +68,7 @@
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = ShortName.DEVICE_CAPABILITY_ANNC)
-public class DeviceCapabilityAnnc extends AnnouncedMgmtResource {
+public class DeviceCapabilityAnnc extends MgmtObjAnncWithChildren {
protected String capabilityName;
protected Boolean attached;
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceInfoAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceInfoAnnc.java
index 734a8a3..177c711 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceInfoAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/DeviceInfoAnnc.java
@@ -55,6 +55,17 @@
* <element name="fwVersion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="swVersion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="hwVersion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * <element name="manufacturerDetailsLink" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="manufacturingDate" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="subModel" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="deviceName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="osVersion" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="country" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="location" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="systemTime" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="supportURL" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="presentationURL" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <element name="protocol" type="{http://www.w3.org/2001/XMLSchema}string"/>
* <choice minOccurs="0">
* <element name="childResource" type="{http://www.onem2m.org/xml/protocols}childResourceRef" maxOccurs="unbounded"/>
* <element ref="{http://www.onem2m.org/xml/protocols}subscription" maxOccurs="unbounded"/>
@@ -70,7 +81,7 @@
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = ShortName.DEVICE_INFO_ANNC)
-public class DeviceInfoAnnc extends AnnouncedMgmtResource {
+public class DeviceInfoAnnc extends MgmtObjAnncWithChildren {
@XmlElement(required = true, name = ShortName.DEVICE_LABEL, namespace="")
protected String deviceLabel;
@@ -109,13 +120,13 @@
protected String presentationURL;
@XmlElement(name = ShortName.PROTOCOL, namespace="")
protected String protocol;
-
+
public DeviceInfoAnnc() {
super();
setMgmtDefinition(MgmtDefinitionTypes.DEVICE_INFO);
}
-
+
/**
* Gets the value of the deviceLabel property.
*
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/EventLog.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/EventLog.java
index f0d0ee5..f209dd8 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/EventLog.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/EventLog.java
@@ -27,8 +27,6 @@
package org.eclipse.om2m.commons.resource;
import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@@ -82,8 +80,6 @@
protected BigInteger logStatus;
protected boolean logStart;
protected boolean logStop;
- @XmlElement(namespace = "http://www.onem2m.org/xml/protocols")
- protected List<Subscription> subscription;
public EventLog() {
@@ -186,34 +182,4 @@
this.logStop = value;
}
- /**
- * Gets the value of the subscription property.
- *
- * <p>
- * This accessor method returns a reference to the live list, not a
- * snapshot. Therefore any modification you make to the returned list will
- * be present inside the JAXB object. This is why there is not a
- * <CODE>set</CODE> method for the subscription property.
- *
- * <p>
- * For example, to add a new item, do as follows:
- *
- * <pre>
- * getSubscription().add(newItem);
- * </pre>
- *
- *
- * <p>
- * Objects of the following type(s) are allowed in the list
- * {@link Subscription }
- *
- *
- */
- public List<Subscription> getSubscription() {
- if (subscription == null) {
- subscription = new ArrayList<Subscription>();
- }
- return this.subscription;
- }
-
}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/EventLogAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/EventLogAnnc.java
index 813f85c..1c6659c 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/EventLogAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/EventLogAnnc.java
@@ -69,7 +69,7 @@
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = ShortName.EVENT_LOG_ANNC)
-public class EventLogAnnc extends AnnouncedMgmtResource {
+public class EventLogAnnc extends MgmtObjAnncWithChildren {
protected BigInteger logTypeId;
protected String logData;
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/FirmwareAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/FirmwareAnnc.java
index 5525047..0c2b44d 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/FirmwareAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/FirmwareAnnc.java
@@ -71,9 +71,9 @@
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "")
+@XmlType(name = "", propOrder = { "rest" })
@XmlRootElement(name = ShortName.FIRMWARE_ANNC)
-public class FirmwareAnnc extends AnnouncedMgmtResource {
+public class FirmwareAnnc extends MgmtObjAnncWithChildren {
@XmlElementRefs({
@XmlElementRef(name = "childResource", type = JAXBElement.class, required = false),
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/MemoryAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/MemoryAnnc.java
index 0f4bae8..18b2530 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/MemoryAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/MemoryAnnc.java
@@ -67,7 +67,7 @@
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = ShortName.MEMORY_ANNC)
-public class MemoryAnnc extends AnnouncedMgmtResource {
+public class MemoryAnnc extends MgmtObjAnncWithChildren {
@XmlSchemaType(name = "unsignedLong")
protected BigInteger memAvailable;
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/MgmtObjAnncWithChildren.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/MgmtObjAnncWithChildren.java
new file mode 100644
index 0000000..5649d55
--- /dev/null
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/MgmtObjAnncWithChildren.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2017 Orange.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.om2m.commons.resource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+
+import org.eclipse.om2m.commons.constants.ShortName;
+
+public class MgmtObjAnncWithChildren extends AnnouncedMgmtResource {
+
+ @XmlElement(name = ShortName.CHILD_RESOURCE, namespace="")
+ protected List<ChildResourceRef> childResource;
+
+ @XmlElement(namespace = "http://www.onem2m.org/xml/protocols", name = ShortName.SUB)
+ protected List<Subscription> subscriptions;
+
+ /**
+ * Gets the value of the childResource property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list, not a
+ * snapshot. Therefore any modification you make to the returned list will
+ * be present inside the JAXB object. This is why there is not a
+ * <CODE>set</CODE> method for the childResource property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ *
+ * <pre>
+ * getChildResource().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ChildResourceRef }
+ *
+ *
+ */
+ public List<ChildResourceRef> getChildResource() {
+ if (childResource == null) {
+ childResource = new ArrayList<ChildResourceRef>();
+ }
+ return this.childResource;
+ }
+
+ /**
+ * Gets the value of the subscription property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list, not a
+ * snapshot. Therefore any modification you make to the returned list will
+ * be present inside the JAXB object. This is why there is not a
+ * <CODE>set</CODE> method for the subscription property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ *
+ * <pre>
+ * getSubscription().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Subscription }
+ *
+ *
+ */
+ public List<Subscription> getSubscriptions() {
+ if (subscriptions == null) {
+ subscriptions = new ArrayList<Subscription>();
+ }
+ return this.subscriptions;
+ }
+
+}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/Node.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/Node.java
index 0ced53f..666a714 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/Node.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/Node.java
@@ -93,8 +93,8 @@
@XmlElement(name = ShortName.HOSTED_CSE_LINK, namespace="")
protected String hostedCSELink;
- @XmlElement(name = ShortName.HOSTED_APP_LINK, namespace="")
- protected String hostedAppLinks;
+ @XmlElement(name = ShortName.HOSTED_SRV_LINK, namespace="")
+ protected String hostedServiceLinks;
@XmlElement(name = ShortName.CHILD_RESOURCE, namespace="")
protected List<ChildResourceRef> childResource;
@@ -166,8 +166,8 @@
* @return possible object is {@link String }
*
*/
- public String getHostedAppLinks() {
- return hostedAppLinks;
+ public String getHostedServiceLinks() {
+ return hostedServiceLinks;
}
/**
@@ -177,8 +177,8 @@
* allowed object is {@link String }
*
*/
- public void setHostedAppLinks(String value) {
- this.hostedAppLinks = value;
+ public void setHostedServiceLinks(String value) {
+ this.hostedServiceLinks = value;
}
/**
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/NodeAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/NodeAnnc.java
index 54bea0e..1d14814 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/NodeAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/NodeAnnc.java
@@ -38,6 +38,8 @@
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.eclipse.om2m.commons.constants.ShortName;
+
/**
* <p>
* Java class for anonymous complex type.
@@ -78,29 +80,36 @@
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "", propOrder = { "nodeID", "hostedCSELink", "childResource",
- "memoryAnncOrBatteryAnncOrAreaNwkInfoAnnc" })
-@XmlRootElement(name = "nodeAnnc")
-public class NodeAnnc extends AnnounceableResource {
+@XmlType(name = "")
+@XmlRootElement(name = ShortName.NODE_ANNC)
+public class NodeAnnc extends AnnouncedMgmtResource {
- @XmlElement(required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlElement(required = true, name = ShortName.NODE_ID, namespace="")
protected String nodeID;
+
+ @XmlElement(name = ShortName.HOSTED_CSE_LINK, namespace="")
protected String hostedCSELink;
+
+ @XmlElement(name = ShortName.HOSTED_SRV_LINK, namespace="")
+ protected String hostedServiceLinks;
+
+ @XmlElement(name = ShortName.CHILD_RESOURCE, namespace="")
protected List<ChildResourceRef> childResource;
+
@XmlElements({
- @XmlElement(name = "memoryAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = MemoryAnnc.class),
- @XmlElement(name = "batteryAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = BatteryAnnc.class),
- @XmlElement(name = "areaNwkInfoAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = AreaNwkInfoAnnc.class),
- @XmlElement(name = "areaNwkDeviceInfoAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = AreaNwkDeviceInfoAnnc.class),
- @XmlElement(name = "firmwareAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = FirmwareAnnc.class),
- @XmlElement(name = "softwareAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = SoftwareAnnc.class),
- @XmlElement(name = "deviceInfoAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = DeviceInfoAnnc.class),
- @XmlElement(name = "deviceCapabilityAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = DeviceCapabilityAnnc.class),
- @XmlElement(name = "rebootAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = RebootAnnc.class),
- @XmlElement(name = "eventLogAnnc", namespace = "http://www.onem2m.org/xml/protocols", type = EventLogAnnc.class),
- @XmlElement(name = "subscription", namespace = "http://www.onem2m.org/xml/protocols", type = Subscription.class) })
- protected List<Resource> memoryAnncOrBatteryAnncOrAreaNwkInfoAnnc;
+ @XmlElement(name = ShortName.MEMORY_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = MemoryAnnc.class),
+ @XmlElement(name = ShortName.BATTERY_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = BatteryAnnc.class),
+ @XmlElement(name = ShortName.AREA_NWK_INFO_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = AreaNwkInfoAnnc.class),
+ @XmlElement(name = ShortName.AREA_NWK_DEVICE_INFO_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = AreaNwkDeviceInfoAnnc.class),
+ @XmlElement(name = ShortName.FIRMWARE_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = FirmwareAnnc.class),
+ @XmlElement(name = ShortName.SOFTWARE_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = SoftwareAnnc.class),
+ @XmlElement(name = ShortName.DEVICE_INFO_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = DeviceInfoAnnc.class),
+ @XmlElement(name = ShortName.DEVICE_CAPABILITY_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = DeviceCapabilityAnnc.class),
+ @XmlElement(name = ShortName.REBOOT_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = RebootAnnc.class),
+ @XmlElement(name = ShortName.EVENT_LOG_ANNC, namespace = "http://www.onem2m.org/xml/protocols", type = EventLogAnnc.class),
+ @XmlElement(name = ShortName.SUB, namespace = "http://www.onem2m.org/xml/protocols", type = Subscription.class) })
+ protected List<AnnouncedMgmtResource> mgmmtObjs;
/**
* Gets the value of the nodeID property.
@@ -201,11 +210,25 @@
*
*
*/
- public List<Resource> getMemoryAnncOrBatteryAnncOrAreaNwkInfoAnnc() {
- if (memoryAnncOrBatteryAnncOrAreaNwkInfoAnnc == null) {
- memoryAnncOrBatteryAnncOrAreaNwkInfoAnnc = new ArrayList<Resource>();
+ public List<AnnouncedMgmtResource> getMgmtObjs() {
+ if (mgmmtObjs == null) {
+ mgmmtObjs = new ArrayList<AnnouncedMgmtResource>();
}
- return this.memoryAnncOrBatteryAnncOrAreaNwkInfoAnnc;
+ return this.mgmmtObjs;
+ }
+
+ /**
+ * @return the hostedAppLinks
+ */
+ public String getHostedServiceLinks() {
+ return hostedServiceLinks;
+ }
+
+ /**
+ * @param hostedAppLinks the hostedAppLinks to set
+ */
+ public void setHostedServiceLinks(String hostedServiceLinks) {
+ this.hostedServiceLinks = hostedServiceLinks;
}
}
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/RebootAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/RebootAnnc.java
index 50f53dd..2e66646 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/RebootAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/RebootAnnc.java
@@ -31,6 +31,7 @@
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
import org.eclipse.om2m.commons.constants.ShortName;
/**
@@ -63,10 +64,16 @@
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = ShortName.REBOOT_ANNC)
-public class RebootAnnc extends AnnouncedMgmtResource {
+public class RebootAnnc extends MgmtObjAnncWithChildren {
protected Boolean reboot;
protected Boolean factoryReset;
+
+
+ public RebootAnnc() {
+ super();
+ setMgmtDefinition(MgmtDefinitionTypes.REBOOT);
+ }
/**
* Gets the value of the reboot property.
diff --git a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/SoftwareAnnc.java b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/SoftwareAnnc.java
index f89df00..94b5780 100644
--- a/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/SoftwareAnnc.java
+++ b/org.eclipse.om2m.commons/src/main/java/org/eclipse/om2m/commons/resource/SoftwareAnnc.java
@@ -37,6 +37,7 @@
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
import org.eclipse.om2m.commons.constants.ShortName;
/**
@@ -74,9 +75,9 @@
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "")
+@XmlType(name = "", propOrder = { "rest" })
@XmlRootElement(name = ShortName.SOFTWARE_ANNC)
-public class SoftwareAnnc extends AnnouncedMgmtResource {
+public class SoftwareAnnc extends MgmtObjAnncWithChildren {
@XmlElementRefs({
@XmlElementRef(name = "deactivate", type = JAXBElement.class, required = false),
@@ -91,6 +92,12 @@
@XmlElementRef(name = "version", type = JAXBElement.class, required = false),
@XmlElementRef(name = "install", type = JAXBElement.class, required = false) })
protected List<Object> rest;
+
+
+ public SoftwareAnnc() {
+ super();
+ setMgmtDefinition(MgmtDefinitionTypes.SOFTWARE);
+ }
/**
* Gets the rest of the content model.
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/announcer/Announcer.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/announcer/Announcer.java
index b42e2f4..8825eb1 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/announcer/Announcer.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/announcer/Announcer.java
@@ -19,15 +19,19 @@
*******************************************************************************/
package org.eclipse.om2m.core.announcer;
+import java.math.BigInteger;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.om2m.commons.constants.Constants;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
import org.eclipse.om2m.commons.constants.MimeMediaType;
import org.eclipse.om2m.commons.constants.Operation;
import org.eclipse.om2m.commons.constants.ResourceType;
import org.eclipse.om2m.commons.constants.ResponseStatusCode;
+import org.eclipse.om2m.commons.constants.ShortName;
+import org.eclipse.om2m.commons.entities.AnnounceableSubordinateEntity;
import org.eclipse.om2m.commons.entities.CreatedAnnouncedResourceEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
import org.eclipse.om2m.commons.entities.ResourceEntity;
@@ -37,7 +41,17 @@
import org.eclipse.om2m.commons.resource.AbstractFlexContainer;
import org.eclipse.om2m.commons.resource.AbstractFlexContainerAnnc;
import org.eclipse.om2m.commons.resource.AnnounceableResource;
+import org.eclipse.om2m.commons.resource.AnnouncedMgmtResource;
import org.eclipse.om2m.commons.resource.AnnouncedResource;
+import org.eclipse.om2m.commons.resource.AreaNwkDeviceInfo;
+import org.eclipse.om2m.commons.resource.AreaNwkDeviceInfoAnnc;
+import org.eclipse.om2m.commons.resource.AreaNwkInfo;
+import org.eclipse.om2m.commons.resource.AreaNwkInfoAnnc;
+import org.eclipse.om2m.commons.resource.DeviceInfo;
+import org.eclipse.om2m.commons.resource.DeviceInfoAnnc;
+import org.eclipse.om2m.commons.resource.MgmtObj;
+import org.eclipse.om2m.commons.resource.Node;
+import org.eclipse.om2m.commons.resource.NodeAnnc;
import org.eclipse.om2m.commons.resource.RequestPrimitive;
import org.eclipse.om2m.commons.resource.ResponsePrimitive;
import org.eclipse.om2m.commons.resource.flexcontainerspec.FlexContainerFactory;
@@ -56,6 +70,8 @@
public class Announcer implements Constants {
/** Logger */
private static Log LOGGER = LogFactory.getLog(Announcer.class);
+
+ private static final String SUFFIX = "_Annc";
/**
* Announces the created resource.
@@ -70,25 +86,25 @@
* - requesting entity
* @return
*/
- public static List<String> announce(List<String> announceTo, List<String> announceToAttribute,
- AnnounceableResource toBeAnnounced, String requestingEntity, String remoteDestination) {
-
+ public static void announce(AnnounceableResource toBeAnnounced,
+ String requestingEntity, String remoteDestination) {
AnnouncedResource announcedResource = null;
-
- switch (toBeAnnounced.getResourceType().intValue()) {
+ LOGGER.info("announce " + toBeAnnounced + " with " + toBeAnnounced.getAnnouncedAttribute());
+ int type = toBeAnnounced.getResourceType().intValue();
+ switch (type) {
case ResourceType.AE:
- AEAnnc aeAnnc = new AEAnnc();
- aeAnnc.setAppID(((AE) toBeAnnounced).getAppID());
- announcedResource = aeAnnc;
- break;
+ announcedResource = createAEAnnc((AE)toBeAnnounced); break;
case ResourceType.FLEXCONTAINER:
- AbstractFlexContainer afc = (AbstractFlexContainer) toBeAnnounced;
- AbstractFlexContainerAnnc flexContainerAnnc = FlexContainerFactory.getSpecializationFlexContainerAnnc(afc.getShortName() + "Annc");
- announcedResource = flexContainerAnnc;
+ announcedResource = createFlexContainerAnnc((AbstractFlexContainer)toBeAnnounced); break;
+ case ResourceType.NODE:
+ announcedResource = createNodeAnnc((Node)toBeAnnounced); break;
+ case ResourceType.MGMT_OBJ:
+ announcedResource = createMgmtObjAnnc((MgmtObj)toBeAnnounced); break;
default:
+ throw new NotImplementedException("Not implemented " + type);
}
- announcedResource.setName(toBeAnnounced.getName() + "_Annc");
+ announcedResource.setName(toBeAnnounced.getName() + SUFFIX);
// get the database service
DBService dbs = PersistenceService.getInstance().getDbService();
@@ -103,17 +119,13 @@
// link
announcedResource.setLink(toBeAnnounced.getResourceID());
- for (String cseId : announceTo) {
-
+ for (String cseId : toBeAnnounced.getAnnounceTo()) {
RemoteCSEEntity remoteCSE = dbs.getDAOFactory().getRemoteCSEbyCseIdDAO().find(transaction, cseId);
RequestPrimitive request = new RequestPrimitive();
-
CreatedAnnouncedResourceEntity parentResource = dao.find(transaction, toBeAnnounced.getParentID(), cseId);
if (parentResource != null) {
-
- request.setTo(parentResource.getRemoteAnnouncedId());
+ request.setTo(parentResource.getRemoteAnnouncedId());
} else {
-
if (!remoteDestination.startsWith("/")) {
remoteDestination = "/" + remoteDestination;
}
@@ -122,16 +134,8 @@
}
request.setOperation(Operation.CREATE);
- switch (toBeAnnounced.getResourceType().intValue()) {
- case ResourceType.AE:
- request.setResourceType(ResourceType.AE_ANNC);
- break;
- case ResourceType.FLEXCONTAINER:
- request.setResourceType(ResourceType.FLEXCONTAINER_ANNC);
- break;
- default:
- throw new NotImplementedException("");
- }
+ request.setResourceType(BigInteger.valueOf(
+ toBeAnnounced.getResourceType().intValue() + 10000));
request.setContent(announcedResource);
request.setRequestContentType(MimeMediaType.OBJ);
request.setReturnContentType(MimeMediaType.OBJ);
@@ -148,15 +152,11 @@
announcedResourceEntity.setRemoteAnnouncedId(ar.getResourceID());
dao.create(transaction, announcedResourceEntity);
-
}
-
}
transaction.commit();
transaction.close();
-
- return null;
}
/**
@@ -169,8 +169,7 @@
* @param requestingEntity
* - Requesting Entity
*/
- public static void deAnnounce(List<String> announceTo, ResourceEntity toBeDeAnnounced, String requestingEntity) {
-
+ public static void deAnnounce(AnnounceableSubordinateEntity toBeDeAnnounced, String requestingEntity) {
// get the database service
DBService dbs = PersistenceService.getInstance().getDbService();
DBTransaction transaction = dbs.getDbTransaction();
@@ -178,22 +177,150 @@
AnnouncedResourceUtil announceResourceUtil = dbs.getDBUtilManager().getAnnouncedResourceUtil();
- for (String cseId : announceTo) {
-
- CreatedAnnouncedResourceEntity are = announceResourceUtil.find(transaction, toBeDeAnnounced.getResourceID(),
- cseId);
+ for (String cseId : toBeDeAnnounced.getAnnounceTo()) {
+ CreatedAnnouncedResourceEntity are = announceResourceUtil.find(transaction,
+ toBeDeAnnounced.getResourceID(), cseId);
if (are != null) {
RequestPrimitive request = new RequestPrimitive();
request.setTo(are.getRemoteAnnouncedId());
request.setOperation(Operation.DELETE);
request.setFrom(requestingEntity);
Redirector.retarget(request);
-
announceResourceUtil.delete(transaction, are);
}
-
}
transaction.commit();
transaction.close();
}
+
+ private static AnnouncedResource createAEAnnc(AE res) {
+ AEAnnc annc = new AEAnnc();
+ // Mandatory Announced
+ annc.setExpirationTime(res.getExpirationTime());
+// annc.getAccessControlPolicyIDs().addAll(res.getAccessControlPolicyIDs());
+ annc.getLabels().addAll(res.getLabels());
+ // Optionally Announced
+ for (String aa : res.getAnnouncedAttribute()) {
+ switch(aa) {
+ case ShortName.APP_NAME: annc.setAppName(res.getAppName()); break;
+ case ShortName.APP_ID: annc.setAppID(res.getAppID()); break;
+ case ShortName.AE_ID: annc.setAEID(res.getAEID()); break;
+ case ShortName.POA: annc.getPointOfAccess().addAll(res.getPointOfAccess()); break;
+ case ShortName.ONTOLOGY_REF: annc.setOntologyRef(res.getOntologyRef()); break;
+ case ShortName.NODE_LINK: annc.setNodeLink(res.getNodeLink()); break;
+ }
+ }
+ return annc;
+ }
+
+ private static AnnouncedResource createFlexContainerAnnc(AbstractFlexContainer res) {
+ AbstractFlexContainerAnnc annc = FlexContainerFactory.getSpecializationFlexContainerAnnc(res.getShortName() + "Annc");
+ // Mandatory Announced
+ annc.setExpirationTime(res.getExpirationTime());
+// annc.getAccessControlPolicyIDs().addAll(res.getAccessControlPolicyIDs());
+ annc.getLabels().addAll(res.getLabels());
+ for (String aa : res.getAnnouncedAttribute()) {
+ switch(aa) {
+ case ShortName.STATETAG: annc.setStateTag(res.getStateTag()); break;
+ case ShortName.ONTOLOGY_REF: annc.setOntologyRef(res.getOntologyRef()); break;
+ case ShortName.NODE_LINK: annc.setNodeLink(res.getNodeLink() + SUFFIX); break;
+ }
+ }
+ return annc;
+ }
+
+ private static AnnouncedResource createNodeAnnc(Node res) {
+ NodeAnnc annc = new NodeAnnc();
+ // Mandatory Announced
+ annc.setExpirationTime(res.getExpirationTime());
+// annc.getAccessControlPolicyIDs().addAll(res.getAccessControlPolicyIDs());
+ annc.getLabels().addAll(res.getLabels());
+ annc.setNodeID(res.getNodeID());
+ // Optionally Announced
+ for (String aa : res.getAnnouncedAttribute()) {
+ switch(aa) {
+ case ShortName.HOSTED_CSE_LINK: annc.setHostedCSELink(res.getHostedCSELink()); break;
+ case ShortName.HOSTED_SRV_LINK: annc.setHostedServiceLinks(res.getHostedServiceLinks() + SUFFIX); break;
+ }
+ }
+ return annc;
+ }
+
+ private static AnnouncedResource createMgmtObjAnnc(MgmtObj res) {
+ AnnouncedMgmtResource annc = null;
+ BigInteger type = res.getMgmtDefinition();
+ if (type.equals(MgmtDefinitionTypes.AREA_NWK_INFO)) {
+ AreaNwkInfo ani = (AreaNwkInfo) res;
+ AreaNwkInfoAnnc ania = new AreaNwkInfoAnnc();
+ annc = ania;
+ for (String aa : res.getAnnouncedAttribute()) {
+ switch(aa) {
+ case ShortName.AREA_NWK_TYPE: ania.setAreaNwkType(ani.getAreaNwkType()); break;
+ }
+ }
+ }
+ else if (type.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO)) {
+ AreaNwkDeviceInfo andi = (AreaNwkDeviceInfo) res;
+ AreaNwkDeviceInfoAnnc andia = new AreaNwkDeviceInfoAnnc();
+ annc = andia;
+ for (String aa : res.getAnnouncedAttribute()) {
+ switch(aa) {
+ case ShortName.DEV_ID: andia.setDevID(andi.getDevID()); break;
+ case ShortName.DEV_TYPE: andia.setDevType(andi.getDevType()); break;
+ case ShortName.AREA_NWK_ID: andia.setAreaNwkId(andi.getAreaNwkId()); break;
+ case ShortName.SLEEP_INTERVAL: andia.setSleepInterval(andi.getSleepInterval()); break;
+ case ShortName.SLEEP_DURATION: andia.setSleepDuration(andi.getSleepDuration()); break;
+ case ShortName.STATUS: andia.setStatus(andi.getStatus()); break;
+ }
+ }
+ }
+ else if (type.equals(MgmtDefinitionTypes.DEVICE_INFO)) {
+ DeviceInfo di = (DeviceInfo) res;
+ DeviceInfoAnnc dia = new DeviceInfoAnnc();
+ annc = dia;
+ for (String aa : res.getAnnouncedAttribute()) {
+ switch(aa) {
+ case ShortName.DEVICE_LABEL: dia.setDeviceLabel(di.getDeviceLabel()); break;
+ case ShortName.MANUFACTURER: dia.setManufacturer(di.getManufacturer()); break;
+ case ShortName.DEVICE_MODEL: dia.setModel(di.getModel()); break;
+ case ShortName.DEVICE_TYPE: dia.setDeviceType(di.getDeviceType()); break;
+ case ShortName.FW_VERSION: dia.setFwVersion(di.getFwVersion()); break;
+ case ShortName.HW_VERSION: dia.setHwVersion(di.getHwVersion()); break;
+ case ShortName.OS_VERSION: dia.setOsVersion(di.getOsVersion()); break;
+ }
+ }
+ }
+ // else if (type.equals(MgmtDefinitionTypes.FIRMWARE))
+ // return new FirmwareAnnc();
+ // else if (type.equals(MgmtDefinitionTypes.SOFTWARE))
+ // return new SoftwareAnnc();
+ // else if (type.equals(MgmtDefinitionTypes.MEMORY))
+ // return new MemoryAnnc();
+ // else if (type.equals(MgmtDefinitionTypes.BATTERY))
+ // return new BatteryAnnc();
+ // else if (type.equals(MgmtDefinitionTypes.DEVICE_CAPABILITY))
+ // return new DeviceCapabilityAnnc();
+ // else if (type.equals(MgmtDefinitionTypes.REBOOT))
+ // return new RebootAnnc();
+ // else if (type.equals(MgmtDefinitionTypes.EVENT_LOG))
+ // return new EventLogAnnc();
+
+ // Common attributes
+ if (annc != null) {
+ // Mandatory Announced
+ annc.setExpirationTime(res.getExpirationTime());
+// annc.getAccessControlPolicyIDs().addAll(res.getAccessControlPolicyIDs());
+ annc.getLabels().addAll(res.getLabels());
+ // Optionally Announced
+ for (String aa : res.getAnnouncedAttribute()) {
+ switch(aa) {
+ case ShortName.OBJ_IDS: annc.getObjectIDs().addAll(res.getObjectIDs()); break;
+ case ShortName.OBJ_PATHS: annc.getObjectPaths().addAll(res.getObjectPaths()); break;
+ case ShortName.DESCRIPTION: annc.setDescription(res.getDescription()); break;
+ }
+ }
+ }
+ return annc;
+ }
+
}
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/AEController.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/AEController.java
index b23308c..9f3a129 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/AEController.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/AEController.java
@@ -336,11 +336,11 @@
// Commit the DB transaction & release lock
transaction.commit();
- if ((ae.getAnnounceTo() != null) && (!ae.getAnnounceTo().isEmpty())) {
+ if (! ae.getAnnounceTo().isEmpty()) {
ae.setName(aeDB.getName());
ae.setResourceID(aeDB.getResourceID());
ae.setResourceType(ResourceType.AE);
- Announcer.announce(ae.getAnnounceTo(), ae.getAnnouncedAttribute(), ae, request.getFrom(), "");
+ Announcer.announce(ae, request.getFrom(), "");
}
// Create the response
@@ -603,9 +603,9 @@
transaction.commit();
// deannounce
-
- Announcer.deAnnounce(aeEntity.getAnnounceTo(), aeEntity, Constants.ADMIN_REQUESTING_ENTITY);
-
+ if (! aeEntity.getAnnounceTo().isEmpty()) {
+ Announcer.deAnnounce(aeEntity, Constants.ADMIN_REQUESTING_ENTITY);
+ }
// Return rsc
response.setResponseStatusCode(ResponseStatusCode.DELETED);
return response;
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/DiscoveryController.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/DiscoveryController.java
index 621f37c..2753fc5 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/DiscoveryController.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/DiscoveryController.java
@@ -41,7 +41,9 @@
import org.eclipse.om2m.commons.entities.FlexContainerEntity;
import org.eclipse.om2m.commons.entities.GroupEntity;
import org.eclipse.om2m.commons.entities.LabelEntity;
+import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
import org.eclipse.om2m.commons.entities.ResourceEntity;
@@ -221,8 +223,12 @@
return ((FlexContainerAnncEntity) resourceEntity).getAccessControlPolicies();
case ResourceType.NODE:
return ((NodeEntity) resourceEntity).getAccessControlPolicies();
+ case ResourceType.NODE_ANNC:
+ return ((NodeAnncEntity) resourceEntity).getAccessControlPolicies();
case ResourceType.MGMT_OBJ:
return ((MgmtObjEntity)resourceEntity).getAccessControlPolicies();
+ case ResourceType.MGMT_OBJ_ANNC:
+ return ((MgmtObjAnncEntity)resourceEntity).getAccessControlPolicies();
default:
// TODO On implementing resource, add the reference here
return null;
@@ -267,11 +273,19 @@
case(ResourceType.NODE):
result.addAll(labelEntity.getLinkedNodes());
break;
+ case(ResourceType.NODE_ANNC):
+ result.addAll(labelEntity.getLinkedNodesA());
+ break;
case(ResourceType.MGMT_OBJ):
result.addAll(labelEntity.getLinkedAni());
result.addAll(labelEntity.getLinkedAndi());
result.addAll(labelEntity.getLinkedDvi());
break;
+ case(ResourceType.MGMT_OBJ_ANNC):
+ result.addAll(labelEntity.getLinkedAniA());
+ result.addAll(labelEntity.getLinkedAndiA());
+ result.addAll(labelEntity.getLinkedDviA());
+ break;
case(ResourceType.SUBSCRIPTION):
result.addAll(labelEntity.getLinkedSub());
break;
@@ -290,9 +304,13 @@
result.addAll(labelEntity.getLinkedFcntA());
result.addAll(labelEntity.getLinkedACP());
result.addAll(labelEntity.getLinkedNodes());
+ result.addAll(labelEntity.getLinkedNodesA());
result.addAll(labelEntity.getLinkedAni());
+ result.addAll(labelEntity.getLinkedAniA());
result.addAll(labelEntity.getLinkedAndi());
+ result.addAll(labelEntity.getLinkedAndiA());
result.addAll(labelEntity.getLinkedDvi());
+ result.addAll(labelEntity.getLinkedDviA());
result.addAll(labelEntity.getLinkedSub());
}
return result;
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/FlexContainerAnncController.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/FlexContainerAnncController.java
index aee70c3..6de2d93 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/FlexContainerAnncController.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/FlexContainerAnncController.java
@@ -9,6 +9,8 @@
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.eclipse.om2m.commons.constants.Constants;
import org.eclipse.om2m.commons.constants.MimeMediaType;
import org.eclipse.om2m.commons.constants.Operation;
@@ -42,6 +44,10 @@
public class FlexContainerAnncController extends Controller {
+ /** Logger */
+ private static Log LOGGER = LogFactory.getLog(FlexContainerAnncController.class);
+
+ @SuppressWarnings("unchecked")
@Override
public ResponsePrimitive doCreate(RequestPrimitive request) {
/*
@@ -160,6 +166,11 @@
flexContainerAnncEntity.setCreator(flexContainerAnnc.getCreator());
}
+ // nodeLink O
+ if (flexContainerAnnc.getNodeLink() != null) {
+ flexContainerAnncEntity.setNodeLink(flexContainerAnnc.getNodeLink());
+ }
+
// containerDefinition != null
if ((flexContainerAnnc.getContainerDefinition() == null) || (flexContainerAnnc.getContainerDefinition().isEmpty())) {
// the containerDefinition MUST be provided
@@ -168,6 +179,11 @@
flexContainerAnncEntity.setContainerDefinition(flexContainerAnnc.getContainerDefinition());
}
+ // ontologyRef O
+ if (flexContainerAnnc.getOntologyRef() != null) {
+ flexContainerAnncEntity.setOntologyRef(flexContainerAnnc.getOntologyRef());
+ }
+
// containerDefinition exists...
// TODO
@@ -183,10 +199,10 @@
}
flexContainerAnncEntity.setLongName(flexContainerAnnc.getLongName());
flexContainerAnncEntity.setShortName(flexContainerAnnc.getShortName());
- flexContainerAnncEntity.setResourceID(
- "/" + Constants.CSE_ID + "/" + ShortName.FCNTA + Constants.PREFIX_SEPERATOR + generatedId);
- flexContainerAnncEntity
- .setHierarchicalURI(parentEntity.getHierarchicalURI() + "/" + flexContainerAnncEntity.getName());
+ flexContainerAnncEntity.setResourceID("/" + Constants.CSE_ID + "/" + ShortName.FCNTA
+ + Constants.PREFIX_SEPERATOR + generatedId);
+ flexContainerAnncEntity.setHierarchicalURI(parentEntity.getHierarchicalURI()
+ + "/" + flexContainerAnncEntity.getName());
flexContainerAnncEntity.setParentID(parentEntity.getResourceID());
flexContainerAnncEntity.setResourceType(ResourceType.FLEXCONTAINER_ANNC);
switch(parentEntity.getResourceType().intValue()) {
@@ -217,11 +233,6 @@
throw new ConflictException("Name already present in the parent collection.");
}
- // ontologyRef O
- if (flexContainerAnnc.getOntologyRef() != null) {
- flexContainerAnncEntity.setOntologyRef(flexContainerAnnc.getOntologyRef());
- }
-
// custom attributes
// LOGGER.debug("nb of customAttributes: "
// + (flexContainer.getCustomAttributes() != null ?
@@ -330,115 +341,113 @@
originalResourceRequest.setReturnContentType(request.getReturnContentType());
originalResourceRequest.setContent(request.getContent());
return Redirector.retarget(originalResourceRequest);
+ }
+ // create the response base
+ ResponsePrimitive response = new ResponsePrimitive(request);
+
+ AbstractFlexContainerAnnc modifiedFlexCtr = new AbstractFlexContainerAnnc();
+ // check if content is present
+ if (request.getContent() == null) {
+ // content might be null for FlexContainer representing a SDT action
} else {
- // create the response base
- ResponsePrimitive response = new ResponsePrimitive(request);
-
- AbstractFlexContainerAnnc modifiedAttributes = new AbstractFlexContainerAnnc();
- // check if content is present
- if (request.getContent() != null) {
- // create the java object from the resource representation
- // get the object from the representation
- AbstractFlexContainerAnnc flexContainerAnnc = null;
- try {
- if (request.getRequestContentType().equals(MimeMediaType.OBJ)) {
- flexContainerAnnc = (AbstractFlexContainerAnnc) request.getContent();
- } else {
- flexContainerAnnc = (AbstractFlexContainerAnnc) DataMapperSelector.getDataMapperList()
- .get(request.getRequestContentType()).stringToObj((String) request.getContent());
- }
-
-
- } catch (ClassCastException e) {
- throw new BadRequestException("Incorrect resource representation in content", e);
- }
- if (flexContainerAnnc == null) {
- throw new BadRequestException("Error in provided content");
- }
-
- // check attributes, NP attributes are ignored
- // @resourceName NP
- // resourceType NP
- // resourceID NP
- // parentID NP
- // creationTime NP
- // creator NP
- // lastModifiedTime NP
- // currentNrOfInstances NP
- // currentByteSize NP
-
- // labels O
- // accessControlPolicyIDs O
- if (!flexContainerAnnc.getAccessControlPolicyIDs().isEmpty()) {
- flexContainerAnncEntity.getAccessControlPolicies().clear();
- flexContainerAnncEntity.setAccessControlPolicies(
- ControllerUtil.buildAcpEntityList(flexContainerAnnc.getAccessControlPolicyIDs(), transaction));
- modifiedAttributes.getAccessControlPolicyIDs().addAll(flexContainerAnnc.getAccessControlPolicyIDs());
- }
- // dynamicAuthorizationConsultationIDs O
- if (!flexContainerAnnc.getDynamicAuthorizationConsultationIDs().isEmpty()) {
- flexContainerAnncEntity.setDynamicAuthorizationConsultations(
- ControllerUtil.buildDacEntityList(flexContainerAnnc.getDynamicAuthorizationConsultationIDs(), transaction));
-
- // update link with flexContainerAnncEntity - DacEntity
- for(DynamicAuthorizationConsultationEntity dace : flexContainerAnncEntity.getDynamicAuthorizationConsultations()) {
- DynamicAuthorizationConsultationEntity daceFromDB = dbs.getDAOFactory().getDynamicAuthorizationDAO().find(transaction, dace.getResourceID());
- daceFromDB.getLinkedFlexContainerAnncEntities().add(flexContainerAnncEntity);
- dbs.getDAOFactory().getDynamicAuthorizationDAO().update(transaction, daceFromDB);
- }
- }
- // labels O
- if (!flexContainerAnnc.getLabels().isEmpty()) {
- flexContainerAnncEntity.setLabelsEntitiesFromSring(flexContainerAnnc.getLabels());
- modifiedAttributes.getLabels().addAll(flexContainerAnnc.getLabels());
- }
- // expirationTime O
- if (flexContainerAnnc.getExpirationTime() != null) {
- flexContainerAnncEntity.setExpirationTime(flexContainerAnnc.getExpirationTime());
- modifiedAttributes.setExpirationTime(flexContainerAnnc.getExpirationTime());
- }
-
- // ontologyRef O
- if (flexContainerAnnc.getOntologyRef() != null) {
- flexContainerAnncEntity.setOntologyRef(flexContainerAnnc.getOntologyRef());
- modifiedAttributes.setOntologyRef(flexContainerAnnc.getOntologyRef());
- }
-
- // containerDef
- if ((flexContainerAnnc.getContainerDefinition() != null)
- && (!flexContainerAnncEntity.getContainerDefinition().equals(flexContainerAnnc.getContainerDefinition()))) {
- throw new BadRequestException("unable to change the containerDefinition value");
+ // create the java object from the resource representation
+ // get the object from the representation
+ AbstractFlexContainerAnnc flexContainerAnnc = null;
+ try {
+ if (request.getRequestContentType().equals(MimeMediaType.OBJ)) {
+ flexContainerAnnc = (AbstractFlexContainerAnnc) request.getContent();
+ } else {
+ flexContainerAnnc = (AbstractFlexContainerAnnc) DataMapperSelector.getDataMapperList()
+ .get(request.getRequestContentType()).stringToObj((String) request.getContent());
}
- } else {
- // content might be null for FlexContainer representing a SDT action
+ } catch (ClassCastException e) {
+ throw new BadRequestException("Incorrect resource representation in content", e);
+ }
+ if (flexContainerAnnc == null) {
+ throw new BadRequestException("Error in provided content");
}
- flexContainerAnncEntity.setLastModifiedTime(DateUtil.now());
- modifiedAttributes.setLastModifiedTime(flexContainerAnncEntity.getLastModifiedTime());
+ // check attributes, NP attributes are ignored
+ // @resourceName NP
+ // resourceType NP
+ // resourceID NP
+ // parentID NP
+ // creationTime NP
+ // creator NP
+ // lastModifiedTime NP
+ // currentNrOfInstances NP
+ // currentByteSize NP
+ // labels O
+ // accessControlPolicyIDs O
+ if (!flexContainerAnnc.getAccessControlPolicyIDs().isEmpty()) {
+ flexContainerAnncEntity.getAccessControlPolicies().clear();
+ flexContainerAnncEntity.setAccessControlPolicies(
+ ControllerUtil.buildAcpEntityList(flexContainerAnnc.getAccessControlPolicyIDs(), transaction));
+ modifiedFlexCtr.getAccessControlPolicyIDs().addAll(flexContainerAnnc.getAccessControlPolicyIDs());
+ }
+ // dynamicAuthorizationConsultationIDs O
+ if (!flexContainerAnnc.getDynamicAuthorizationConsultationIDs().isEmpty()) {
+ flexContainerAnncEntity.setDynamicAuthorizationConsultations(
+ ControllerUtil.buildDacEntityList(flexContainerAnnc.getDynamicAuthorizationConsultationIDs(), transaction));
- // at this point, we are sure there was no error when setting custom
- // attribute parameter
+ // update link with flexContainerAnncEntity - DacEntity
+ for(DynamicAuthorizationConsultationEntity dace : flexContainerAnncEntity.getDynamicAuthorizationConsultations()) {
+ DynamicAuthorizationConsultationEntity daceFromDB = dbs.getDAOFactory().getDynamicAuthorizationDAO().find(transaction, dace.getResourceID());
+ daceFromDB.getLinkedFlexContainerAnncEntities().add(flexContainerAnncEntity);
+ dbs.getDAOFactory().getDynamicAuthorizationDAO().update(transaction, daceFromDB);
+ }
+ }
+ // labels O
+ if (!flexContainerAnnc.getLabels().isEmpty()) {
+ flexContainerAnncEntity.setLabelsEntitiesFromSring(flexContainerAnnc.getLabels());
+ modifiedFlexCtr.getLabels().addAll(flexContainerAnnc.getLabels());
+ }
+ // expirationTime O
+ if (flexContainerAnnc.getExpirationTime() != null) {
+ flexContainerAnncEntity.setExpirationTime(flexContainerAnnc.getExpirationTime());
+ modifiedFlexCtr.setExpirationTime(flexContainerAnnc.getExpirationTime());
+ }
- response.setContent(modifiedAttributes);
- // update the resource in the database
- dbs.getDAOFactory().getFlexContainerAnncDAO().update(transaction, flexContainerAnncEntity);
-
- // commit transaction & unlock current entity
- transaction.commit();
+ // ontologyRef O
+ if (flexContainerAnnc.getOntologyRef() != null) {
+ flexContainerAnncEntity.setOntologyRef(flexContainerAnnc.getOntologyRef());
+ modifiedFlexCtr.setOntologyRef(flexContainerAnnc.getOntologyRef());
+ }
+ // nodeLink O
+ if (flexContainerAnnc.getNodeLink() != null) {
+ flexContainerAnncEntity.setNodeLink(flexContainerAnnc.getNodeLink());
+ modifiedFlexCtr.setNodeLink(flexContainerAnnc.getNodeLink());
+ }
- Notifier.notify(flexContainerAnncEntity.getSubscriptions(), flexContainerAnncEntity, modifiedAttributes,
- ResourceStatus.UPDATED);
-
- // set response status code
- response.setResponseStatusCode(ResponseStatusCode.UPDATED);
- return response;
-
-
+ // containerDef
+ if ((flexContainerAnnc.getContainerDefinition() != null)
+ && (!flexContainerAnncEntity.getContainerDefinition().equals(flexContainerAnnc.getContainerDefinition()))) {
+ throw new BadRequestException("unable to change the containerDefinition value");
+ }
}
+ flexContainerAnncEntity.setLastModifiedTime(DateUtil.now());
+ modifiedFlexCtr.setLastModifiedTime(flexContainerAnncEntity.getLastModifiedTime());
+
+ // at this point, we are sure there was no error when setting custom
+ // attribute parameter
+
+ response.setContent(modifiedFlexCtr);
+ // update the resource in the database
+ dbs.getDAOFactory().getFlexContainerAnncDAO().update(transaction, flexContainerAnncEntity);
+
+ // commit transaction & unlock current entity
+ transaction.commit();
+
+ Notifier.notify(flexContainerAnncEntity.getSubscriptions(), flexContainerAnncEntity,
+ modifiedFlexCtr, ResourceStatus.UPDATED);
+
+ // set response status code
+ response.setResponseStatusCode(ResponseStatusCode.UPDATED);
+ return response;
}
@Override
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/FlexContainerController.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/FlexContainerController.java
index 617bd19..9e047c8 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/FlexContainerController.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/FlexContainerController.java
@@ -9,6 +9,8 @@
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.eclipse.om2m.commons.constants.Constants;
import org.eclipse.om2m.commons.constants.MimeMediaType;
import org.eclipse.om2m.commons.constants.ResourceStatus;
@@ -53,6 +55,9 @@
*/
public class FlexContainerController extends Controller {
+ /** Logger */
+ private static Log LOGGER = LogFactory.getLog(FlexContainerController.class);
+
/**
* Create the resource in the system according to the representation
*/
@@ -299,7 +304,7 @@
// commit the transaction & release lock
transaction.commit();
- if ((flexContainer.getAnnounceTo() != null) && (!flexContainer.getAnnounceTo().isEmpty())) {
+ if (! flexContainer.getAnnounceTo().isEmpty()) {
flexContainer.setName(flexContainerFromDB.getName());
flexContainer.setResourceID(flexContainerFromDB.getResourceID());
flexContainer.setResourceType(ResourceType.FLEXCONTAINER);
@@ -307,8 +312,7 @@
String hierachicalURI = flexContainerFromDB.getHierarchicalURI();
String remoteLocation = hierachicalURI
.substring(("/" + Constants.CSE_ID + "/" + Constants.CSE_NAME + "/").length());
- Announcer.announce(flexContainer.getAnnounceTo(), flexContainer.getAnnouncedAttribute(), flexContainer,
- request.getFrom(), remoteLocation);
+ Announcer.announce(flexContainer, request.getFrom(), remoteLocation);
}
Notifier.notify(subscriptions, flexContainerFromDB, ResourceStatus.CHILD_CREATED);
@@ -410,9 +414,11 @@
checkPermissions(request, flexContainerEntity, flexContainerEntity.getAccessControlPolicies());
}
- AbstractFlexContainer modifiedAttributes = /*new FlexContainer()*/ FlexContainerFactory.getSpecializationFlexContainer(flexContainerEntity.getShortName());
+ AbstractFlexContainer modifiedFlexCtr = FlexContainerFactory.getSpecializationFlexContainer(flexContainerEntity.getShortName());
// check if content is present
- if (request.getContent() != null) {
+ if (request.getContent() == null) {
+ // content might be null for FlexContainer representing a SDT action
+ } else {
// create the java object from the resource representation
// get the object from the representation
AbstractFlexContainer flexContainer = null;
@@ -423,16 +429,13 @@
// need to create the payload in order to validate it
payload = DataMapperSelector.getDataMapperList().get(contentFormat)
.objToString(flexContainer);
-
} else {
flexContainer = (AbstractFlexContainer) DataMapperSelector.getDataMapperList()
.get(request.getRequestContentType()).stringToObj((String) request.getContent());
-
if (request.getRequestContentType().equals(contentFormat)) {
payload = (String) request.getContent();
} else {
- // need to create the XML payload in order to validate
- // it
+ // need to create the XML payload in order to validate it
payload = DataMapperSelector.getDataMapperList().get(contentFormat)
.objToString(flexContainer);
}
@@ -442,7 +445,6 @@
if (contentFormat.equals(MimeMediaType.XML)) {
FlexContainerXMLValidator.validateXMLPayload(payload, flexContainer.getContainerDefinition());
}
-
} catch (ClassCastException e) {
throw new BadRequestException("Incorrect resource representation in content", e);
}
@@ -467,7 +469,7 @@
flexContainerEntity.getAccessControlPolicies().clear();
flexContainerEntity.setAccessControlPolicies(
ControllerUtil.buildAcpEntityList(flexContainer.getAccessControlPolicyIDs(), transaction));
- modifiedAttributes.getAccessControlPolicyIDs().addAll(flexContainer.getAccessControlPolicyIDs());
+ modifiedFlexCtr.getAccessControlPolicyIDs().addAll(flexContainer.getAccessControlPolicyIDs());
}
// dynamicAuthorizationConsultationIDs O
@@ -486,37 +488,36 @@
// labels O
if (!flexContainer.getLabels().isEmpty()) {
flexContainerEntity.setLabelsEntitiesFromSring(flexContainer.getLabels());
- modifiedAttributes.getLabels().addAll(flexContainer.getLabels());
+ modifiedFlexCtr.getLabels().addAll(flexContainer.getLabels());
}
// expirationTime O
if (flexContainer.getExpirationTime() != null) {
flexContainerEntity.setExpirationTime(flexContainer.getExpirationTime());
- modifiedAttributes.setExpirationTime(flexContainer.getExpirationTime());
+ modifiedFlexCtr.setExpirationTime(flexContainer.getExpirationTime());
}
// announceTo O
if (!flexContainer.getAnnounceTo().isEmpty()) {
// TODO Announcement in AE update
flexContainerEntity.getAnnounceTo().clear();
flexContainerEntity.getAnnounceTo().addAll(flexContainer.getAnnounceTo());
- modifiedAttributes.getAnnounceTo().addAll(flexContainer.getAnnounceTo());
+ modifiedFlexCtr.getAnnounceTo().addAll(flexContainer.getAnnounceTo());
}
// announcedAttribute O
if (!flexContainer.getAnnouncedAttribute().isEmpty()) {
flexContainerEntity.getAnnouncedAttribute().clear();
flexContainerEntity.getAnnouncedAttribute().addAll(flexContainer.getAnnouncedAttribute());
- modifiedAttributes.getAnnouncedAttribute().addAll(flexContainer.getAnnouncedAttribute());
+ modifiedFlexCtr.getAnnouncedAttribute().addAll(flexContainer.getAnnouncedAttribute());
}
// ontologyRef O
if (flexContainer.getOntologyRef() != null) {
flexContainerEntity.setOntologyRef(flexContainer.getOntologyRef());
- modifiedAttributes.setOntologyRef(flexContainer.getOntologyRef());
+ modifiedFlexCtr.setOntologyRef(flexContainer.getOntologyRef());
}
// nodeLink O
if (flexContainer.getNodeLink() != null) {
flexContainerEntity.setNodeLink(flexContainer.getNodeLink());
- modifiedAttributes.setNodeLink(flexContainer.getNodeLink());
+ modifiedFlexCtr.setNodeLink(flexContainer.getNodeLink());
}
-
// containerDef
if ((flexContainer.getContainerDefinition() != null)
&& (!flexContainerEntity.getContainerDefinition().equals(flexContainer.getContainerDefinition()))) {
@@ -529,28 +530,23 @@
flexContainerEntity.createOrUpdateCustomAttribute(ca.getCustomAttributeName(),
ca.getCustomAttributeValue());
}
- modifiedAttributes.setCustomAttributes(flexContainer.getCustomAttributes());
+ modifiedFlexCtr.setCustomAttributes(flexContainer.getCustomAttributes());
}
-
- } else {
- // content might be null for FlexContainer representing a SDT action
}
flexContainerEntity.setLastModifiedTime(DateUtil.now());
- modifiedAttributes.setLastModifiedTime(flexContainerEntity.getLastModifiedTime());
+ modifiedFlexCtr.setLastModifiedTime(flexContainerEntity.getLastModifiedTime());
// in case of update operation
if (!isInternalNotify) {
- LOGGER.info("flexContainer.getResourceID=" + flexContainerEntity.getResourceID());
// check if a FlexContainerService exist
FlexContainerService fcs = FlexContainerSelector.getFlexContainerService(
/* request.getTo() */ /* UriUtil.toCseRelativeUri( */flexContainerEntity.getResourceID()/* ) */);
if (fcs != null) {
try {
- fcs.setCustomAttributeValues(modifiedAttributes.getCustomAttributes(), request);
+ fcs.setCustomAttributeValues(modifiedFlexCtr.getCustomAttributes(), request);
// at this modifiedAttributes.getCustomAttributes() list
// contains the new values of CustomAttribute
-
} catch (Om2mException e) {
throw e;
}
@@ -560,14 +556,14 @@
// at this point, we are sure there was no error when setting custom
// attribute parameter
- response.setContent(modifiedAttributes);
+ response.setContent(modifiedFlexCtr);
// update the resource in the database
dbs.getDAOFactory().getFlexContainerDAO().update(transaction, flexContainerEntity);
// commit and release lock
transaction.commit();
- Notifier.notify(flexContainerEntity.getSubscriptions(), flexContainerEntity, modifiedAttributes,
+ Notifier.notify(flexContainerEntity.getSubscriptions(), flexContainerEntity, modifiedFlexCtr,
ResourceStatus.UPDATED);
// set response status code
@@ -590,7 +586,6 @@
LOGGER.info("Delete flexCnt: not found");
throw new ResourceNotFoundException("Resource not found");
}
- LOGGER.info("Delete flexCnt " + flexContainerEntity);
// lock entity
transaction.lock(flexContainerEntity);
@@ -607,11 +602,10 @@
// commit the transaction & release lock
transaction.commit();
- String nodeLink = flexContainerEntity.getNodeLink();
-
// deannounce
- Announcer.deAnnounce(flexContainerEntity.getAnnounceTo(), flexContainerEntity,
- Constants.ADMIN_REQUESTING_ENTITY);
+ if (! flexContainerEntity.getAnnounceTo().isEmpty()) {
+ Announcer.deAnnounce(flexContainerEntity, Constants.ADMIN_REQUESTING_ENTITY);
+ }
// return the response
response.setResponseStatusCode(ResponseStatusCode.DELETED);
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/MgmtObjAnncController.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/MgmtObjAnncController.java
index b958852..73147b2 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/MgmtObjAnncController.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/MgmtObjAnncController.java
@@ -22,7 +22,7 @@
import org.eclipse.om2m.commons.entities.AccessControlPolicyEntity;
import org.eclipse.om2m.commons.entities.DynamicAuthorizationConsultationEntity;
import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
-import org.eclipse.om2m.commons.entities.NodeEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
import org.eclipse.om2m.commons.entities.ResourceEntity;
import org.eclipse.om2m.commons.entities.SubscriptionEntity;
import org.eclipse.om2m.commons.exceptions.BadRequestException;
@@ -42,7 +42,7 @@
import org.eclipse.om2m.persistence.service.DAO;
/**
- * Controller for the MgmtObj Resource
+ * Controller for the MgmtObjAnnc Resource
*
*/
public class MgmtObjAnncController extends Controller {
@@ -57,7 +57,7 @@
@Override
public ResponsePrimitive doCreate(RequestPrimitive request) {
/*
- * MgmtObj creation procedure
+ * MgmtObjAnnc creation procedure
*
* @resourceName NP resourceType NP resourceID NP parentID NP
* accessControlPolicyIDs O creationTime NP expirationTime O
@@ -85,32 +85,28 @@
if (parentEntity == null) {
throw new ResourceNotFoundException("Cannot find parent resource");
}
-
- // lock parent
- transaction.lock(parentEntity);
-
- if (parentEntity.getResourceType().intValue() == (ResourceType.NODE_ANNC)) {
- throw new NotImplementedException("Parent is Node Annc, not implemented yet.");
+ if (parentEntity.getResourceType().intValue() != (ResourceType.NODE_ANNC)) {
+ throw new NotImplementedException("Parent should be NodeAnnc: " + parentEntity);
}
+ // lock parent
+// transaction.lock(parentEntity);
+
// parent is Node
- NodeEntity nodeEntity = (NodeEntity) parentEntity;
+ NodeAnncEntity nodeEntity = (NodeAnncEntity) parentEntity;
// get lists to change in the method corresponding to specific object
List<AccessControlPolicyEntity> acpsToCheck = nodeEntity.getAccessControlPolicies();
// List<DynamicAuthorizationConsultationEntity> dacsToCheck = null;
- List<SubscriptionEntity> subscriptions = nodeEntity.getSubscriptions();
+ List<SubscriptionEntity> subscriptions = nodeEntity.getChildSubscriptions();
// check access control policy of the originator
checkPermissions(request, nodeEntity, acpsToCheck);
// check if content is present
if (request.getContent() == null) {
- throw new BadRequestException("A content is requiered for MgmtObj creation");
+ throw new BadRequestException("A content is requiered for MgmtObjAnnc creation");
}
- LOGGER.info("contentType: " + request.getRequestContentType());
- LOGGER.info("content: " + request.getContent());
- LOGGER.info("parent node: " + nodeEntity);
// get the object from the representation
AnnouncedMgmtResource mgmtObj = null;
try {
@@ -129,7 +125,6 @@
payload = DataMapperSelector.getDataMapperList().get(contentFormat).objToString(mgmtObj);
}
}
- LOGGER.info("payload: " + payload);
// validate XML payload
// if (contentFormat.equals(MimeMediaType.XML)) {
@@ -144,7 +139,6 @@
if (mgmtObj == null) {
throw new BadRequestException("Error in provided content");
}
- else LOGGER.info("MgmtObj: " + mgmtObj.getClass() + ": " + mgmtObj);
BigInteger mgmtDef = mgmtObj.getMgmtDefinition();
@@ -152,7 +146,13 @@
MgmtObjAnncEntity mgmtObjEntity = MgmtObjAnncEntity.create(mgmtDef);
ControllerUtil.CreateUtil.fillEntityFromGenericResource(mgmtObj, mgmtObjEntity);
-
+
+ if (mgmtObj.getLink() == null) {
+ throw new BadRequestException("Link is Mandatory");
+ } else {
+ mgmtObjEntity.setLink(mgmtObj.getLink());
+ }
+
mgmtObjEntity.fillFrom(mgmtObj);
String generatedId = generateId("", "");
@@ -165,11 +165,13 @@
} else {
mgmtObjEntity.setName(MgmtDefinitionTypes.getShortName(mgmtDef) + "_" + generatedId);
}
- mgmtObjEntity.setResourceID("/" + Constants.CSE_ID + "/" + ShortName.MGO
+ mgmtObjEntity.setResourceID("/" + Constants.CSE_ID + "/" + ShortName.MGOA
+ Constants.PREFIX_SEPERATOR + generatedId);
- mgmtObjEntity.setHierarchicalURI(parentEntity.getHierarchicalURI() + "/" + mgmtObjEntity.getName());
- mgmtObjEntity.setParentID(parentEntity.getResourceID());
- mgmtObjEntity.setResourceType(ResourceType.MGMT_OBJ);
+ mgmtObjEntity.setHierarchicalURI(nodeEntity.getHierarchicalURI() + "/" + mgmtObjEntity.getName());
+ mgmtObjEntity.setParentID(nodeEntity.getResourceID());
+ mgmtObjEntity.setResourceType(ResourceType.MGMT_OBJ_ANNC);
+ mgmtObjEntity.setCreationTime(DateUtil.now());
+ mgmtObjEntity.setLastModifiedTime(DateUtil.now());
// accessControlPolicyIDs O
if (! mgmtObj.getAccessControlPolicyIDs().isEmpty()) {
@@ -186,26 +188,23 @@
}
if (! UriMapper.addNewUri(mgmtObjEntity.getHierarchicalURI(), mgmtObjEntity.getResourceID(),
- ResourceType.MGMT_OBJ)) {
+ ResourceType.MGMT_OBJ_ANNC)) {
throw new ConflictException("Name already present in the parent collection.");
}
// create the mgmtObj in the DB
- LOGGER.info("persist " + mgmtObjEntity + " ");
dbs.getDAOFactory().getMgmtObjAnncDAO().create(transaction, mgmtObjEntity);
// retrieve the managed object from DB
MgmtObjAnncEntity mgmtObjFromDB = dbs.getDAOFactory().getMgmtObjAnncDAO().find(transaction,
mgmtObjEntity.getResourceID());
- LOGGER.info("Created entity: " + mgmtObjFromDB);
-
-// nodeEntity.addMgmtObj(mgmtObjFromDB); TODO
+ nodeEntity.addMgmtObj(mgmtObjFromDB);
nodeDao.update(transaction, nodeEntity);
// update link with mgmtObjEntity - DacEntity
for (DynamicAuthorizationConsultationEntity dace : mgmtObjFromDB.getDynamicAuthorizationConsultations()) {
DynamicAuthorizationConsultationEntity daceFromDB = dbs.getDAOFactory().getDynamicAuthorizationDAO().find(transaction, dace.getResourceID());
-// daceFromDB.addMgmtObj(mgmtObjFromDB); TODO
+ daceFromDB.addMgmtObj(mgmtObjFromDB);
dbs.getDAOFactory().getDynamicAuthorizationDAO().update(transaction, daceFromDB);
}
@@ -312,7 +311,7 @@
checkPermissions(request, mgmtObjEntity, mgmtObjEntity.getAccessControlPolicies());
}
- AnnouncedMgmtResource modifiedMgmtObj = (AnnouncedMgmtResource)
+ AnnouncedMgmtResource modifiedMgmtObjAnnc = (AnnouncedMgmtResource)
EntityMapperFactory.getMapperForMgmtObjAnnc()
.mapEntityToResource(mgmtObjEntity, request);
// check if content is present
@@ -371,7 +370,7 @@
mgmtObjEntity.getAccessControlPolicies().clear();
mgmtObjEntity.setAccessControlPolicies(
ControllerUtil.buildAcpEntityList(mgmtObj.getAccessControlPolicyIDs(), transaction));
- modifiedMgmtObj.getAccessControlPolicyIDs().addAll(mgmtObj.getAccessControlPolicyIDs());
+ modifiedMgmtObjAnnc.getAccessControlPolicyIDs().addAll(mgmtObj.getAccessControlPolicyIDs());
}
// dynamicAuthorizationConsultationIDs O
@@ -380,14 +379,9 @@
ControllerUtil.buildDacEntityList(mgmtObj.getDynamicAuthorizationConsultationIDs(), transaction));
// update link with mgmtObjEntity - DacEntity
- for(DynamicAuthorizationConsultationEntity dace : mgmtObjEntity.getDynamicAuthorizationConsultations()) {
+ for (DynamicAuthorizationConsultationEntity dace : mgmtObjEntity.getDynamicAuthorizationConsultations()) {
DynamicAuthorizationConsultationEntity daceFromDB = dbs.getDAOFactory().getDynamicAuthorizationDAO().find(transaction, dace.getResourceID());
-// if (mgmtObj instanceof DeviceInfo) TODO
-// daceFromDB.getLinkedDeviceInfoEntities().add((DeviceInfoEntity) mgmtObjEntity);
-// else if (mgmtObj instanceof AreaNwkDeviceInfo)
-// daceFromDB.getLinkedAreaNwkDeviceInfoEntities().add((AreaNwkDeviceInfoEntity) mgmtObjEntity);
-// else if (mgmtObj instanceof AreaNwkInfo)
-// daceFromDB.getLinkedAreaNwkInfoEntities().add((AreaNwkInfoEntity) mgmtObjEntity);
+ daceFromDB.addMgmtObj(mgmtObjEntity);
dbs.getDAOFactory().getDynamicAuthorizationDAO().update(transaction, daceFromDB);
}
}
@@ -395,12 +389,12 @@
// labels O
if (! mgmtObj.getLabels().isEmpty()) {
mgmtObjEntity.setLabelsEntitiesFromSring(mgmtObj.getLabels());
- modifiedMgmtObj.getLabels().addAll(mgmtObj.getLabels());
+ modifiedMgmtObjAnnc.getLabels().addAll(mgmtObj.getLabels());
}
// expirationTime O
if (mgmtObj.getExpirationTime() != null) {
mgmtObjEntity.setExpirationTime(mgmtObj.getExpirationTime());
- modifiedMgmtObj.setExpirationTime(mgmtObj.getExpirationTime());
+ modifiedMgmtObjAnnc.setExpirationTime(mgmtObj.getExpirationTime());
}
// mgmtDefinition
@@ -411,16 +405,16 @@
}
mgmtObjEntity.setLastModifiedTime(DateUtil.now());
- modifiedMgmtObj.setLastModifiedTime(mgmtObjEntity.getLastModifiedTime());
+ modifiedMgmtObjAnnc.setLastModifiedTime(mgmtObjEntity.getLastModifiedTime());
- response.setContent(modifiedMgmtObj);
+ response.setContent(modifiedMgmtObjAnnc);
// update the resource in the database
dbs.getDAOFactory().getMgmtObjAnncDAO().update(transaction, mgmtObjEntity);
// commit and release lock
transaction.commit();
- Notifier.notify(mgmtObjEntity.getSubscriptions(), mgmtObjEntity, modifiedMgmtObj,
+ Notifier.notify(mgmtObjEntity.getSubscriptions(), mgmtObjEntity, modifiedMgmtObjAnnc,
ResourceStatus.UPDATED);
// set response status code
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/MgmtObjController.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/MgmtObjController.java
index d4f63f8..be03107 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/MgmtObjController.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/MgmtObjController.java
@@ -75,25 +75,24 @@
ResponsePrimitive response = new ResponsePrimitive(request);
// get the dao of the parent
- DAO<ResourceEntity> nodeDao = (DAO<ResourceEntity>) patterns.getDAO(request.getTo(), dbs);
- if (nodeDao == null) {
+ DAO<ResourceEntity> dao = (DAO<ResourceEntity>) patterns.getDAO(request.getTo(), dbs);
+ if (dao == null) {
throw new ResourceNotFoundException("Cannot find parent resource");
}
// get the parent entity
- ResourceEntity parentEntity = (ResourceEntity) nodeDao.find(transaction, request.getTo());
+ ResourceEntity parentEntity = (ResourceEntity) dao.find(transaction, request.getTo());
// check the parent existence
if (parentEntity == null) {
throw new ResourceNotFoundException("Cannot find parent resource");
}
-
- // lock parent
- transaction.lock(parentEntity);
-
if (parentEntity.getResourceType().intValue() == (ResourceType.NODE_ANNC)) {
throw new NotImplementedException("Parent is Node Annc, not implemented yet.");
}
+ // lock parent
+ transaction.lock(parentEntity);
+
// parent is Node
NodeEntity nodeEntity = (NodeEntity) parentEntity;
@@ -109,9 +108,6 @@
if (request.getContent() == null) {
throw new BadRequestException("A content is requiered for MgmtObj creation");
}
- LOGGER.info("contentType: " + request.getRequestContentType());
- LOGGER.info("content: " + request.getContent());
- LOGGER.info("parent node: " + nodeEntity);
// get the object from the representation
MgmtObj mgmtObj = null;
try {
@@ -145,7 +141,6 @@
if (mgmtObj == null) {
throw new BadRequestException("Error in provided content");
}
- else LOGGER.info("MgmtObj: " + mgmtObj.getClass() + ": " + mgmtObj);
BigInteger mgmtDef = mgmtObj.getMgmtDefinition();
@@ -168,8 +163,9 @@
}
mgmtObjEntity.setResourceID("/" + Constants.CSE_ID + "/" + ShortName.MGO
+ Constants.PREFIX_SEPERATOR + generatedId);
- mgmtObjEntity.setHierarchicalURI(parentEntity.getHierarchicalURI() + "/" + mgmtObjEntity.getName());
- mgmtObjEntity.setParentID(parentEntity.getResourceID());
+ mgmtObjEntity.setParentNode(nodeEntity);
+ mgmtObjEntity.setHierarchicalURI(nodeEntity.getHierarchicalURI() + "/" + mgmtObjEntity.getName());
+ mgmtObjEntity.setParentID(nodeEntity.getResourceID());
mgmtObjEntity.setResourceType(ResourceType.MGMT_OBJ);
// accessControlPolicyIDs O
@@ -192,16 +188,13 @@
}
// create the mgmtObj in the DB
- LOGGER.info("persist " + mgmtObjEntity + " ");
dbs.getDAOFactory().getMgmtObjDAO().create(transaction, mgmtObjEntity);
// retrieve the managed object from DB
MgmtObjEntity mgmtObjFromDB = dbs.getDAOFactory().getMgmtObjDAO().find(transaction,
mgmtObjEntity.getResourceID());
- LOGGER.info("Created entity: " + mgmtObjFromDB);
-
nodeEntity.addMgmtObj(mgmtObjFromDB);
- nodeDao.update(transaction, nodeEntity);
+ dao.update(transaction, nodeEntity);
// update link with mgmtObjEntity - DacEntity
for (DynamicAuthorizationConsultationEntity dace : mgmtObjFromDB.getDynamicAuthorizationConsultations()) {
@@ -213,16 +206,12 @@
// commit the transaction & release lock
transaction.commit();
- if ((mgmtObj.getAnnounceTo() != null) && ! mgmtObj.getAnnounceTo().isEmpty()) {
+ if (! mgmtObj.getAnnounceTo().isEmpty()) {
mgmtObj.setName(mgmtObjFromDB.getName());
mgmtObj.setResourceID(mgmtObjFromDB.getResourceID());
mgmtObj.setResourceType(ResourceType.MGMT_OBJ);
mgmtObj.setParentID(mgmtObjFromDB.getParentID());
- String hierachicalURI = mgmtObjFromDB.getHierarchicalURI();
- String remoteLocation = hierachicalURI
- .substring(("/" + Constants.CSE_ID + "/" + Constants.CSE_NAME + "/").length());
- Announcer.announce(mgmtObj.getAnnounceTo(), mgmtObj.getAnnouncedAttribute(), mgmtObj,
- request.getFrom(), remoteLocation);
+ Announcer.announce(mgmtObj, request.getFrom(), "");
}
Notifier.notify(subscriptions, mgmtObjFromDB, ResourceStatus.CHILD_CREATED);
@@ -476,8 +465,9 @@
transaction.commit();
// deannounce
- Announcer.deAnnounce(mgmtObjEntity.getAnnounceTo(), mgmtObjEntity,
- Constants.ADMIN_REQUESTING_ENTITY);
+ if (! mgmtObjEntity.getAnnounceTo().isEmpty()) {
+ Announcer.deAnnounce(mgmtObjEntity, Constants.ADMIN_REQUESTING_ENTITY);
+ }
// return the response
response.setResponseStatusCode(ResponseStatusCode.DELETED);
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/NodeAnncController.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/NodeAnncController.java
new file mode 100644
index 0000000..74cbc64
--- /dev/null
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/NodeAnncController.java
@@ -0,0 +1,367 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2017 Orange.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.om2m.core.controller;
+
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.eclipse.om2m.commons.constants.Constants;
+import org.eclipse.om2m.commons.constants.MimeMediaType;
+import org.eclipse.om2m.commons.constants.Operation;
+import org.eclipse.om2m.commons.constants.ResourceStatus;
+import org.eclipse.om2m.commons.constants.ResourceType;
+import org.eclipse.om2m.commons.constants.ResponseStatusCode;
+import org.eclipse.om2m.commons.constants.ShortName;
+import org.eclipse.om2m.commons.entities.AccessControlPolicyEntity;
+import org.eclipse.om2m.commons.entities.AeAnncEntity;
+import org.eclipse.om2m.commons.entities.CSEBaseEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
+import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
+import org.eclipse.om2m.commons.entities.ResourceEntity;
+import org.eclipse.om2m.commons.entities.SubscriptionEntity;
+import org.eclipse.om2m.commons.exceptions.BadRequestException;
+import org.eclipse.om2m.commons.exceptions.ConflictException;
+import org.eclipse.om2m.commons.exceptions.ResourceNotFoundException;
+import org.eclipse.om2m.commons.resource.NodeAnnc;
+import org.eclipse.om2m.commons.resource.RequestPrimitive;
+import org.eclipse.om2m.commons.resource.ResponsePrimitive;
+import org.eclipse.om2m.commons.utils.Util.DateUtil;
+import org.eclipse.om2m.core.datamapper.DataMapperSelector;
+import org.eclipse.om2m.core.entitymapper.EntityMapperFactory;
+import org.eclipse.om2m.core.notifier.Notifier;
+import org.eclipse.om2m.core.router.Patterns;
+import org.eclipse.om2m.core.urimapper.UriMapper;
+import org.eclipse.om2m.core.util.ControllerUtil;
+import org.eclipse.om2m.core.util.ControllerUtil.UpdateUtil;
+import org.eclipse.om2m.persistence.service.DAO;
+
+
+/**
+ * Controller for Node resource
+ *
+ */
+public class NodeAnncController extends Controller {
+
+ /** Logger */
+ private static Log LOGGER = LogFactory.getLog(NodeAnncController.class);
+
+ @Override
+ public ResponsePrimitive doCreate(RequestPrimitive request) {
+ /*
+ * NODE CREATION PROCEDURE
+ * @resourceName NP
+ * resourceType NP
+ * resourceID NP
+ * parentID NP
+ * accessControlPolicyIDs O
+ * creationTime NP
+ * expirationTime O
+ * lastModifiedTime NP
+ * labels O
+ *
+ * nodeID M
+ * hostedCSELink O
+ *
+ */
+
+ ResponsePrimitive response = new ResponsePrimitive(request);
+ Patterns patterns = new Patterns();
+
+ // retrieve the parent
+ DAO<ResourceEntity> dao = (DAO<ResourceEntity>) patterns.getDAO(request.getTo(), dbs);
+ if (dao == null) {
+ throw new ResourceNotFoundException("Cannot find parent resource");
+ }
+
+ // Get the parent entity
+ ResourceEntity parentEntity = (ResourceEntity) dao.find(transaction, request.getTo());
+ // Check the parent existence
+ if (parentEntity == null) {
+ throw new ResourceNotFoundException("Cannot find parent resource");
+ }
+
+ List<NodeAnncEntity> childNodes = null;
+ List<AccessControlPolicyEntity> acpsToCheck = null;
+ List<SubscriptionEntity> subscriptions = null;
+ // case parent is csb
+ if (parentEntity.getResourceType().intValue() == ResourceType.CSE_BASE) {
+ CSEBaseEntity csb = (CSEBaseEntity) parentEntity;
+ childNodes = csb.getChildAnncNodes();
+ acpsToCheck = csb.getAccessControlPolicies();
+ subscriptions = csb.getSubscriptions();
+ }
+ // case parent is csr
+ if (parentEntity.getResourceType().intValue() == ResourceType.REMOTE_CSE) {
+ RemoteCSEEntity remoteCse = (RemoteCSEEntity) parentEntity;
+ childNodes = remoteCse.getChildAnncNodes();
+ acpsToCheck = remoteCse.getAccessControlPolicies();
+ subscriptions = remoteCse.getSubscriptions();
+ }
+
+ // check access control policy of the originator
+ checkACP(acpsToCheck, request.getFrom(), Operation.CREATE);
+
+ // check if content is present
+ if (request.getContent() == null) {
+ throw new BadRequestException("A content is required for Container creation");
+ }
+
+ // get the object from the representation
+ NodeAnnc node = null;
+ try {
+ if (request.getRequestContentType().equals(MimeMediaType.OBJ)) {
+ node = (NodeAnnc) request.getContent();
+ } else {
+ node = (NodeAnnc)DataMapperSelector.getDataMapperList()
+ .get(request.getRequestContentType()).stringToObj((String)request.getContent());
+ }
+
+ } catch (ClassCastException e) {
+ throw new BadRequestException("Incorrect resource representation in content", e);
+ }
+ if (node == null) {
+ throw new BadRequestException("Error in provided content");
+ }
+
+ NodeAnncEntity nodeEntity = new NodeAnncEntity();
+ // check attributes
+ ControllerUtil.CreateUtil.fillEntityFromGenericResource(node, nodeEntity);
+
+ if (node.getLink() == null) {
+ throw new BadRequestException("Link is Mandatory");
+ } else {
+ nodeEntity.setLink(node.getLink());
+ }
+
+ /*
+ * nodeID M
+ * hostedCSELink O
+ */
+ if (node.getNodeID() == null) {
+ throw new BadRequestException("Node ID is Mandatory");
+ } else {
+ nodeEntity.setNodeID(node.getNodeID());
+ }
+
+ if (node.getHostedCSELink() != null) {
+ nodeEntity.setHostedCSELink(node.getHostedCSELink());
+ }
+ if (node.getHostedServiceLinks() != null) {
+ nodeEntity.setHostedServiceLinks(node.getHostedServiceLinks());
+ }
+
+ String generatedId = generateId();
+ // Set other parameters
+ nodeEntity.setResourceID("/" + Constants.CSE_ID + "/" +
+ ShortName.NODE_ANNC + Constants.PREFIX_SEPERATOR + generatedId);
+
+ nodeEntity.setCreationTime(DateUtil.now());
+ nodeEntity.setLastModifiedTime(DateUtil.now());
+ nodeEntity.setParentID(parentEntity.getResourceID());
+ nodeEntity.setResourceType(ResourceType.NODE_ANNC);
+ if (parentEntity.getResourceType().intValue() == ResourceType.CSE_BASE) {
+ nodeEntity.setParentCsb((CSEBaseEntity) parentEntity);
+ } else if (parentEntity.getResourceType().intValue() == ResourceType.REMOTE_CSE) {
+ nodeEntity.setParentCsr((RemoteCSEEntity) parentEntity);
+ }
+
+ if (dbs.getDAOFactory().getNodeAnncDAO().find(transaction, nodeEntity.getResourceID()) != null) {
+ throw new ConflictException("Already registered");
+ }
+
+ if (node.getName() != null) {
+ if (!patterns.checkResourceName(node.getName())) {
+ throw new BadRequestException("Name provided is incorrect. Must be:" + patterns.ID_STRING);
+ }
+ nodeEntity.setName(node.getName());
+ } else {
+ nodeEntity.setName(ShortName.NODE_ANNC + "_" + generatedId);
+ }
+ nodeEntity.setHierarchicalURI(parentEntity.getHierarchicalURI() + "/" + nodeEntity.getName());
+
+ // set acps
+ if (!node.getAccessControlPolicyIDs().isEmpty()) {
+ nodeEntity.setAccessControlPolicies(ControllerUtil.buildAcpEntityList(node.getAccessControlPolicyIDs(), transaction));
+ } else {
+ nodeEntity.getAccessControlPolicies().addAll(acpsToCheck);
+ }
+
+ // dynamicAuthorizationConsultationIDs O
+ if (!node.getDynamicAuthorizationConsultationIDs().isEmpty()) {
+ nodeEntity.setDynamicAuthorizationConsultations(
+ ControllerUtil.buildDacEntityList(node.getDynamicAuthorizationConsultationIDs(), transaction));
+ }
+
+ // storing the hierarchical uri
+ if (!UriMapper.addNewUri(nodeEntity.getHierarchicalURI(), nodeEntity.getResourceID(), ResourceType.NODE_ANNC)) {
+ throw new ConflictException("Name already present in the parent collection.");
+ }
+
+ // persisting data
+ dbs.getDAOFactory().getNodeAnncDAO().create(transaction, nodeEntity);
+
+ // get the managed object
+ NodeAnncEntity nodeDB = dbs.getDAOFactory().getNodeAnncDAO().find(transaction, nodeEntity.getResourceID());
+ // Add the AE to the parentEntity list
+ childNodes.add(nodeDB);
+ dao.update(transaction, parentEntity);
+ transaction.commit();
+
+ Notifier.notify(subscriptions, nodeDB, ResourceStatus.CHILD_CREATED);
+ response.setResponseStatusCode(ResponseStatusCode.CREATED);
+ setLocationAndCreationContent(request, response, nodeDB);
+ return response;
+ }
+
+ @Override
+ public ResponsePrimitive doRetrieve(RequestPrimitive request) {
+ // create the response primitive
+ ResponsePrimitive response = new ResponsePrimitive(request);
+
+ // get the entity
+ NodeAnncEntity nodeEntity = dbs.getDAOFactory().getNodeAnncDAO().find(transaction,
+ request.getTo());
+ if (nodeEntity == null) {
+ throw new ResourceNotFoundException();
+ }
+
+ // check authorization
+ List<AccessControlPolicyEntity> acps = nodeEntity.getAccessControlPolicies();
+ checkACP(acps, request.getFrom(), request.getOperation());
+
+ response = new ResponsePrimitive(request);
+ // map the entity with the representation resource
+ NodeAnnc node = EntityMapperFactory.getNodeAnncMapper().mapEntityToResource(nodeEntity, request);
+ response.setContent(node);
+ // set status code
+ response.setResponseStatusCode(ResponseStatusCode.OK);
+ // return the response
+ return response;
+ }
+
+ @Override
+ public ResponsePrimitive doUpdate(RequestPrimitive request) {
+ // create the response base
+ ResponsePrimitive response = new ResponsePrimitive(request);
+
+ // retrieve the resource from database
+ NodeAnncEntity nodeEntity = dbs.getDAOFactory().getNodeAnncDAO().find(transaction, request.getTo());
+ if (nodeEntity == null) {
+ throw new ResourceNotFoundException();
+ }
+ // check ACP
+ checkACP(nodeEntity.getAccessControlPolicies(), request.getFrom(), Operation.UPDATE);
+
+
+ // check if content is present
+ if (request.getContent() == null) {
+ throw new BadRequestException("A content is required for node update");
+ }
+
+ // create the java object from the resource representation
+ // get the object from the representation
+ NodeAnnc node = null;
+ try{
+ if (request.getRequestContentType().equals(MimeMediaType.OBJ)) {
+ node = (NodeAnnc) request.getContent();
+ } else {
+ node = (NodeAnnc)DataMapperSelector.getDataMapperList()
+ .get(request.getRequestContentType()).stringToObj((String)request.getContent());
+ }
+
+ } catch (ClassCastException e) {
+ throw new BadRequestException("Incorrect resource representation in content", e);
+ }
+ if (node == null) {
+ throw new BadRequestException("Error in provided content");
+ }
+
+ // check attributes, NP attributes are ignored
+ // @resourceName NP
+ // resourceType NP
+ // resourceID NP
+ // parentID NP
+ // creationTime NP
+ // creator NP
+ // lastModifiedTime NP
+ UpdateUtil.checkNotPermittedParameters(node);
+ // hostedCseLink NP
+ if (node.getHostedCSELink() != null) {
+ throw new BadRequestException("HostedCSELink is NP");
+ }
+
+ NodeAnnc modifiedAttributes = new NodeAnnc();
+ // labels O
+ if (!node.getLabels().isEmpty()) {
+ nodeEntity.setLabelsEntitiesFromSring(node.getLabels());
+ modifiedAttributes.getLabels().addAll(node.getLabels());
+ }
+ // accessControlPolicyIDs O
+ if (!node.getAccessControlPolicyIDs().isEmpty()) {
+ for(AccessControlPolicyEntity acpe : nodeEntity.getAccessControlPolicies()) {
+ checkSelfACP(acpe, request.getFrom(), Operation.UPDATE);
+ }
+ nodeEntity.getAccessControlPolicies().clear();
+ nodeEntity.setAccessControlPolicies(ControllerUtil.buildAcpEntityList(node.getAccessControlPolicyIDs(), transaction));
+ modifiedAttributes.getAccessControlPolicyIDs().addAll(node.getAccessControlPolicyIDs());
+ }
+ // expirationTime O
+ if (node.getExpirationTime() != null) {
+ nodeEntity.setExpirationTime(node.getExpirationTime());
+ modifiedAttributes.setExpirationTime(node.getExpirationTime());
+ }
+
+ // nodeID O
+ if (node.getNodeID() != null) {
+ nodeEntity.setNodeID(node.getNodeID());
+ modifiedAttributes.setNodeID(node.getNodeID());
+ }
+
+ nodeEntity.setLastModifiedTime(DateUtil.now());
+ modifiedAttributes.setLastModifiedTime(nodeEntity.getLastModifiedTime());
+ response.setContent(modifiedAttributes);
+
+ // uptade the persisted resource
+ dbs.getDAOFactory().getNodeAnncDAO().update(transaction, nodeEntity);
+ // commit & close the db transaction
+ transaction.commit();
+ Notifier.notify(nodeEntity.getChildSubscriptions(), nodeEntity, ResourceStatus.UPDATED);
+
+ // set response status code
+ response.setResponseStatusCode(ResponseStatusCode.UPDATED);
+ return response;
+ }
+
+ @Override
+ public ResponsePrimitive doDelete(RequestPrimitive request) {
+ // Generic delete procedure
+ ResponsePrimitive response = new ResponsePrimitive(request);
+
+ // retrieve the entity
+ NodeAnncEntity nodeEntity = dbs.getDAOFactory().getNodeAnncDAO().find(transaction, request.getTo());
+ if (nodeEntity == null) {
+ throw new ResourceNotFoundException();
+ }
+
+ // check access control policies
+ checkACP(nodeEntity.getAccessControlPolicies(), request.getFrom(), Operation.DELETE);
+
+ UriMapper.deleteUri(nodeEntity.getHierarchicalURI());
+ Notifier.notifyDeletion(nodeEntity.getChildSubscriptions(), nodeEntity);
+
+ // delete the resource in the database
+ dbs.getDAOFactory().getNodeAnncDAO().delete(transaction, nodeEntity);
+ // commit the transaction
+ transaction.commit();
+ // return the response
+ response.setResponseStatusCode(ResponseStatusCode.DELETED);
+ return response;
+ }
+
+}
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/NodeController.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/NodeController.java
index 3f88947..9aff30f 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/NodeController.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/controller/NodeController.java
@@ -21,6 +21,8 @@
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.eclipse.om2m.commons.constants.Constants;
import org.eclipse.om2m.commons.constants.MimeMediaType;
import org.eclipse.om2m.commons.constants.Operation;
@@ -41,6 +43,7 @@
import org.eclipse.om2m.commons.resource.RequestPrimitive;
import org.eclipse.om2m.commons.resource.ResponsePrimitive;
import org.eclipse.om2m.commons.utils.Util.DateUtil;
+import org.eclipse.om2m.core.announcer.Announcer;
import org.eclipse.om2m.core.datamapper.DataMapperSelector;
import org.eclipse.om2m.core.entitymapper.EntityMapperFactory;
import org.eclipse.om2m.core.notifier.Notifier;
@@ -57,6 +60,10 @@
*/
public class NodeController extends Controller {
+ /** Logger */
+ private static Log LOGGER = LogFactory.getLog(NodeController.class);
+
+ @SuppressWarnings("unchecked")
@Override
public ResponsePrimitive doCreate(RequestPrimitive request) {
/*
@@ -80,19 +87,21 @@
Patterns patterns = new Patterns();
// retrieve the parent
- DAO<ResourceEntity> dao = (DAO<ResourceEntity>) patterns.getDAO(request.getTo(), dbs);
- if (dao == null){
+ DAO<ResourceEntity> parentDao = (DAO<ResourceEntity>) patterns.getDAO(request.getTo(), dbs);
+ if (parentDao == null){
throw new ResourceNotFoundException("Cannot find parent resource");
}
// Get the parent entity
- LOGGER.trace("Target ID in controller: " + request.getTo());
- ResourceEntity parentEntity = (ResourceEntity) dao.find(transaction, request.getTo());
+ ResourceEntity parentEntity = (ResourceEntity) parentDao.find(transaction, request.getTo());
// Check the parent existence
if (parentEntity == null){
throw new ResourceNotFoundException("Cannot find parent resource");
}
+ // lock parent
+ transaction.lock(parentEntity);
+
List<NodeEntity> childNodes = null;
List<AccessControlPolicyEntity> acpsToCheck = null;
List<SubscriptionEntity> subscriptions = null;
@@ -104,7 +113,7 @@
subscriptions = csb.getSubscriptions();
}
// case parent is csr
- if(parentEntity.getResourceType().intValue() == ResourceType.REMOTE_CSE){
+ else if(parentEntity.getResourceType().intValue() == ResourceType.REMOTE_CSE){
RemoteCSEEntity remoteCse = (RemoteCSEEntity) parentEntity;
childNodes = remoteCse.getChildNodes();
acpsToCheck = remoteCse.getAccessControlPolicies();
@@ -112,7 +121,8 @@
}
// check access control policy of the originator
- checkACP(acpsToCheck, request.getFrom(), Operation.CREATE);
+// checkACP(acpsToCheck, request.getFrom(), Operation.CREATE);
+ checkPermissions(request, parentEntity, acpsToCheck);
response = new ResponsePrimitive(request);
// check if content is present
@@ -154,8 +164,8 @@
if (node.getHostedCSELink() != null) {
nodeEntity.setHostedCSELink(node.getHostedCSELink());
}
- if (node.getHostedAppLinks() != null) {
- nodeEntity.setHostedAppLink(node.getHostedAppLinks());
+ if (node.getHostedServiceLinks() != null) {
+ nodeEntity.setHostedServiceLinks(node.getHostedServiceLinks());
}
String generatedId = generateId();
@@ -164,7 +174,12 @@
nodeEntity.setLastModifiedTime(DateUtil.now());
nodeEntity.setParentID(parentEntity.getResourceID());
nodeEntity.setResourceType(ResourceType.NODE);
-
+ if (parentEntity.getResourceType().intValue() == ResourceType.CSE_BASE) {
+ nodeEntity.setParentCsb((CSEBaseEntity) parentEntity);
+ } else if (parentEntity.getResourceType().intValue() == ResourceType.REMOTE_CSE) {
+ nodeEntity.setParentCsr((RemoteCSEEntity) parentEntity);
+ }
+
if (node.getName() != null){
if (!patterns.checkResourceName(node.getName())){
throw new BadRequestException("Name provided is incorrect. Must be:" + patterns.ID_STRING);
@@ -187,14 +202,23 @@
throw new ConflictException("Name already present in the parent collection.");
}
// persisting data
- dbs.getDAOFactory().getNodeDAO().create(transaction, nodeEntity);
+ DAO<NodeEntity> nodeDao = dbs.getDAOFactory().getNodeDAO();
+ nodeDao.create(transaction, nodeEntity);
// get the manage object
- NodeEntity nodeDB = dbs.getDAOFactory().getNodeDAO().find(transaction, nodeEntity.getResourceID());
+ NodeEntity nodeDB = nodeDao.find(transaction, nodeEntity.getResourceID());
childNodes.add(nodeDB);
- dao.update(transaction, parentEntity);
+ parentDao.update(transaction, parentEntity);
transaction.commit();
+ if (! node.getAnnounceTo().isEmpty()) {
+ node.setName(nodeDB.getName());
+ node.setResourceID(nodeDB.getResourceID());
+ node.setResourceType(ResourceType.NODE);
+ node.setParentID(nodeDB.getParentID());
+ Announcer.announce(node, request.getFrom(), "");
+ }
+
Notifier.notify(subscriptions, nodeDB, ResourceStatus.CHILD_CREATED);
response.setResponseStatusCode(ResponseStatusCode.CREATED);
setLocationAndCreationContent(request, response, nodeDB);
@@ -207,7 +231,7 @@
ResponsePrimitive response = new ResponsePrimitive(request);
// get the entity
- NodeEntity nodeEntity = dbs.getDAOFactory().getNodeEntityDAO().find(transaction, request.getTo());
+ NodeEntity nodeEntity = dbs.getDAOFactory().getNodeDAO().find(transaction, request.getTo());
if (nodeEntity == null) {
throw new ResourceNotFoundException();
}
@@ -232,7 +256,8 @@
ResponsePrimitive response = new ResponsePrimitive(request);
// retrieve the resource from database
- NodeEntity nodeEntity = dbs.getDAOFactory().getNodeEntityDAO().find(transaction, request.getTo());
+ DAO<NodeEntity> nodeDao = dbs.getDAOFactory().getNodeDAO();
+ NodeEntity nodeEntity = nodeDao.find(transaction, request.getTo());
if (nodeEntity == null) {
throw new ResourceNotFoundException();
}
@@ -322,7 +347,7 @@
response.setContent(modifiedAttributes);
// uptade the persisted resource
- dbs.getDAOFactory().getNodeDAO().update(transaction, nodeEntity);
+ nodeDao.update(transaction, nodeEntity);
// commit & close the db transaction
transaction.commit();
Notifier.notify(nodeEntity.getSubscriptions(), nodeEntity, ResourceStatus.UPDATED);
@@ -337,23 +362,33 @@
// Generic delete procedure
ResponsePrimitive response = new ResponsePrimitive(request);
// retrieve the entity
- NodeEntity nodeEntity = dbs.getDAOFactory().getNodeEntityDAO().find(transaction, request.getTo());
+ DAO<NodeEntity> nodeDao = dbs.getDAOFactory().getNodeDAO();
+ NodeEntity nodeEntity = nodeDao.find(transaction, request.getTo());
if (nodeEntity == null) {
LOGGER.info("Delete node: not found");
throw new ResourceNotFoundException();
}
- LOGGER.info("Delete node " + nodeEntity);
+
+ // lock entity
+ transaction.lock(nodeEntity);
// check access control policies
- checkACP(nodeEntity.getAccessControlPolicies(), request.getFrom(), Operation.DELETE);
+// checkACP(nodeEntity.getAccessControlPolicies(), request.getFrom(), Operation.DELETE);
+ checkPermissions(request, nodeEntity, nodeEntity.getAccessControlPolicies());
UriMapper.deleteUri(nodeEntity.getHierarchicalURI());
Notifier.notifyDeletion(nodeEntity.getSubscriptions(), nodeEntity);
// delete the resource in the database
- dbs.getDAOFactory().getNodeDAO().delete(transaction, nodeEntity);
+ nodeDao.delete(transaction, nodeEntity);
// commit the transaction
transaction.commit();
+
+ // deannounce
+ if (! nodeEntity.getAnnounceTo().isEmpty()) {
+ Announcer.deAnnounce(nodeEntity, Constants.ADMIN_REQUESTING_ENTITY);
+ }
+
// return the response
response.setResponseStatusCode(ResponseStatusCode.DELETED);
return response;
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/AeAnncMapper.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/AeAnncMapper.java
index 6433541..b8daa7f 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/AeAnncMapper.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/AeAnncMapper.java
@@ -37,10 +37,8 @@
resource.setExpirationTime(entity.getExpirationTime());
resource.setAppName(entity.getAppName());
resource.setNodeLink(entity.getNodeLink());
- resource.setLink(entity.getLink());
resource.setOntologyRef(entity.getOntologyRef());
resource.getPointOfAccess().addAll(entity.getPointOfAccess());
-
}
@Override
@@ -50,10 +48,7 @@
@Override
protected List<ChildResourceRef> getChildResourceRef(AeAnncEntity entity, int level, int offset) {
-
-
List<ChildResourceRef> childRefs = new ArrayList<>();
-
if (level == 0) {
return childRefs;
}
@@ -65,7 +60,6 @@
child.setValue(flexContainerEntity.getResourceID());
child.setSpid(flexContainerEntity.getContainerDefinition());
childRefs.add(child);
-
childRefs.addAll(new FlexContainerAnncMapper().getChildResourceRef(flexContainerEntity, level - 1, offset - 1));
}
@@ -76,7 +70,6 @@
child.setType(BigInteger.valueOf(ResourceType.SUBSCRIPTION));
child.setValue(sub.getResourceID());
childRefs.add(child);
-
childRefs.addAll(new SubscriptionMapper().getChildResourceRef(sub, level - 1, offset - 1));
}
@@ -85,7 +78,6 @@
@Override
protected void mapChildResources(AeAnncEntity entity, AEAnnc resource, int level, int offset) {
-
if (level == 0) {
return;
}
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/CseBaseMapper.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/CseBaseMapper.java
index 7d078c9..4eaa75c 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/CseBaseMapper.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/CseBaseMapper.java
@@ -45,6 +45,7 @@
import org.eclipse.om2m.commons.resource.Container;
import org.eclipse.om2m.commons.resource.DynamicAuthorizationConsultation;
import org.eclipse.om2m.commons.resource.Group;
+import org.eclipse.om2m.commons.resource.Node;
import org.eclipse.om2m.commons.resource.RemoteCSE;
import org.eclipse.om2m.commons.resource.Request;
import org.eclipse.om2m.commons.resource.Subscription;
@@ -250,6 +251,11 @@
Subscription subRes = new SubscriptionMapper().mapEntityToResource(sub, ResultContent.ATTRIBUTES_AND_CHILD_RES, level - 1, offset - 1);
resource.getRemoteCSEOrNodeOrAE().add(subRes);
}
+ // adding node refs
+ for (NodeEntity node : entity.getChildNodes()) {
+ Node nodeRes = new NodeMapper().mapEntityToResource(node, ResultContent.ATTRIBUTES_AND_CHILD_RES, level - 1, offset - 1);
+ resource.getRemoteCSEOrNodeOrAE().add(nodeRes);
+ }
// adding request refs
for (RequestEntity req : entity.getChildReq()) {
Request reqResource = new RequestMapper().mapEntityToResource(req, ResultContent.ATTRIBUTES_AND_CHILD_RES, level - 1, offset - 1);
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/EntityMapperFactory.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/EntityMapperFactory.java
index d5dccbf..5c3a11c 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/EntityMapperFactory.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/EntityMapperFactory.java
@@ -34,6 +34,7 @@
import org.eclipse.om2m.commons.entities.GroupEntity;
import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.commons.entities.PollingChannelEntity;
import org.eclipse.om2m.commons.entities.RegularResourceEntity;
@@ -56,6 +57,7 @@
import org.eclipse.om2m.commons.resource.Group;
import org.eclipse.om2m.commons.resource.MgmtObj;
import org.eclipse.om2m.commons.resource.Node;
+import org.eclipse.om2m.commons.resource.NodeAnnc;
import org.eclipse.om2m.commons.resource.PollingChannel;
import org.eclipse.om2m.commons.resource.RegularResource;
import org.eclipse.om2m.commons.resource.RemoteCSE;
@@ -121,11 +123,15 @@
public static EntityMapper<NodeEntity, Node> getNodeMapper() {
return new NodeMapper();
}
+ public static EntityMapper<NodeAnncEntity, NodeAnnc> getNodeAnncMapper() {
+ return new NodeAnncMapper();
+ }
/** Get the Remote CSE mapper */
public static EntityMapper<RemoteCSEEntity, RemoteCSE> getRemoteCseMapper(){
return new RemoteCSEMapper();
}
+
/** Get the Subscription mapper */
public static EntityMapper<SubscriptionEntity, Subscription> getSubscriptionMapper(){
return new SubscriptionMapper();
@@ -199,6 +205,8 @@
return new GroupMapper();
case ResourceType.NODE:
return new NodeMapper();
+ case ResourceType.NODE_ANNC:
+ return new NodeAnncMapper();
case ResourceType.REMOTE_CSE:
return new RemoteCSEMapper();
case ResourceType.SUBSCRIPTION:
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/FlexContainerAnncMapper.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/FlexContainerAnncMapper.java
index 5271ec7..8ca76fe 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/FlexContainerAnncMapper.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/FlexContainerAnncMapper.java
@@ -44,7 +44,7 @@
resource.setOntologyRef(entity.getOntologyRef());
resource.setStateTag(entity.getStateTag());
resource.setContainerDefinition(entity.getContainerDefinition());
-
+ resource.setNodeLink(entity.getNodeLink());
}
@Override
@@ -104,11 +104,9 @@
resource.getFlexContainerOrContainerOrSubscription().add(subRes);
}
-
// add child ref with containers
resource.finalizeSerialization();
}
-
}
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/MgmtObjAnncMapper.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/MgmtObjAnncMapper.java
index 9c04c07..5e3949f 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/MgmtObjAnncMapper.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/MgmtObjAnncMapper.java
@@ -19,19 +19,30 @@
*******************************************************************************/
package org.eclipse.om2m.core.entitymapper;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
import org.eclipse.om2m.commons.constants.ResourceType;
import org.eclipse.om2m.commons.constants.ResultContent;
+import org.eclipse.om2m.commons.entities.AreaNwkDeviceInfoAnncEntity;
+import org.eclipse.om2m.commons.entities.AreaNwkInfoAnncEntity;
+import org.eclipse.om2m.commons.entities.DeviceInfoAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
import org.eclipse.om2m.commons.entities.SubscriptionEntity;
import org.eclipse.om2m.commons.resource.AnnouncedMgmtResource;
+import org.eclipse.om2m.commons.resource.AreaNwkDeviceInfoAnnc;
+import org.eclipse.om2m.commons.resource.AreaNwkInfoAnnc;
import org.eclipse.om2m.commons.resource.ChildResourceRef;
+import org.eclipse.om2m.commons.resource.DeviceInfoAnnc;
+import org.eclipse.om2m.commons.resource.MgmtObjAnncWithChildren;
import org.eclipse.om2m.commons.resource.Subscription;
public class MgmtObjAnncMapper extends EntityMapper<MgmtObjAnncEntity, AnnouncedMgmtResource> {
+// private static Log LOGGER = LogFactory.getLog(MgmtObjAnncMapper.class);
+
@Override
protected void mapAttributes(MgmtObjAnncEntity entity, AnnouncedMgmtResource resource, int level, int offset) {
if (level < 0) {
@@ -51,51 +62,52 @@
resource.setResourceID(entity.getResourceID());
resource.setResourceType(entity.getResourceType());
-// if (entity instanceof AreaNwkInfoEntity) {
-// mapSpecificAttributes((AreaNwkInfoEntity)entity, (AreaNwkInfo)resource);
-// } else if (entity instanceof AreaNwkDeviceInfoEntity) {
-// mapSpecificAttributes((AreaNwkDeviceInfoEntity)entity, (AreaNwkDeviceInfo)resource);
-// } else if (entity instanceof DeviceInfoEntity) {
-// mapSpecificAttributes((DeviceInfoEntity)entity, (DeviceInfo)resource);
-// }
+ BigInteger mgd = entity.getMgmtDefinition();
+ if (mgd.equals(MgmtDefinitionTypes.AREA_NWK_INFO)) {
+ mapSpecificAttributes((AreaNwkInfoAnncEntity)entity, (AreaNwkInfoAnnc)resource);
+ } else if (mgd.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO)) {
+ mapSpecificAttributes((AreaNwkDeviceInfoAnncEntity)entity, (AreaNwkDeviceInfoAnnc)resource);
+ } else if (mgd.equals(MgmtDefinitionTypes.DEVICE_INFO)) {
+ mapSpecificAttributes((DeviceInfoAnncEntity)entity, (DeviceInfoAnnc)resource);
+ }
}
-// private void mapSpecificAttributes(AreaNwkInfoEntity entity, AreaNwkInfo resource) {
-// resource.setAreaNwkType(entity.getAreaNwkType());
-// if (!entity.getListOfDevices().isEmpty()) {
-// resource.getListOfDevices().addAll(entity.getListOfDevices());
-// }
-// }
-//
-// private void mapSpecificAttributes(AreaNwkDeviceInfoEntity entity, AreaNwkDeviceInfo resource) {
-// resource.setAreaNwkId(entity.getAreaNwkId());
-// resource.setDevID(entity.getDevID());
-// resource.setSleepDuration(entity.getSleepDuration());
-// resource.setSleepInterval(entity.getSleepInterval());
-// resource.setStatus(entity.getStatus());
-// }
-//
-// private void mapSpecificAttributes(DeviceInfoEntity entity, DeviceInfo resource) {
-// resource.setDeviceLabel(entity.getDeviceLabel());
-// resource.setModel(entity.getModel());
-// resource.setManufacturer(entity.getManufacturer());
-// resource.setDeviceType(entity.getDeviceType());
-//
-// resource.setDeviceName(entity.getDeviceName());
-// resource.setFwVersion(entity.getFwVersion());
-// resource.setSwVersion(entity.getSwVersion());
-// resource.setHwVersion(entity.getHwVersion());
-// resource.setOsVersion(entity.getOsVersion());
-// resource.setManufacturerDetailsLink(entity.getManufacturerDetailsLink());
-// resource.setManufacturingDate(entity.getManufacturingDate());
-// resource.setSubModel(entity.getSubModel());
-// resource.setCountry(entity.getCountry());
-// resource.setLocation(entity.getLocation());
-// resource.setSystemTime(entity.getSystemTime());
-// resource.setSupportURL(entity.getSupportURL());
-// resource.setPresentationURL(entity.getPresentationURL());
-// resource.setProtocol(entity.getProtocol());
-// }
+ private void mapSpecificAttributes(AreaNwkInfoAnncEntity entity, AreaNwkInfoAnnc resource) {
+ resource.setAreaNwkType(entity.getAreaNwkType());
+ if (!entity.getListOfDevices().isEmpty()) {
+ resource.getListOfDevices().addAll(entity.getListOfDevices());
+ }
+ }
+
+ private void mapSpecificAttributes(AreaNwkDeviceInfoAnncEntity entity, AreaNwkDeviceInfoAnnc resource) {
+ resource.setAreaNwkId(entity.getAreaNwkId());
+ resource.setDevID(entity.getDevID());
+ resource.setSleepDuration(entity.getSleepDuration());
+ resource.setSleepInterval(entity.getSleepInterval());
+ resource.setStatus(entity.getStatus());
+ }
+
+ private void mapSpecificAttributes(DeviceInfoAnncEntity entity, DeviceInfoAnnc resource) {
+ resource.setDeviceLabel(entity.getDeviceLabel());
+ resource.setModel(entity.getModel());
+ resource.setManufacturer(entity.getManufacturer());
+ resource.setDeviceType(entity.getDeviceType());
+
+ resource.setDeviceName(entity.getDeviceName());
+ resource.setFwVersion(entity.getFwVersion());
+ resource.setSwVersion(entity.getSwVersion());
+ resource.setHwVersion(entity.getHwVersion());
+ resource.setOsVersion(entity.getOsVersion());
+ resource.setManufacturerDetailsLink(entity.getManufacturerDetailsLink());
+ resource.setManufacturingDate(entity.getManufacturingDate());
+ resource.setSubModel(entity.getSubModel());
+ resource.setCountry(entity.getCountry());
+ resource.setLocation(entity.getLocation());
+ resource.setSystemTime(entity.getSystemTime());
+ resource.setSupportURL(entity.getSupportURL());
+ resource.setPresentationURL(entity.getPresentationURL());
+ resource.setProtocol(entity.getProtocol());
+ }
@Override
protected List<ChildResourceRef> getChildResourceRef(MgmtObjAnncEntity entity, int level, int offset) {
@@ -117,7 +129,7 @@
@Override
protected void mapChildResourceRef(MgmtObjAnncEntity entity, AnnouncedMgmtResource resource, int level, int offset) {
-// ((MgmtObjWithChildren)resource).getChildResource().addAll(getChildResourceRef(entity, level, offset));
+ ((MgmtObjAnncWithChildren)resource).getChildResource().addAll(getChildResourceRef(entity, level, offset));
}
@Override
@@ -125,18 +137,22 @@
// add child ref subscription
for (SubscriptionEntity sub : entity.getSubscriptions()){
Subscription subRes = new SubscriptionMapper().mapEntityToResource(sub, ResultContent.ATTRIBUTES, level - 1, offset - 1);
-// ((MgmtObjWithChildren)resource).getSubscriptions().add(subRes);
+ ((MgmtObjAnncWithChildren)resource).getSubscriptions().add(subRes);
}
}
@Override
protected AnnouncedMgmtResource createResource(MgmtObjAnncEntity entity) {
-// if (entity instanceof AreaNwkInfoEntity)
-// return new AreaNwkInfo();
-// if (entity instanceof AreaNwkDeviceInfoEntity)
-// return new AreaNwkDeviceInfo();
-// if (entity instanceof DeviceInfoEntity)
-// return new DeviceInfo();
+ BigInteger mgd = entity.getMgmtDefinition();
+ if (mgd.equals(MgmtDefinitionTypes.AREA_NWK_INFO)) {
+ return new AreaNwkInfoAnnc();
+ }
+ if (mgd.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO)) {
+ return new AreaNwkDeviceInfoAnnc();
+ }
+ if (mgd.equals(MgmtDefinitionTypes.DEVICE_INFO)) {
+ return new DeviceInfoAnnc();
+ }
return null;
}
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/NodeAnncMapper.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/NodeAnncMapper.java
new file mode 100644
index 0000000..d115d42
--- /dev/null
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/NodeAnncMapper.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2017 Orange.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.om2m.core.entitymapper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.om2m.commons.constants.ResourceType;
+import org.eclipse.om2m.commons.constants.ResultContent;
+import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
+import org.eclipse.om2m.commons.entities.SubscriptionEntity;
+import org.eclipse.om2m.commons.resource.ChildResourceRef;
+import org.eclipse.om2m.commons.resource.NodeAnnc;
+import org.eclipse.om2m.commons.resource.Subscription;
+
+/**
+ * Mapper for Node resource - entity
+ *
+ */
+public class NodeAnncMapper extends EntityMapper<NodeAnncEntity, NodeAnnc> {
+
+ private MgmtObjAnncMapper mgmtObjMapper;
+
+ public NodeAnncMapper() {
+ super();
+ mgmtObjMapper = new MgmtObjAnncMapper();
+ }
+
+ @Override
+ protected void mapAttributes(NodeAnncEntity entity, NodeAnnc resource, int level, int offset) {
+ if (level < 0) {
+ return;
+ }
+
+ // announceableResource attributes
+ EntityMapperFactory.getAnnouncedResourceMapper().mapAttributes(entity, resource, level, offset);
+
+ // node attribute
+ resource.setNodeID(entity.getNodeID());
+ resource.setHostedCSELink(entity.getHostedCSELink());
+ resource.setHostedServiceLinks(entity.getHostedServiceLinks());
+ }
+
+ @Override
+ protected List<ChildResourceRef> getChildResourceRef(NodeAnncEntity entity,
+ int level, int offset) {
+ List<ChildResourceRef> childRefs = new ArrayList<>();
+ if (level == 0) {
+ return childRefs;
+ }
+
+ // add child ref subscription
+ for (SubscriptionEntity sub : entity.getChildSubscriptions()){
+ ChildResourceRef child = new ChildResourceRef();
+ child.setResourceName(sub.getName());
+ child.setType(ResourceType.SUBSCRIPTION);
+ child.setValue(sub.getResourceID());
+ childRefs.add(child);
+ childRefs.addAll(new SubscriptionMapper().getChildResourceRef(sub, level - 1, offset - 1));
+ }
+
+ // add mgmt obj entities
+ for (MgmtObjAnncEntity mgmtObj : entity.getMgmtObjEntities()) {
+ childRefs.add(createChildResourceRef(mgmtObj));
+ childRefs.addAll(mgmtObjMapper.getChildResourceRef(mgmtObj, level - 1, offset - 1));
+ }
+
+ return childRefs;
+ }
+
+ @Override
+ protected void mapChildResourceRef(NodeAnncEntity entity, NodeAnnc resource, int level, int offset) {
+ resource.getChildResource().addAll(getChildResourceRef(entity, level, offset));
+ }
+
+ @Override
+ protected void mapChildResources(NodeAnncEntity entity, NodeAnnc resource, int level, int offset) {
+ // add child ref subscription
+ for (SubscriptionEntity sub : entity.getChildSubscriptions()){
+ Subscription subRes = new SubscriptionMapper().mapEntityToResource(sub, ResultContent.ATTRIBUTES, level - 1, offset - 1);
+// resource.getMgmtObjs().add(subRes);
+ }
+ // add mgmt obj entities
+ for (MgmtObjAnncEntity mgmtObj : entity.getMgmtObjEntities()) {
+ resource.getMgmtObjs().add(mgmtObjMapper.mapEntityToResource(mgmtObj,
+ ResultContent.ATTRIBUTES, level - 1, offset - 1));
+ }
+ }
+
+ @Override
+ protected NodeAnnc createResource() {
+ return new NodeAnnc();
+ }
+
+ private final ChildResourceRef createChildResourceRef(MgmtObjAnncEntity entity) {
+ ChildResourceRef chref = new ChildResourceRef();
+ chref.setResourceName(entity.getName());
+ chref.setType(ResourceType.MGMT_OBJ_ANNC);
+ chref.setValue(entity.getResourceID());
+ return chref;
+ }
+
+}
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/NodeMapper.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/NodeMapper.java
index 3c035ff..2cd6fa6 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/NodeMapper.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/NodeMapper.java
@@ -57,7 +57,7 @@
// node attribute
resource.setNodeID(entity.getNodeID());
resource.setHostedCSELink(entity.getHostedCSELink());
- resource.setHostedAppLinks(entity.getHostedAppLink());
+ resource.setHostedServiceLinks(entity.getHostedServiceLinks());
}
@Override
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/RemoteCSEMapper.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/RemoteCSEMapper.java
index 898c314..1ec5bca 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/RemoteCSEMapper.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/entitymapper/RemoteCSEMapper.java
@@ -31,6 +31,8 @@
import org.eclipse.om2m.commons.entities.DynamicAuthorizationConsultationEntity;
import org.eclipse.om2m.commons.entities.FlexContainerEntity;
import org.eclipse.om2m.commons.entities.GroupEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
+import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.commons.entities.PollingChannelEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
import org.eclipse.om2m.commons.entities.ScheduleEntity;
@@ -43,6 +45,8 @@
import org.eclipse.om2m.commons.resource.Container;
import org.eclipse.om2m.commons.resource.DynamicAuthorizationConsultation;
import org.eclipse.om2m.commons.resource.Group;
+import org.eclipse.om2m.commons.resource.Node;
+import org.eclipse.om2m.commons.resource.NodeAnnc;
import org.eclipse.om2m.commons.resource.PollingChannel;
import org.eclipse.om2m.commons.resource.RemoteCSE;
import org.eclipse.om2m.commons.resource.Subscription;
@@ -82,7 +86,6 @@
@Override
protected List<ChildResourceRef> getChildResourceRef(RemoteCSEEntity csrEntity, int level, int offset) {
List<ChildResourceRef> childRefs = new ArrayList<>();
-
if (level == 0) {
return childRefs;
}
@@ -169,7 +172,24 @@
child.setType(ResourceType.SCHEDULE);
childRefs.add(child);
}
- // TODO add NODE ref
+ // adding node refs
+ for (NodeEntity nod : csrEntity.getChildNodes()) {
+ ChildResourceRef ch = new ChildResourceRef();
+ ch.setResourceName(nod.getName());
+ ch.setType(ResourceType.NODE);
+ ch.setValue(nod.getResourceID());
+ childRefs.add(ch);
+ childRefs.addAll(new NodeMapper().getChildResourceRef(nod, level - 1, offset - 1));
+ }
+ // adding nodeAnnc refs
+ for (NodeAnncEntity nod : csrEntity.getChildAnncNodes()) {
+ ChildResourceRef ch = new ChildResourceRef();
+ ch.setResourceName(nod.getName());
+ ch.setType(ResourceType.NODE_ANNC);
+ ch.setValue(nod.getResourceID());
+ childRefs.add(ch);
+ childRefs.addAll(new NodeAnncMapper().getChildResourceRef(nod, level - 1, offset - 1));
+ }
// adding DynamicAuthorizationConsultation refs
for (DynamicAuthorizationConsultationEntity dace : csrEntity.getChildDynamicAuthorizationConsultation()) {
@@ -237,6 +257,15 @@
PollingChannel chPch = new PollingChannelMapper().mapEntityToResource(pollEntity, ResultContent.ATTRIBUTES_AND_CHILD_RES, level - 1, offset - 1);
csr.getAEOrContainerOrGroup().add(chPch);
}
+ // adding node refs
+ for (NodeEntity nod : csrEntity.getChildNodes()) {
+ Node node = new NodeMapper().mapEntityToResource(nod, ResultContent.ATTRIBUTES_AND_CHILD_RES, level - 1, offset - 1);
+ csr.getAEOrContainerOrGroup().add(node);
+ }
+ for (NodeAnncEntity nod : csrEntity.getChildAnncNodes()) {
+ NodeAnnc node = new NodeAnncMapper().mapEntityToResource(nod, ResultContent.ATTRIBUTES_AND_CHILD_RES, level - 1, offset - 1);
+ csr.getAEOrContainerOrGroup().add(node);
+ }
// adding schedule child
ScheduleEntity sch = csrEntity.getLinkedSchedule();
if (sch != null) {
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/router/Patterns.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/router/Patterns.java
index 0b7c185..b9ed2af 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/router/Patterns.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/router/Patterns.java
@@ -20,7 +20,6 @@
package org.eclipse.om2m.core.router;
-import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.om2m.commons.constants.Constants;
@@ -34,6 +33,8 @@
*/
public class Patterns implements Constants {
+// private static Log LOGGER = LogFactory.getLog(Patterns.class);
+
/** All short name for filtering */
private static final String ALL_SHORT_NAMES = ShortName.ACP + "|" + ShortName.AE + "|" + ShortName.CNT +
"|" + ShortName.CIN + "|" + ShortName.REMOTE_CSE + "|" + ShortName.LATEST + "|" + ShortName.OLDEST +
@@ -98,7 +99,11 @@
public final Pattern NODE_PATTERN = Pattern.compile(CSE_BASE_PATTERN + "/" + ShortName.NODE + Constants.PREFIX_SEPERATOR + ID_STRING);
+ public final Pattern NODE_ANNC_PATTERN = Pattern.compile(CSE_BASE_PATTERN + "/" + ShortName.NODE_ANNC + Constants.PREFIX_SEPERATOR + ID_STRING);
+
public final Pattern NMGMT_OBJ_PATTERN = Pattern.compile(CSE_BASE_PATTERN + "/" + ShortName.MGO + Constants.PREFIX_SEPERATOR + ID_STRING);
+
+ public final Pattern NMGMT_OBJ_ANNC_PATTERN = Pattern.compile(CSE_BASE_PATTERN + "/" + ShortName.MGOA + Constants.PREFIX_SEPERATOR + ID_STRING);
/** Non-hierarchical URI pattern */
public final Pattern NON_HIERARCHICAL_PATTERN = Pattern.compile(
@@ -118,11 +123,7 @@
*/
public boolean match(Pattern pattern, String uri) {
// Match uri with pattern
- Matcher m = pattern.matcher(uri);
- if (!m.matches()){
- return false;
- }
- return true;
+ return pattern.matcher(uri).matches();
}
/**
@@ -180,9 +181,15 @@
if (match(NMGMT_OBJ_PATTERN, uri)) {
return db.getDAOFactory().getMgmtObjDAO();
}
+ if (match(NODE_ANNC_PATTERN, uri)) {
+ return db.getDAOFactory().getNodeAnncDAO();
+ }
+ if (match(NMGMT_OBJ_ANNC_PATTERN, uri)) {
+ return db.getDAOFactory().getMgmtObjAnncDAO();
+ }
return null;
}
-
+
/**
* Method used to check the validity of the resource name provided
* @param resourceName
diff --git a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/router/Router.java b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/router/Router.java
index 4c84857..8408990 100644
--- a/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/router/Router.java
+++ b/org.eclipse.om2m.core/src/main/java/org/eclipse/om2m/core/router/Router.java
@@ -39,11 +39,12 @@
import org.eclipse.om2m.commons.exceptions.NotImplementedException;
import org.eclipse.om2m.commons.exceptions.Om2mException;
import org.eclipse.om2m.commons.exceptions.ResourceNotFoundException;
+import org.eclipse.om2m.commons.resource.DynamicAuthorizationConsultation;
import org.eclipse.om2m.commons.resource.RequestPrimitive;
import org.eclipse.om2m.commons.resource.ResponsePrimitive;
-import org.eclipse.om2m.core.controller.AEAnncController;
import org.eclipse.om2m.core.controller.AEController;
import org.eclipse.om2m.core.controller.AccessControlPolicyController;
+import org.eclipse.om2m.core.controller.AEAnncController;
import org.eclipse.om2m.core.controller.CSEBaseController;
import org.eclipse.om2m.core.controller.ContainerController;
import org.eclipse.om2m.core.controller.ContentInstanceController;
@@ -58,6 +59,7 @@
import org.eclipse.om2m.core.controller.LatestOldestController.SortingPolicy;
import org.eclipse.om2m.core.controller.MgmtObjAnncController;
import org.eclipse.om2m.core.controller.MgmtObjController;
+import org.eclipse.om2m.core.controller.NodeAnncController;
import org.eclipse.om2m.core.controller.NodeController;
import org.eclipse.om2m.core.controller.PollingChannelController;
import org.eclipse.om2m.core.controller.PollingChannelUriController;
@@ -310,9 +312,15 @@
if (patterns.match(patterns.NODE_PATTERN, uri)) {
return new NodeController();
}
+ if (patterns.match(patterns.NODE_ANNC_PATTERN, uri)) {
+ return new NodeAnncController();
+ }
if (patterns.match(patterns.NMGMT_OBJ_PATTERN, uri)) {
return new MgmtObjController();
}
+ if (patterns.match(patterns.NMGMT_OBJ_ANNC_PATTERN, uri)) {
+ return new MgmtObjAnncController();
+ }
if (patterns.match(patterns.SUBSCRIPTION_PATTERN, uri)){
return new SubscriptionController();
}
@@ -373,6 +381,8 @@
return new MgmtObjController();
case ResourceType.MGMT_OBJ_ANNC:
return new MgmtObjAnncController();
+ case ResourceType.NODE_ANNC:
+ return new NodeAnncController();
default :
throw new NotImplementedException("ResourceType: " + resourceType + " is not implemented");
}
diff --git a/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/CseUtil.java b/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/CseUtil.java
index 81b5c6c..fdddfa4 100644
--- a/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/CseUtil.java
+++ b/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/CseUtil.java
@@ -22,10 +22,9 @@
import org.eclipse.om2m.commons.resource.AbstractFlexContainer;
import org.eclipse.om2m.commons.resource.AccessControlPolicy;
import org.eclipse.om2m.commons.resource.AccessControlRule;
-import org.eclipse.om2m.commons.resource.DeviceInfo;
+import org.eclipse.om2m.commons.resource.MgmtObj;
import org.eclipse.om2m.commons.resource.Node;
import org.eclipse.om2m.commons.resource.RequestPrimitive;
-import org.eclipse.om2m.commons.resource.Resource;
import org.eclipse.om2m.commons.resource.ResponsePrimitive;
import org.eclipse.om2m.commons.resource.SetOfAcrs;
import org.eclipse.om2m.commons.resource.Subscription;
@@ -193,8 +192,7 @@
* @param baseLocation location of the to be created resource
* @return response sent by the CSE
*/
- public static ResponsePrimitive sendCreateNodeRequest(Node node,
- DeviceInfo devInfo, String baseLocation) {
+ public static ResponsePrimitive sendCreateNodeRequest(Node node, String baseLocation) {
RequestPrimitive request = new RequestPrimitive();
request.setFrom(Constants.ADMIN_REQUESTING_ENTITY);
request.setTo(baseLocation);
@@ -209,15 +207,18 @@
return resp;
Node createdNode = (Node) resp.getContent();
- request = new RequestPrimitive();
- request.setFrom(Constants.ADMIN_REQUESTING_ENTITY);
- request.setTo(createdNode.getResourceID());
- request.setOperation(Operation.CREATE);
- request.setResourceType(ResourceType.MGMT_OBJ);
- request.setRequestContentType(MimeMediaType.OBJ);
- request.setReturnContentType(MimeMediaType.OBJ);
- request.setContent(devInfo);
- return cseService.doRequest(request);
+ for (MgmtObj mgmtObj : node.getMgmtObjs()) {
+ request = new RequestPrimitive();
+ request.setFrom(Constants.ADMIN_REQUESTING_ENTITY);
+ request.setTo(createdNode.getResourceID());
+ request.setOperation(Operation.CREATE);
+ request.setResourceType(ResourceType.MGMT_OBJ);
+ request.setRequestContentType(MimeMediaType.OBJ);
+ request.setReturnContentType(MimeMediaType.OBJ);
+ request.setContent(mgmtObj);
+ cseService.doRequest(request);
+ }
+ return resp;
}
/**
diff --git a/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/SDTDeviceAdaptor.java b/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/SDTDeviceAdaptor.java
index 3a5f5bb..fe2736c 100644
--- a/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/SDTDeviceAdaptor.java
+++ b/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/SDTDeviceAdaptor.java
@@ -13,10 +13,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.om2m.commons.constants.ResponseStatusCode;
+import org.eclipse.om2m.commons.constants.ShortName;
import org.eclipse.om2m.commons.resource.AbstractFlexContainer;
+import org.eclipse.om2m.commons.resource.AreaNwkDeviceInfo;
import org.eclipse.om2m.commons.resource.CustomAttribute;
import org.eclipse.om2m.commons.resource.DeviceInfo;
-import org.eclipse.om2m.commons.resource.MgmtObj;
import org.eclipse.om2m.commons.resource.Node;
import org.eclipse.om2m.commons.resource.ResponsePrimitive;
import org.eclipse.om2m.commons.resource.flexcontainerspec.FlexContainerFactory;
@@ -31,12 +32,14 @@
private static final String SEP = "/";
private static final String DEVICE_PREFIX = "DEVICE_";
+ private static final String NODE_PREFIX = "NODE_";
private final boolean hasToBeAnnounced;
private final String parentLocation;
private final String baseLocation;
private final String resourceLocation;
- private final String resourceName;
+ private final String deviceName;
+ private final String nodeName;
private final Device device;
private final String adminAcpResource;
private final String announceCseId;
@@ -58,8 +61,9 @@
this.baseLocation = baseLocation;
this.hasToBeAnnounced = hasToBeAnnounced;
this.device = pDevice;
- this.resourceName = DEVICE_PREFIX + device.getId();
- this.resourceLocation = parentLocation + SEP + resourceName;
+ this.deviceName = DEVICE_PREFIX + device.getId();
+ this.nodeName = NODE_PREFIX + device.getId();
+ this.resourceLocation = parentLocation + SEP + deviceName;
this.announceCseId = pAnnounceCseId;
this.remoteCseName = pRemoteCseName;
this.adminAcpResource = pAdminAcpResource;
@@ -70,11 +74,11 @@
* Publish the SDT Device as a FlexContainer entity into the oneM2M tree
*/
public boolean publishIntoOM2MTree() {
- logger.info("publishIntoOM2MTree(flexContainerName=" + resourceName
+ logger.info("publishIntoOM2MTree(flexContainerName=" + deviceName
+ ", parentLocation:" + parentLocation);
AbstractFlexContainer flexContainer = FlexContainerFactory.getSpecializationFlexContainer(device.getShortDefinitionName());
- flexContainer.setName(resourceName);
+ flexContainer.setName(deviceName);
// set container definition with the value of the Device definition
flexContainer.setContainerDefinition(device.getDefinition());
@@ -82,9 +86,6 @@
flexContainer.setLongName(device.getLongDefinitionName());
flexContainer.setShortName(device.getShortDefinitionName());
flexContainer.getAccessControlPolicyIDs().add(adminAcpResource);
- if (hasToBeAnnounced) {
- flexContainer.getAnnounceTo().add(SEP + announceCseId);
- }
// labels
flexContainer.getLabels().add("id/" + this.device.getId());
@@ -99,13 +100,38 @@
isPublished = true;
Node node = new Node();
- node.setNodeID("Node-" + resourceName);
+ node.setNodeID(nodeName);
+ node.setName(nodeName);
node.getAccessControlPolicyIDs().add(adminAcpResource);
- if (hasToBeAnnounced) {
- node.getAnnounceTo().add(SEP + announceCseId);
- }
+ node.getLabels().add("object.type/node");
+ node.getLabels().add("name/" + nodeName);
DeviceInfo devInfo = new DeviceInfo();
node.getMgmtObjs().add(devInfo);
+
+ AreaNwkDeviceInfo nwkDeviceInfo = new AreaNwkDeviceInfo();
+ node.getMgmtObjs().add(nwkDeviceInfo);
+ nwkDeviceInfo.setAreaNwkId("TBD");
+ nwkDeviceInfo.setDevID(this.device.getName());
+ nwkDeviceInfo.setDevType("SDT");
+
+ logger.info("Node mgmtObjs: " + node.getMgmtObjs());
+
+ if (hasToBeAnnounced) {
+ flexContainer.getAnnounceTo().add(SEP + announceCseId);
+ flexContainer.getAnnouncedAttribute().add(ShortName.NODE_LINK);
+
+ node.getAnnounceTo().add(SEP + announceCseId);
+ node.getAnnouncedAttribute().add(ShortName.HOSTED_SRV_LINK);
+
+ devInfo.getAnnounceTo().add(SEP + announceCseId);
+ devInfo.getAnnouncedAttribute().add(ShortName.MANUFACTURER);
+ devInfo.getAnnouncedAttribute().add(ShortName.DEVICE_LABEL);
+ devInfo.getAnnouncedAttribute().add(ShortName.DEVICE_MODEL);
+ devInfo.getAnnouncedAttribute().add(ShortName.DEVICE_TYPE);
+
+ nwkDeviceInfo.getAnnounceTo().add(SEP + announceCseId);
+ nwkDeviceInfo.getAnnouncedAttribute().add(ShortName.DEV_TYPE);
+ }
// SDT properties are customAttribute of the device FlexContainer
for (Property sdtProperty : device.getProperties()) {
@@ -161,28 +187,25 @@
}
}
+ flexContainer.setNodeLink(nodeName);
ResponsePrimitive response = CseUtil.sendCreateFlexContainerRequest(flexContainer,
parentLocation);
if (! response.getResponseStatusCode().equals(ResponseStatusCode.CREATED)) {
logger.error("unable to create a FlexContainer for SDT Device "
- + resourceName + " : " + response.getContent(), null);
+ + deviceName + " : " + response.getContent(), null);
return false;
}
flexContainer = (AbstractFlexContainer) response.getContent();
+ node.setHostedServiceLinks(flexContainer.getName());
- node.setHostedAppLinks(flexContainer.getResourceID());
- response = CseUtil.sendCreateNodeRequest(node, devInfo, baseLocation);
+ response = CseUtil.sendCreateNodeRequest(node, baseLocation);
if (! response.getResponseStatusCode().equals(ResponseStatusCode.CREATED)) {
logger.error("unable to create a Node for SDT Device "
- + resourceName + " : " + response.getContent(), null);
+ + deviceName + " : " + response.getContent(), null);
return false;
}
- nodeLocation = ((MgmtObj)response.getContent()).getParentID();
+ nodeLocation = ((Node)response.getContent()).getResourceID();
- // update
- flexContainer.setNodeLink(nodeLocation);
- CseUtil.sendUpdateFlexContainerRequest(flexContainer);
-
// Modules (must be done now because Device FlexContainer is the parent of each Module)
for (Module module : this.device.getModules()) {
SDTModuleAdaptor sdtModuleAdaptor = new SDTModuleAdaptor(module,
diff --git a/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/SDTIpeApplication.java b/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/SDTIpeApplication.java
index 1065a61..a18c429 100644
--- a/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/SDTIpeApplication.java
+++ b/org.eclipse.om2m.ipe.sdt/src/main/java/org/eclipse/om2m/ipe/sdt/SDTIpeApplication.java
@@ -15,6 +15,7 @@
import org.apache.commons.logging.LogFactory;
import org.eclipse.om2m.commons.constants.Constants;
import org.eclipse.om2m.commons.constants.ResponseStatusCode;
+import org.eclipse.om2m.commons.constants.ShortName;
import org.eclipse.om2m.commons.resource.AE;
import org.eclipse.om2m.commons.resource.AEAnnc;
import org.eclipse.om2m.commons.resource.AccessControlPolicy;
@@ -112,6 +113,9 @@
ae.getPointOfAccess().add(POA);
if (hasToBeAnnounced) {
ae.getAnnounceTo().add(SEP + remoteCseId);
+ ae.getAnnouncedAttribute().add(ShortName.APP_ID);
+ ae.getAnnouncedAttribute().add(ShortName.APP_NAME);
+ ae.getAnnouncedAttribute().add(ShortName.NODE_LINK);
}
ResponsePrimitive resp = null;
diff --git a/org.eclipse.om2m.persistence.eclipselink/META-INF/persistence.xml b/org.eclipse.om2m.persistence.eclipselink/META-INF/persistence.xml
index b21a7de..42f45d6 100644
--- a/org.eclipse.om2m.persistence.eclipselink/META-INF/persistence.xml
+++ b/org.eclipse.om2m.persistence.eclipselink/META-INF/persistence.xml
@@ -33,30 +33,34 @@
<class>org.eclipse.om2m.commons.entities.AccessControlRuleEntity</class>
<class>org.eclipse.om2m.commons.entities.AeEntity</class>
<class>org.eclipse.om2m.commons.entities.AeAnncEntity</class>
+ <class>org.eclipse.om2m.commons.entities.AnnouncedResourceEntity</class>
<class>org.eclipse.om2m.commons.entities.AreaNwkDeviceInfoEntity</class>
+ <class>org.eclipse.om2m.commons.entities.AreaNwkDeviceInfoAnncEntity</class>
<class>org.eclipse.om2m.commons.entities.AreaNwkInfoEntity</class>
- <class>org.eclipse.om2m.commons.entities.DeviceInfoEntity</class>
- <class>org.eclipse.om2m.commons.entities.CSEBaseEntity</class>
+ <class>org.eclipse.om2m.commons.entities.AreaNwkInfoAnncEntity</class>
<class>org.eclipse.om2m.commons.entities.ContainerEntity</class>
+ <class>org.eclipse.om2m.commons.entities.ContentInstanceEntity</class>
+ <class>org.eclipse.om2m.commons.entities.CreatedAnnouncedResourceEntity</class>
+ <class>org.eclipse.om2m.commons.entities.CSEBaseEntity</class>
+ <class>org.eclipse.om2m.commons.entities.CustomAttributeEntity</class>
+ <class>org.eclipse.om2m.commons.entities.ContainerAnncEntity</class>
+ <class>org.eclipse.om2m.commons.entities.DeviceInfoEntity</class>
+ <class>org.eclipse.om2m.commons.entities.DeviceInfoAnncEntity</class>
<class>org.eclipse.om2m.commons.entities.DynamicAuthorizationConsultationEntity</class>
<class>org.eclipse.om2m.commons.entities.FlexContainerEntity</class>
<class>org.eclipse.om2m.commons.entities.FlexContainerAnncEntity</class>
- <class>org.eclipse.om2m.commons.entities.CustomAttributeEntity</class>
- <class>org.eclipse.om2m.commons.entities.ContainerAnncEntity</class>
- <class>org.eclipse.om2m.commons.entities.ContentInstanceEntity</class>
<class>org.eclipse.om2m.commons.entities.GroupEntity</class>
<class>org.eclipse.om2m.commons.entities.LabelEntity</class>
<class>org.eclipse.om2m.commons.entities.NodeEntity</class>
+ <class>org.eclipse.om2m.commons.entities.NodeAnncEntity</class>
<class>org.eclipse.om2m.commons.entities.PollingChannelEntity</class>
+ <class>org.eclipse.om2m.commons.entities.RegularResourceEntity</class>
<class>org.eclipse.om2m.commons.entities.RemoteCSEEntity</class>
<class>org.eclipse.om2m.commons.entities.RemoteCseAnncEntity</class>
<class>org.eclipse.om2m.commons.entities.RequestEntity</class>
<class>org.eclipse.om2m.commons.entities.ScheduleEntity</class>
<class>org.eclipse.om2m.commons.entities.SubscriptionEntity</class>
<class>org.eclipse.om2m.commons.entities.UriMapperEntity</class>
- <class>org.eclipse.om2m.commons.entities.CreatedAnnouncedResourceEntity</class>
- <class>org.eclipse.om2m.commons.entities.RegularResourceEntity</class>
- <class>org.eclipse.om2m.commons.entities.AnnouncedResourceEntity</class>
<properties>
<!-- Actions performed at the start of the platform -->
diff --git a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/DAOFactoryImpl.java b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/DAOFactoryImpl.java
index a49f637..0d0a87d 100644
--- a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/DAOFactoryImpl.java
+++ b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/DAOFactoryImpl.java
@@ -33,6 +33,7 @@
import org.eclipse.om2m.commons.entities.LabelEntity;
import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.commons.entities.PollingChannelEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
@@ -57,6 +58,7 @@
import org.eclipse.om2m.persistence.eclipselink.internal.dao.LabelDAO;
import org.eclipse.om2m.persistence.eclipselink.internal.dao.MgmtObjAnncDAO;
import org.eclipse.om2m.persistence.eclipselink.internal.dao.MgmtObjDAO;
+import org.eclipse.om2m.persistence.eclipselink.internal.dao.NodeAnncDAO;
import org.eclipse.om2m.persistence.eclipselink.internal.dao.NodeDAO;
import org.eclipse.om2m.persistence.eclipselink.internal.dao.OldestDAO;
import org.eclipse.om2m.persistence.eclipselink.internal.dao.PollingChannelDAO;
@@ -190,13 +192,18 @@
public DAO<DynamicAuthorizationConsultationEntity> getDynamicAuthorizationDAO() {
return new DynamicAuthorizationConsultationDAO();
}
-
+
@Override
public DAO<ContentInstanceEntity> getOldestDAO() {
return new OldestDAO();
}
@Override
+ public DAO<NodeAnncEntity> getNodeAnncDAO() {
+ return new NodeAnncDAO();
+ }
+
+ @Override
public DAO<MgmtObjAnncEntity> getMgmtObjAnncDAO() {
return new MgmtObjAnncDAO();
}
diff --git a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/DynamicAuthorizationConsultationDAO.java b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/DynamicAuthorizationConsultationDAO.java
index 06828ed..770ec22 100644
--- a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/DynamicAuthorizationConsultationDAO.java
+++ b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/DynamicAuthorizationConsultationDAO.java
@@ -13,7 +13,9 @@
import org.eclipse.om2m.commons.entities.FlexContainerEntity;
import org.eclipse.om2m.commons.entities.GroupEntity;
import org.eclipse.om2m.commons.entities.LabelEntity;
+import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
import org.eclipse.om2m.commons.entities.ScheduleEntity;
@@ -87,6 +89,10 @@
mgmtObj.getDynamicAuthorizationConsultations().remove(resource);
transaction.getEm().merge(mgmtObj);
}
+ for(MgmtObjAnncEntity mgmtObj : resource.getMgmtObjAnncEntities()) {
+ mgmtObj.getDynamicAuthorizationConsultations().remove(resource);
+ transaction.getEm().merge(mgmtObj);
+ }
// remove link with Container
for(ContainerEntity ce : resource.getLinkedContainerEntities()) {
@@ -135,6 +141,10 @@
ne.getDynamicAuthorizationConsultations().remove(resource);
transaction.getEm().merge(ne);
}
+ for(NodeAnncEntity ne : resource.getLinkedNodeAnncEntities()) {
+ ne.getDynamicAuthorizationConsultations().remove(resource);
+ transaction.getEm().merge(ne);
+ }
// remove link with RemoteCSE
for(RemoteCSEEntity rce : resource.getLinkedRemoteCSEEntities()) {
diff --git a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/MgmtObjAnncDAO.java b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/MgmtObjAnncDAO.java
index 8e4e282..ab05694 100644
--- a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/MgmtObjAnncDAO.java
+++ b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/MgmtObjAnncDAO.java
@@ -9,89 +9,85 @@
import java.math.BigInteger;
-import org.eclipse.om2m.commons.entities.AreaNwkDeviceInfoEntity;
-import org.eclipse.om2m.commons.entities.AreaNwkInfoEntity;
-import org.eclipse.om2m.commons.entities.DeviceInfoEntity;
+import org.eclipse.om2m.commons.constants.MgmtDefinitionTypes;
+import org.eclipse.om2m.commons.entities.AreaNwkDeviceInfoAnncEntity;
+import org.eclipse.om2m.commons.entities.AreaNwkInfoAnncEntity;
+import org.eclipse.om2m.commons.entities.DeviceInfoAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
-import org.eclipse.om2m.commons.entities.MgmtObjEntity;
import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.persistence.eclipselink.internal.DBTransactionJPAImpl;
import org.eclipse.om2m.persistence.service.DBTransaction;
public class MgmtObjAnncDAO extends AbstractDAO<MgmtObjAnncEntity> {
- private AbstractDAO<DeviceInfoEntity> deviceInfoDAO;
- private AbstractDAO<AreaNwkInfoEntity> areaNwkInfoDAO;
- private AbstractDAO<AreaNwkDeviceInfoEntity> areaNwkDeviceInfoDAO;
-
+ private AbstractDAO<DeviceInfoAnncEntity> deviceInfoDAO;
+ private AbstractDAO<AreaNwkInfoAnncEntity> areaNwkInfoDAO;
+ private AbstractDAO<AreaNwkDeviceInfoAnncEntity> areaNwkDeviceInfoDAO;
public MgmtObjAnncDAO() {
- deviceInfoDAO = new AbstractDAO<DeviceInfoEntity>() {
+ deviceInfoDAO = new AbstractDAO<DeviceInfoAnncEntity>() {
@Override
- public DeviceInfoEntity find(DBTransaction dbTransaction, Object id) {
+ public DeviceInfoAnncEntity find(DBTransaction dbTransaction, Object id) {
DBTransactionJPAImpl transaction = (DBTransactionJPAImpl) dbTransaction;
- return transaction.getEm().find(DeviceInfoEntity.class, id);
+ return transaction.getEm().find(DeviceInfoAnncEntity.class, id);
}
@Override
- public void delete(DBTransaction dbTransaction, DeviceInfoEntity resource) {
+ public void delete(DBTransaction dbTransaction, DeviceInfoAnncEntity resource) {
}
};
- areaNwkInfoDAO = new AbstractDAO<AreaNwkInfoEntity>() {
+ areaNwkInfoDAO = new AbstractDAO<AreaNwkInfoAnncEntity>() {
@Override
- public AreaNwkInfoEntity find(DBTransaction dbTransaction, Object id) {
+ public AreaNwkInfoAnncEntity find(DBTransaction dbTransaction, Object id) {
DBTransactionJPAImpl transaction = (DBTransactionJPAImpl) dbTransaction;
- return transaction.getEm().find(AreaNwkInfoEntity.class, id);
+ return transaction.getEm().find(AreaNwkInfoAnncEntity.class, id);
}
@Override
- public void delete(DBTransaction dbTransaction, AreaNwkInfoEntity resource) {
+ public void delete(DBTransaction dbTransaction, AreaNwkInfoAnncEntity resource) {
}
};
- areaNwkDeviceInfoDAO = new AbstractDAO<AreaNwkDeviceInfoEntity>() {
+ areaNwkDeviceInfoDAO = new AbstractDAO<AreaNwkDeviceInfoAnncEntity>() {
@Override
- public AreaNwkDeviceInfoEntity find(DBTransaction dbTransaction, Object id) {
+ public AreaNwkDeviceInfoAnncEntity find(DBTransaction dbTransaction, Object id) {
DBTransactionJPAImpl transaction = (DBTransactionJPAImpl) dbTransaction;
- return transaction.getEm().find(AreaNwkDeviceInfoEntity.class, id);
+ return transaction.getEm().find(AreaNwkDeviceInfoAnncEntity.class, id);
}
@Override
- public void delete(DBTransaction dbTransaction, AreaNwkDeviceInfoEntity resource) {
+ public void delete(DBTransaction dbTransaction, AreaNwkDeviceInfoAnncEntity resource) {
}
};
}
@Override
public void create(DBTransaction dbTransaction, MgmtObjAnncEntity resource) {
- // TODO
BigInteger mgd = resource.getMgmtDefinition();
-// if (mgd.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
-// areaNwkInfoDAO.create(dbTransaction, (AreaNwkInfoEntity) resource);
-// else if (mgd.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO))
-// areaNwkDeviceInfoDAO.create(dbTransaction, (AreaNwkDeviceInfoEntity) resource);
-// else if (mgd.equals(MgmtDefinitionTypes.DEVICE_INFO))
-// deviceInfoDAO.create(dbTransaction, (DeviceInfoEntity) resource);
-// else
+ if (mgd.equals(MgmtDefinitionTypes.AREA_NWK_INFO))
+ areaNwkInfoDAO.create(dbTransaction, (AreaNwkInfoAnncEntity) resource);
+ else if (mgd.equals(MgmtDefinitionTypes.AREA_NWK_DEVICE_INFO))
+ areaNwkDeviceInfoDAO.create(dbTransaction, (AreaNwkDeviceInfoAnncEntity) resource);
+ else if (mgd.equals(MgmtDefinitionTypes.DEVICE_INFO))
+ deviceInfoDAO.create(dbTransaction, (DeviceInfoAnncEntity) resource);
+ else
throw new UnsupportedOperationException("Not implemented");
}
@Override
public MgmtObjAnncEntity find(DBTransaction dbTransaction, Object id) {
- // TODO
- MgmtObjEntity ret = deviceInfoDAO.find(dbTransaction, id);
-// if (ret != null) return ret;
-// ret = areaNwkInfoDAO.find(dbTransaction, id);
-// if (ret != null) return ret;
-// ret = areaNwkDeviceInfoDAO.find(dbTransaction, id);
-// if (ret != null) return ret;
+ MgmtObjAnncEntity ret = deviceInfoDAO.find(dbTransaction, id);
+ if (ret != null) return ret;
+ ret = areaNwkInfoDAO.find(dbTransaction, id);
+ if (ret != null) return ret;
+ ret = areaNwkDeviceInfoDAO.find(dbTransaction, id);
+ if (ret != null) return ret;
return null;
}
@Override
public void delete(DBTransaction dbTransaction, MgmtObjAnncEntity resource) {
DBTransactionJPAImpl transaction = (DBTransactionJPAImpl) dbTransaction;
-// if (resource.getParentAE() != null) {
-// resource.getParentAE().getChildFlexContainers().remove(resource);
-// }
+ if (resource.getParentNode() != null)
+ resource.getParentNode().removeMgmtObj(resource);
transaction.getEm().remove(resource);
// cleaning the cache
transaction.getEm().getEntityManagerFactory().getCache().evict(NodeEntity.class);
diff --git a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/MgmtObjDAO.java b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/MgmtObjDAO.java
index e84f056..aded936 100644
--- a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/MgmtObjDAO.java
+++ b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/MgmtObjDAO.java
@@ -90,7 +90,7 @@
resource.getParentNode().removeMgmtObj(resource);
transaction.getEm().remove(resource);
// cleaning the cache
- transaction.getEm().getEntityManagerFactory().getCache().evict(NodeEntity.class);
+// transaction.getEm().getEntityManagerFactory().getCache().evict(NodeEntity.class);
}
}
diff --git a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/NodeAnncDAO.java b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/NodeAnncDAO.java
new file mode 100644
index 0000000..b397fe5
--- /dev/null
+++ b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/NodeAnncDAO.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2017 Orange.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.om2m.persistence.eclipselink.internal.dao;
+
+import java.util.List;
+
+import org.eclipse.om2m.commons.entities.LabelEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
+import org.eclipse.om2m.persistence.eclipselink.internal.DBTransactionJPAImpl;
+import org.eclipse.om2m.persistence.service.DBTransaction;
+
+public class NodeAnncDAO extends AbstractDAO<NodeAnncEntity>{
+
+ @Override
+ public NodeAnncEntity find(DBTransaction dbTransaction, Object id) {
+ DBTransactionJPAImpl transaction = (DBTransactionJPAImpl) dbTransaction;
+ return transaction.getEm().find(NodeAnncEntity.class, id);
+ }
+
+ @Override
+ public void delete(DBTransaction dbTransaction, NodeAnncEntity resource) {
+ DBTransactionJPAImpl transaction = (DBTransactionJPAImpl) dbTransaction;
+ for (LabelEntity label : resource.getLabelsEntities()) {
+ label.getLinkedNodesA().remove(resource);
+ }
+ if (resource.getParentCsb() != null) {
+ resource.getParentCsb().getChildAnncNodes().remove(resource);
+ }
+ if (resource.getParentCsr() != null) {
+ resource.getParentCsr().getChildAnncNodes().remove(resource);
+ }
+ transaction.getEm().remove(resource);
+ }
+
+ @Override
+ public void update(DBTransaction dbTransaction, NodeAnncEntity resource) {
+ DBTransactionJPAImpl transaction = (DBTransactionJPAImpl) dbTransaction;
+ List<LabelEntity> lbls = processLabels(dbTransaction, resource.getLabelsEntities());
+ resource.setLabelsEntities(lbls);
+ transaction.getEm().merge(resource);
+ super.update(dbTransaction, resource);
+// List<LabelEntity> lbls = processLabels(dbTransaction, resource.getLabelsEntities());
+// resource.setLabelsEntities(lbls);
+// super.update(dbTransaction, resource);
+ }
+
+}
diff --git a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/NodeDAO.java b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/NodeDAO.java
index 00d67ee..f9e401c 100644
--- a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/NodeDAO.java
+++ b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/dao/NodeDAO.java
@@ -39,9 +39,18 @@
@Override
public void delete(DBTransaction dbTransaction, NodeEntity resource) {
DBTransactionJPAImpl transaction = (DBTransactionJPAImpl) dbTransaction;
+ for (LabelEntity label : resource.getLabelsEntities()) {
+ label.getLinkedNodes().remove(resource);
+ }
+ if (resource.getParentCsb() != null) {
+ resource.getParentCsb().getChildNodes().remove(resource);
+ }
+ if (resource.getParentCsr() != null) {
+ resource.getParentCsr().getChildNodes().remove(resource);
+ }
transaction.getEm().remove(resource);
- transaction.getEm().getEntityManagerFactory().getCache().evict(CSEBaseEntity.class);
- transaction.getEm().getEntityManagerFactory().getCache().evict(RemoteCSEEntity.class);
+// transaction.getEm().getEntityManagerFactory().getCache().evict(CSEBaseEntity.class);
+// transaction.getEm().getEntityManagerFactory().getCache().evict(RemoteCSEEntity.class);
}
@Override
diff --git a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/util/DynamicAuthorizationConsultationUtilImpl.java b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/util/DynamicAuthorizationConsultationUtilImpl.java
index 650eb39..e572bc6 100644
--- a/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/util/DynamicAuthorizationConsultationUtilImpl.java
+++ b/org.eclipse.om2m.persistence.eclipselink/src/main/java/org/eclipse/om2m/persistence/eclipselink/internal/util/DynamicAuthorizationConsultationUtilImpl.java
@@ -17,7 +17,9 @@
import org.eclipse.om2m.commons.entities.FlexContainerAnncEntity;
import org.eclipse.om2m.commons.entities.FlexContainerEntity;
import org.eclipse.om2m.commons.entities.GroupEntity;
+import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.commons.entities.PollingChannelEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
@@ -195,13 +197,18 @@
case ResourceType.MGMT_OBJ:
MgmtObjEntity mgmtObjEntity = DBServiceJPAImpl.getInstance().getDAOFactory()
.getMgmtObjDAO().find(dbTransaction, resourceId);
- resourceEntity = mgmtObjEntity;
- if (mgmtObjEntity != null) {
- daces.addAll(mgmtObjEntity.getDynamicAuthorizationConsultations());
- }
+ resourceEntity = mgmtObjEntity;
+ if (mgmtObjEntity != null) {
+ daces.addAll(mgmtObjEntity.getDynamicAuthorizationConsultations());
+ }
break;
case ResourceType.MGMT_OBJ_ANNC:
- // TODO ?
+ MgmtObjAnncEntity mgmtObjAnncEntity = DBServiceJPAImpl.getInstance().getDAOFactory()
+ .getMgmtObjAnncDAO().find(dbTransaction, resourceId);
+ resourceEntity = mgmtObjAnncEntity;
+ if (mgmtObjAnncEntity != null) {
+ daces.addAll(mgmtObjAnncEntity.getDynamicAuthorizationConsultations());
+ }
break;
case ResourceType.NODE:
NodeEntity nodeEntity = DBServiceJPAImpl.getInstance().getDAOFactory().getNodeDAO().find(dbTransaction, resourceId);
@@ -211,7 +218,11 @@
}
break;
case ResourceType.NODE_ANNC:
- // TODO ?
+ NodeAnncEntity nodeAnncEntity = DBServiceJPAImpl.getInstance().getDAOFactory().getNodeAnncDAO().find(dbTransaction, resourceId);
+ resourceEntity = nodeAnncEntity;
+ if (nodeAnncEntity != null) {
+ daces.addAll(nodeAnncEntity.getDynamicAuthorizationConsultations());
+ }
break;
case ResourceType.POLLING_CHANNEL:
PollingChannelEntity pollingChannelEntity = DBServiceJPAImpl.getInstance().getDAOFactory().getPollingChannelDAO().find(dbTransaction, resourceId);
diff --git a/org.eclipse.om2m.persistence.mongodb/src/main/java/org/eclipse/om2m/persistence/mongodb/DAOFactoryImpl.java b/org.eclipse.om2m.persistence.mongodb/src/main/java/org/eclipse/om2m/persistence/mongodb/DAOFactoryImpl.java
index 49428f1..3ce5e58 100644
--- a/org.eclipse.om2m.persistence.mongodb/src/main/java/org/eclipse/om2m/persistence/mongodb/DAOFactoryImpl.java
+++ b/org.eclipse.om2m.persistence.mongodb/src/main/java/org/eclipse/om2m/persistence/mongodb/DAOFactoryImpl.java
@@ -22,6 +22,7 @@
import org.eclipse.om2m.commons.entities.LabelEntity;
import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.commons.entities.PollingChannelEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
@@ -159,7 +160,7 @@
@Override
public DAO<DynamicAuthorizationConsultationEntity> getDynamicAuthorizationDAO() {
- return new DAOImpl<DynamicAuthorizationConsultationEntity>(DynamicAuthorizationConsultationEntity.class) {
+ return new DAOImpl<DynamicAuthorizationConsultationEntity>(DynamicAuthorizationConsultationEntity.class) {
};
}
@@ -169,6 +170,17 @@
};
}
+ @Override
+ public DAO<NodeAnncEntity> getNodeAnncDAO() {
+ return new DAOImpl<NodeAnncEntity>(NodeAnncEntity.class) {
+ };
+ }
+
+ @Override
+ public DAO<MgmtObjAnncEntity> getMgmtObjAnncDAO() {
+ return new DAOImpl<MgmtObjAnncEntity>(MgmtObjAnncEntity.class) {
+ };
+ }
@Override
public DAO<ContainerEntity> getContainerByResourceNameDAO() {
@@ -185,10 +197,4 @@
return new AeByAppIdDAO();
}
- @Override
- public DAO<MgmtObjAnncEntity> getMgmtObjAnncDAO() {
- return new DAOImpl<MgmtObjAnncEntity>(MgmtObjAnncEntity.class) {
- };
- }
-
}
diff --git a/org.eclipse.om2m.persistence.mongodb/src/main/java/org/eclipse/om2m/persistence/mongodb/dao/LabelEntityDao.java b/org.eclipse.om2m.persistence.mongodb/src/main/java/org/eclipse/om2m/persistence/mongodb/dao/LabelEntityDao.java
index bef107c..75355e2 100644
--- a/org.eclipse.om2m.persistence.mongodb/src/main/java/org/eclipse/om2m/persistence/mongodb/dao/LabelEntityDao.java
+++ b/org.eclipse.om2m.persistence.mongodb/src/main/java/org/eclipse/om2m/persistence/mongodb/dao/LabelEntityDao.java
@@ -16,17 +16,16 @@
import org.eclipse.om2m.commons.entities.AccessControlPolicyEntity;
import org.eclipse.om2m.commons.entities.AeAnncEntity;
import org.eclipse.om2m.commons.entities.AeEntity;
-import org.eclipse.om2m.commons.entities.AreaNwkDeviceInfoEntity;
-import org.eclipse.om2m.commons.entities.AreaNwkInfoEntity;
import org.eclipse.om2m.commons.entities.CSEBaseEntity;
import org.eclipse.om2m.commons.entities.ContainerEntity;
import org.eclipse.om2m.commons.entities.ContentInstanceEntity;
-import org.eclipse.om2m.commons.entities.DeviceInfoEntity;
import org.eclipse.om2m.commons.entities.FlexContainerAnncEntity;
import org.eclipse.om2m.commons.entities.FlexContainerEntity;
import org.eclipse.om2m.commons.entities.GroupEntity;
import org.eclipse.om2m.commons.entities.LabelEntity;
+import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
import org.eclipse.om2m.persistence.mongodb.DBServiceImpl;
@@ -108,10 +107,18 @@
NodeEntity nodeEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), NodeEntity.class);
labelEntity.getLinkedNodes().add(nodeEntity);
break;
+ case(ResourceType.NODE_ANNC):
+ NodeAnncEntity nodeAnncEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), NodeAnncEntity.class);
+ labelEntity.getLinkedNodesA().add(nodeAnncEntity);
+ break;
case(ResourceType.MGMT_OBJ):
MgmtObjEntity mgmtObjEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), MgmtObjEntity.class);
labelEntity.addMgmtObj(mgmtObjEntity);
break;
+ case(ResourceType.MGMT_OBJ_ANNC):
+ MgmtObjAnncEntity mgmtObjAnncEntity = DBServiceImpl.getInstance().getGson().fromJson(element.toJson(), MgmtObjAnncEntity.class);
+ labelEntity.addMgmtObjA(mgmtObjAnncEntity);
+ break;
default:
break;
}
diff --git a/org.eclipse.om2m.persistence.service/src/main/java/org/eclipse/om2m/persistence/service/DAOFactory.java b/org.eclipse.om2m.persistence.service/src/main/java/org/eclipse/om2m/persistence/service/DAOFactory.java
index eeaf8fe..48acbf5 100644
--- a/org.eclipse.om2m.persistence.service/src/main/java/org/eclipse/om2m/persistence/service/DAOFactory.java
+++ b/org.eclipse.om2m.persistence.service/src/main/java/org/eclipse/om2m/persistence/service/DAOFactory.java
@@ -34,6 +34,7 @@
import org.eclipse.om2m.commons.entities.LabelEntity;
import org.eclipse.om2m.commons.entities.MgmtObjAnncEntity;
import org.eclipse.om2m.commons.entities.MgmtObjEntity;
+import org.eclipse.om2m.commons.entities.NodeAnncEntity;
import org.eclipse.om2m.commons.entities.NodeEntity;
import org.eclipse.om2m.commons.entities.PollingChannelEntity;
import org.eclipse.om2m.commons.entities.RemoteCSEEntity;
@@ -96,6 +97,8 @@
public abstract DAO<ContentInstanceEntity> getOldestDAO();
+ public abstract DAO<NodeAnncEntity> getNodeAnncDAO();
+
public abstract DAO<MgmtObjAnncEntity> getMgmtObjAnncDAO();
}