You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/08/28 23:56:00 UTC
[1/4] incubator-ranger git commit: RANGER-595: updated tag-store
implementation; replaced externalId references with guid;
service.tagVersion incremented on changes to tagging for the service-resources
Repository: incubator-ranger
Updated Branches:
refs/heads/tag-policy 83cb21e0b -> 303f7b702
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java
new file mode 100644
index 0000000..503df82
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java
@@ -0,0 +1,190 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.ranger.common.SearchField;
+import org.apache.ranger.common.SearchField.DATA_TYPE;
+import org.apache.ranger.common.SearchField.SEARCH_TYPE;
+import org.apache.ranger.entity.XXTagResourceMap;
+import org.apache.ranger.plugin.model.RangerTagResourceMap;
+import org.apache.ranger.plugin.util.SearchFilter;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RangerTagResourceMapService extends RangerTagResourceMapServiceBase<XXTagResourceMap, RangerTagResourceMap> {
+
+ public RangerTagResourceMapService() {
+ searchFields.add(new SearchField(SearchFilter.TAG_DEF_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
+ searchFields.add(new SearchField(SearchFilter.TAG_RESOURCE_ID, "obj.resourceId", DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
+ searchFields.add(new SearchField(SearchFilter.TAG_ID, "obj.tagId", DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
+ }
+
+ @Override
+ protected void validateForCreate(RangerTagResourceMap vObj) {
+
+ }
+
+ @Override
+ protected void validateForUpdate(RangerTagResourceMap vObj, XXTagResourceMap entityObj) {
+
+ }
+
+ @Override
+ public RangerTagResourceMap postCreate(XXTagResourceMap tagResMap) {
+ RangerTagResourceMap ret = super.postCreate(tagResMap);
+
+ daoMgr.getXXTagResourceMap().updateServiceForTagUpdate(tagResMap.getTagId(), tagResMap.getUpdateTime());
+
+ return ret;
+ }
+
+ @Override
+ public RangerTagResourceMap postUpdate(XXTagResourceMap tagResMap) {
+ RangerTagResourceMap ret = super.postUpdate(tagResMap);
+
+ daoMgr.getXXTagResourceMap().updateServiceForTagUpdate(tagResMap.getTagId(), tagResMap.getUpdateTime());
+
+ return ret;
+ }
+
+ @Override
+ protected XXTagResourceMap preDelete(Long id) {
+ XXTagResourceMap tagResMap = super.preDelete(id);
+
+ if (tagResMap != null) {
+ daoMgr.getXXTagResourceMap().updateServiceForTagUpdate(tagResMap.getTagId(), tagResMap.getUpdateTime());
+ }
+
+ return tagResMap;
+ }
+
+ public RangerTagResourceMap getPopulatedViewObject(XXTagResourceMap xObj) {
+ return populateViewBean(xObj);
+ }
+
+
+ public List<RangerTagResourceMap> getByTagId(Long tagId) {
+ List<RangerTagResourceMap> ret = new ArrayList<RangerTagResourceMap>();
+
+ List<XXTagResourceMap> xxTagResourceMaps = daoMgr.getXXTagResourceMap().findByTagId(tagId);
+
+ if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+ for(XXTagResourceMap xxTagResourceMap : xxTagResourceMaps) {
+ RangerTagResourceMap tagResourceMap = populateViewBean(xxTagResourceMap);
+
+ ret.add(tagResourceMap);
+ }
+ }
+
+ return ret;
+ }
+
+ public List<RangerTagResourceMap> getByTagGuid(String tagGuid) {
+ List<RangerTagResourceMap> ret = new ArrayList<RangerTagResourceMap>();
+
+ List<XXTagResourceMap> xxTagResourceMaps = daoMgr.getXXTagResourceMap().findByTagGuid(tagGuid);
+
+ if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+ for(XXTagResourceMap xxTagResourceMap : xxTagResourceMaps) {
+ RangerTagResourceMap tagResourceMap = populateViewBean(xxTagResourceMap);
+
+ ret.add(tagResourceMap);
+ }
+ }
+
+ return ret;
+ }
+
+ public List<RangerTagResourceMap> getByResourceId(Long resourceId) {
+ List<RangerTagResourceMap> ret = new ArrayList<RangerTagResourceMap>();
+
+ List<XXTagResourceMap> xxTagResourceMaps = daoMgr.getXXTagResourceMap().findByResourceId(resourceId);
+
+ if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+ for(XXTagResourceMap xxTagResourceMap : xxTagResourceMaps) {
+ RangerTagResourceMap tagResourceMap = populateViewBean(xxTagResourceMap);
+
+ ret.add(tagResourceMap);
+ }
+ }
+
+ return ret;
+ }
+
+ public List<RangerTagResourceMap> getByResourceGuid(String resourceGuid) {
+ List<RangerTagResourceMap> ret = new ArrayList<RangerTagResourceMap>();
+
+ List<XXTagResourceMap> xxTagResourceMaps = daoMgr.getXXTagResourceMap().findByResourceGuid(resourceGuid);
+
+ if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+ for(XXTagResourceMap xxTagResourceMap : xxTagResourceMaps) {
+ RangerTagResourceMap tagResourceMap = populateViewBean(xxTagResourceMap);
+
+ ret.add(tagResourceMap);
+ }
+ }
+
+ return ret;
+ }
+
+ public RangerTagResourceMap getByTagAndResourceId(Long tagId, Long resourceId) {
+ RangerTagResourceMap ret = null;
+
+ XXTagResourceMap xxTagResourceMap = daoMgr.getXXTagResourceMap().findByTagAndResourceId(tagId, resourceId);
+
+ if(xxTagResourceMap != null) {
+ ret = populateViewBean(xxTagResourceMap);
+ }
+
+ return ret;
+ }
+
+ public RangerTagResourceMap getByTagAndResourceGuid(String tagGuid, String resourceGuid) {
+ RangerTagResourceMap ret = null;
+
+ XXTagResourceMap xxTagResourceMap = daoMgr.getXXTagResourceMap().findByTagAndResourceGuid(tagGuid, resourceGuid);
+
+ if(xxTagResourceMap != null) {
+ ret = populateViewBean(xxTagResourceMap);
+ }
+
+ return ret;
+ }
+
+ public List<RangerTagResourceMap> getTagResourceMapsByServiceId(Long serviceId) {
+ List<RangerTagResourceMap> ret = new ArrayList<RangerTagResourceMap>();
+
+ List<XXTagResourceMap> xxTagResourceMaps = daoMgr.getXXTagResourceMap().findByServiceId(serviceId);
+
+ if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+ for(XXTagResourceMap xxTagResourceMap : xxTagResourceMaps) {
+ RangerTagResourceMap tagResourceMap = populateViewBean(xxTagResourceMap);
+
+ ret.add(tagResourceMap);
+ }
+ }
+
+ return ret;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
new file mode 100644
index 0000000..727cb79
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.ranger.common.GUIDUtil;
+import org.apache.ranger.entity.XXTagResourceMap;
+import org.apache.ranger.plugin.model.RangerTagResourceMap;
+import org.apache.ranger.plugin.store.PList;
+import org.apache.ranger.plugin.util.SearchFilter;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class RangerTagResourceMapServiceBase<T extends XXTagResourceMap, V extends RangerTagResourceMap> extends RangerBaseModelService<T, V> {
+
+ @Autowired
+ GUIDUtil guidUtil;
+
+ @Override
+ @SuppressWarnings("unchecked")
+ protected XXTagResourceMap mapViewToEntityBean(RangerTagResourceMap vObj, XXTagResourceMap xObj, int operationContext) {
+ String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
+
+ xObj.setGuid(guid);
+ xObj.setTagId(vObj.getTagId());
+ xObj.setResourceId(vObj.getResourceId());
+
+ return xObj;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ protected RangerTagResourceMap mapEntityToViewBean(RangerTagResourceMap vObj, XXTagResourceMap xObj) {
+ vObj.setGuid(xObj.getGuid());
+ vObj.setTagId(xObj.getTagId());
+ vObj.setResourceId(xObj.getResourceId());
+
+ return vObj;
+ }
+
+ @SuppressWarnings("unchecked")
+ public PList<RangerTagResourceMap> searchRangerTaggedResources(SearchFilter searchFilter) {
+ PList<RangerTagResourceMap> retList = new PList<RangerTagResourceMap>();
+ List<RangerTagResourceMap> taggedResList = new ArrayList<RangerTagResourceMap>();
+
+ List<XXTagResourceMap> xTaggedResList = (List<XXTagResourceMap>) searchRangerObjects(searchFilter, searchFields, sortFields, (PList<V>) retList);
+
+ for (XXTagResourceMap xTaggedRes : xTaggedResList) {
+ RangerTagResourceMap taggedRes = populateViewBean((T) xTaggedRes);
+ taggedResList.add(taggedRes);
+ }
+ retList.setList(taggedResList);
+ return retList;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java
index b5cb303..1251454 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java
@@ -1,14 +1,15 @@
package org.apache.ranger.service;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
import org.apache.ranger.common.SearchField;
import org.apache.ranger.entity.XXTag;
import org.apache.ranger.plugin.model.RangerTag;
import org.apache.ranger.plugin.util.SearchFilter;
import org.springframework.stereotype.Service;
-/**
- * Created by akulkarni on 8/19/15.
- */
@Service
public class RangerTagService extends RangerTagServiceBase<XXTag, RangerTag> {
@@ -32,4 +33,79 @@ public class RangerTagService extends RangerTagServiceBase<XXTag, RangerTag> {
return populateViewBean(xObj);
}
+ public RangerTag getTagByGuid(String guid) {
+ RangerTag ret = null;
+
+ XXTag xxTag = daoMgr.getXXTag().findByGuid(guid);
+
+ if(xxTag != null) {
+ ret = populateViewBean(xxTag);
+ }
+
+ return ret;
+ }
+
+ public List<RangerTag> getTagsByName(String name) {
+ List<RangerTag> ret = new ArrayList<RangerTag>();
+
+ List<XXTag> xxTags = daoMgr.getXXTag().findByName(name);
+
+ if(CollectionUtils.isNotEmpty(xxTags)) {
+ for(XXTag xxTag : xxTags) {
+ RangerTag tag = populateViewBean(xxTag);
+
+ ret.add(tag);
+ }
+ }
+
+ return ret;
+ }
+
+ public List<RangerTag> getTagsForResourceId(Long resourceId) {
+ List<RangerTag> ret = new ArrayList<RangerTag>();
+
+ List<XXTag> xxTags = daoMgr.getXXTag().findForResourceId(resourceId);
+
+ if(CollectionUtils.isNotEmpty(xxTags)) {
+ for(XXTag xxTag : xxTags) {
+ RangerTag tag = populateViewBean(xxTag);
+
+ ret.add(tag);
+ }
+ }
+
+ return ret;
+ }
+
+ public List<RangerTag> getTagsForResourceGuid(String resourceGuid) {
+ List<RangerTag> ret = new ArrayList<RangerTag>();
+
+ List<XXTag> xxTags = daoMgr.getXXTag().findForResourceGuid(resourceGuid);
+
+ if(CollectionUtils.isNotEmpty(xxTags)) {
+ for(XXTag xxTag : xxTags) {
+ RangerTag tag = populateViewBean(xxTag);
+
+ ret.add(tag);
+ }
+ }
+
+ return ret;
+ }
+
+ public List<RangerTag> getTagsByServiceId(Long serviceId) {
+ List<RangerTag> ret = new ArrayList<RangerTag>();
+
+ List<XXTag> xxTags = daoMgr.getXXTag().findByServiceId(serviceId);
+
+ if(CollectionUtils.isNotEmpty(xxTags)) {
+ for(XXTag xxTag : xxTags) {
+ RangerTag tag = populateViewBean(xxTag);
+
+ ret.add(tag);
+ }
+ }
+
+ return ret;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
index 7a9c9da..359e7ae 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
@@ -20,16 +20,18 @@
package org.apache.ranger.service;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.ranger.common.GUIDUtil;
import org.apache.ranger.common.RangerConfigUtil;
import org.apache.ranger.entity.XXDBBase;
-import org.apache.ranger.entity.XXTagAttributeDef;
+import org.apache.ranger.entity.XXTagAttribute;
import org.apache.ranger.entity.XXTag;
import org.apache.ranger.plugin.model.RangerTag;
-import org.apache.ranger.plugin.model.RangerTagDef;
import org.apache.ranger.plugin.store.PList;
import org.apache.ranger.plugin.util.SearchFilter;
import org.springframework.beans.factory.annotation.Autowired;
@@ -52,8 +54,6 @@ public abstract class RangerTagServiceBase<T extends XXTag, V extends RangerTag>
String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
xObj.setGuid(guid);
- xObj.setVersion(vObj.getVersion());
- xObj.setIsEnabled(vObj.getIsEnabled());
xObj.setName(vObj.getName());
return xObj;
}
@@ -63,22 +63,25 @@ public abstract class RangerTagServiceBase<T extends XXTag, V extends RangerTag>
protected RangerTag mapEntityToViewBean(RangerTag vObj, XXTag xObj) {
vObj.setGuid(xObj.getGuid());
- vObj.setVersion(xObj.getVersion());
- vObj.setIsEnabled(xObj.getIsEnabled());
vObj.setName(xObj.getName());
+ Map<String, String> attributeValues = getAttributeValuesForTag(xObj);
+ vObj.setAttributeValues(attributeValues);
+
return vObj;
}
- /**
- * @param xObj
- * @return
- */
- public RangerTagDef.RangerTagAttributeDef populateRangerTagAttributeDef(XXTagAttributeDef xObj) {
- RangerTagDef.RangerTagAttributeDef attrDef = new RangerTagDef.RangerTagAttributeDef();
- attrDef.setName(xObj.getName());
- attrDef.setType(xObj.getType());
- return attrDef;
+ public Map<String, String> getAttributeValuesForTag(XXTag xtag) {
+ List<XXTagAttribute> tagAttrList = daoMgr.getXXTagAttribute().findByTagId(xtag.getId());
+ Map<String, String> ret = new HashMap<String, String>();
+
+ if(CollectionUtils.isNotEmpty(tagAttrList)) {
+ for (XXTagAttribute tagAttr : tagAttrList) {
+ ret.put(tagAttr.getName(), tagAttr.getValue());
+ }
+ }
+
+ return ret;
}
@SuppressWarnings("unchecked")
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
deleted file mode 100644
index 327a6b8..0000000
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ranger.service;
-
-import org.apache.ranger.common.SearchField;
-import org.apache.ranger.common.SearchField.DATA_TYPE;
-import org.apache.ranger.common.SearchField.SEARCH_TYPE;
-import org.apache.ranger.entity.XXTaggedResource;
-import org.apache.ranger.plugin.model.RangerServiceResource;
-import org.apache.ranger.plugin.util.SearchFilter;
-import org.springframework.stereotype.Service;
-
-@Service
-public class RangerTaggedResourceService extends RangerTaggedResourceServiceBase<XXTaggedResource, RangerServiceResource> {
-
- public RangerTaggedResourceService() {
- searchFields.add(new SearchField(SearchFilter.TAG_RESOURCE_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
- }
-
- @Override
- protected void validateForCreate(RangerServiceResource vObj) {
-
- }
-
- @Override
- protected void validateForUpdate(RangerServiceResource vObj, XXTaggedResource entityObj) {
-
- }
-
- public RangerServiceResource getPopulatedViewObject(XXTaggedResource xObj) {
- return populateViewBean(xObj);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
deleted file mode 100644
index 5f97001..0000000
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ranger.service;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.ranger.common.GUIDUtil;
-import org.apache.ranger.common.MessageEnums;
-import org.apache.ranger.entity.XXResourceDef;
-import org.apache.ranger.entity.XXService;
-import org.apache.ranger.entity.XXTaggedResource;
-import org.apache.ranger.entity.XXTaggedResourceValue;
-import org.apache.ranger.plugin.model.RangerPolicy;
-import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
-import org.apache.ranger.plugin.model.RangerServiceResource;
-import org.apache.ranger.plugin.store.PList;
-import org.apache.ranger.plugin.util.SearchFilter;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public abstract class RangerTaggedResourceServiceBase<T extends XXTaggedResource, V extends RangerServiceResource> extends RangerBaseModelService<T, V> {
-
- @Autowired
- GUIDUtil guidUtil;
-
- @Override
- @SuppressWarnings("unchecked")
- protected XXTaggedResource mapViewToEntityBean(RangerServiceResource vObj, XXTaggedResource xObj, int operationContext) {
- String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
-
- xObj.setGuid(guid);
- xObj.setVersion(vObj.getVersion());
- xObj.setIsEnabled(vObj.getIsEnabled());
-
- XXService xService = daoMgr.getXXService().findByName(vObj.getServiceName());
- if (xService == null) {
- throw restErrorUtil.createRESTException("Error Populating XXTaggedResource. No Service found with name: " + vObj.getServiceName(), MessageEnums.INVALID_INPUT_DATA);
- }
-
- xObj.setServiceId(xService.getId());
-
- return xObj;
- }
-
- @Override
- @SuppressWarnings("unchecked")
- protected RangerServiceResource mapEntityToViewBean(RangerServiceResource vObj, XXTaggedResource xObj) {
- vObj.setGuid(xObj.getGuid());
- vObj.setVersion(xObj.getVersion());
- vObj.setIsEnabled(xObj.getIsEnabled());
-
- XXService xService = daoMgr.getXXService().getById(xObj.getServiceId());
-
- vObj.setServiceName(xService.getName());
-
- List<XXTaggedResourceValue> resValueList = daoMgr.getXXTaggedResourceValue().findByTaggedResId(xObj.getId());
- Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = new HashMap<String, RangerPolicy.RangerPolicyResource>();
-
- for (XXTaggedResourceValue resValue : resValueList) {
- List<String> resValueMapList = daoMgr.getXXTaggedResourceValueMap().findValuesByResValueId(resValue.getId());
-
- XXResourceDef xResDef = daoMgr.getXXResourceDef().getById(resValue.getResDefId());
-
- RangerPolicyResource policyRes = new RangerPolicyResource();
- policyRes.setIsExcludes(resValue.getIsExcludes());
- policyRes.setIsRecursive(resValue.getIsRecursive());
- policyRes.setValues(resValueMapList);
-
- resourceSpec.put(xResDef.getName(), policyRes);
- }
-
- vObj.setResourceSpec(resourceSpec);
-
- return vObj;
- }
-
- @SuppressWarnings("unchecked")
- public PList<RangerServiceResource> searchRangerTaggedResources(SearchFilter searchFilter) {
- PList<RangerServiceResource> retList = new PList<RangerServiceResource>();
- List<RangerServiceResource> taggedResList = new ArrayList<RangerServiceResource>();
-
- List<XXTaggedResource> xTaggedResList = (List<XXTaggedResource>) searchRangerObjects(searchFilter, searchFields, sortFields, (PList<V>) retList);
-
- for (XXTaggedResource xTaggedRes : xTaggedResList) {
- RangerServiceResource taggedRes = populateViewBean((T) xTaggedRes);
- taggedResList.add(taggedRes);
- }
- retList.setList(taggedResList);
- return retList;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index 555dfb0..b8fd003 100644
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -534,51 +534,125 @@
</named-query>
<!-- Start ==> JPA Queries for Tag Based Policies -->
-
- <named-query name="XXTagAttributeDef.findByTagDefId">
- <query>select obj from XXTagAttributeDef obj where obj.tagDefId = :tagDefId</query>
+
+ <named-query name="XXServiceResourceElement.findByResourceId">
+ <query>select obj from XXServiceResourceElement obj where obj.resourceId = :resourceId</query>
</named-query>
- <named-query name="XXTaggedResourceValue.findByTaggedResId">
- <query>select obj from XXTaggedResourceValue obj where obj.taggedResourceId = :taggedResId</query>
+ <named-query name="XXServiceResourceElementValue.findByResElementId">
+ <query>select obj from XXServiceResourceElementValue obj where obj.resElementId = :resElementId</query>
+ </named-query>
+
+ <named-query name="XXServiceResourceElementValue.findValuesByResElementId">
+ <query>select obj.value from XXServiceResourceElementValue obj where obj.resElementId = :resElementId</query>
+ </named-query>
+
+ <named-query name="XXTagResourceMap.findByResourceId">
+ <query>select obj from XXTagResourceMap obj where obj.resourceId = :resourceId</query>
+ </named-query>
+
+ <named-query name="XXTagResourceMap.findByResourceGuid">
+ <query>select obj from XXTagResourceMap obj, XXServiceResource res where res.guid = :resourceGuid and obj.resourceId = res.id</query>
</named-query>
- <named-query name="XXTaggedResourceValueMap.findByResValueId">
- <query>select obj from XXTaggedResourceValueMap obj where obj.resValueId = :resValueId</query>
+ <named-query name="XXTagResourceMap.findByTagId">
+ <query>select obj from XXTagResourceMap obj where obj.tagId = :tagId</query>
+ </named-query>
+
+ <named-query name="XXTagResourceMap.findByTagGuid">
+ <query>select obj from XXTagResourceMap obj, XXTag tag where tag.guid = :tagGuid and obj.tagId = tag.id</query>
</named-query>
- <named-query name="XXTaggedResourceValueMap.findValuesByResValueId">
- <query>select obj.value from XXTaggedResourceValueMap obj where obj.resValueId = :resValueId</query>
+ <named-query name="XXTagResourceMap.findByTagAndResourceId">
+ <query>select obj from XXTagResourceMap obj where obj.resourceId = :resourceId and obj.tagId = :tagId</query>
</named-query>
- <named-query name="XXTag.findByTaggedResource">
- <query>select obj from XXTag obj, XXTagResourceMap tagResMap where
- tagResMap.taggedResId = :taggedResId and obj.id = tagResMap.tagId</query>
+ <named-query name="XXTagResourceMap.findByTagAndResourceGuid">
+ <query>select obj from XXTagResourceMap obj, XXTag tag, XXServiceResource res where tag.guid = :tagGuid and res.guid = :resourceGuid and obj.tagId = tag.id and obj.resourceId = res.id</query>
</named-query>
+
+ <named-query name="XXTagResourceMap.findByServiceId">
+ <query>select obj from XXTagResourceMap obj, XXServiceResource res
+ where obj.resourceId = res.id and res.serviceId = :serviceId
+ order by obj.resourceId</query>
+ </named-query>
+
+ <named-query name="XXTagResourceMap.updateTagVersionInService">
+ <query>update XXService obj set obj.tagVersion = obj.tagVersion + 1, obj.tagUpdateTime = :tagUpdateTime
+ where obj.id in (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes, XXTag tag
+ where res.id = tagRes.resourceId and tagRes.tagId = tag.id and tag.id = :tagId)</query>
+ </named-query>
- <named-query name="XXTagAttribute.findByTagId">
- <query>select obj from XXTagAttribute obj where obj.tagId = :tagId</query>
+ <named-query name="XXTagDef.findByGuid">
+ <query>select obj from XXTagDef obj where obj.guid = :guid</query>
+ </named-query>
+
+ <named-query name="XXTagDef.findByName">
+ <query>select obj from XXTagDef obj where obj.name = :name</query>
+ </named-query>
+
+ <named-query name="XXTagDef.findByServiceId">
+ <query>select obj from XXTagDef obj where obj.name in
+ (select tag.name from XXTag tag, XXTagResourceMap tagRes, XXServiceResource resource where tag.id = tagRes.tagId and tagRes.resourceId = resource.id and resource.serviceId = :serviceId)</query>
+ </named-query>
+
+ <named-query name="XXTagDef.updateTagVersionInService">
+ <query>update XXService obj set obj.tagVersion = obj.tagVersion + 1, obj.tagUpdateTime = :tagUpdateTime
+ where obj.id in (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes, XXTag tag, XXTagDef tagDef
+ where res.id = tagRes.resourceId and tagRes.tagId = tag.id and tag.name = tagDef.name and tagDef.id = :tagDefId)</query>
+ </named-query>
+
+ <named-query name="XXTagAttributeDef.findByTagDefId">
+ <query>select obj from XXTagAttributeDef obj where obj.tagDefId = :tagDefId</query>
+ </named-query>
+
+
+ <named-query name="XXTag.findByGuid">
+ <query>select obj from XXTag obj where obj.guid = :guid</query>
</named-query>
- <named-query name="XXTaggedResource.findByServiceId">
- <query>select obj from XXTaggedResource obj where obj.serviceId = :serviceId</query>
+ <named-query name="XXTag.findByName">
+ <query>select obj from XXTag obj where obj.name = :name</query>
+ </named-query>
+
+ <named-query name="XXTag.findByResourceId">
+ <query>select obj from XXTag obj, XXTagResourceMap tagResMap where tagResMap.resourceId = :resourceId and obj.id = tagResMap.tagId</query>
+ </named-query>
+
+ <named-query name="XXTag.findByResourceGuid">
+ <query>select obj from XXTag obj, XXTagResourceMap tagRes, XXServiceResource res where res.guid = :resourceGuid and res.id = tagRes.resourceId and tagRes.tagId = obj.id</query>
</named-query>
<named-query name="XXTag.findTagNamesByServiceId">
- <query>select obj.name from XXTag obj, XXTaggedResource tRes, XXTagResourceMap tResMap where
- tRes.serviceId = :serviceId and obj.id = tResMap.tagId and tRes.id = tResMap.taggedResId </query>
+ <query>select obj.name from XXTag obj, XXServiceResource tRes, XXTagResourceMap tResMap where
+ tRes.serviceId = :serviceId and obj.id = tResMap.tagId and tRes.id = tResMap.resourceId </query>
</named-query>
- <named-query name="XXTagResourceMap.findByTaggedResourceId">
- <query>select obj from XXTagResourceMap obj where obj.taggedResId = :taggedResId</query>
+ <named-query name="XXTag.findByServiceId">
+ <query>select obj from XXTag obj where obj.id in
+ (select tagRes.tagId from XXTagResourceMap tagRes, XXServiceResource resource where tagRes.resourceId = resource.id and resource.serviceId = :serviceId)</query>
+ </named-query>
+
+ <named-query name="XXTagAttribute.findByTagId">
+ <query>select obj from XXTagAttribute obj where obj.tagId = :tagId</query>
+ </named-query>
+
+
+ <named-query name="XXServiceResource.findByGuid">
+ <query>select obj from XXServiceResource obj where obj.guid = :guid</query>
</named-query>
- <named-query name="XXTag.findTagsByExternalId">
- <query>select obj from XXTag obj where obj.externalId = :externalId</query>
+ <named-query name="XXServiceResource.findByServiceId">
+ <query>select obj from XXServiceResource obj where obj.serviceId = :serviceId</query>
</named-query>
- <named-query name="XXTagDef.findByName">
- <query>select obj from XXTagDef obj where obj.name = :name</query>
+ <named-query name="XXServiceResource.findTaggedResourcesInServiceId">
+ <query>select obj from XXServiceResource obj where obj.serviceId = :serviceId and obj.id in
+ (select tagResMap.resourceId from XXTagResourceMap tagResMap)</query>
+ </named-query>
+
+ <named-query name="XXServiceResource.findByServiceIdAndResourceSignature">
+ <query>select obj from XXServiceResource obj where obj.serviceId = :serviceId and obj.resourceSignature = :resourceSignature</query>
</named-query>
<!-- End <== JPA Queries for Tag Based Policies -->
[3/4] incubator-ranger git commit: RANGER-595: updated tag-store
implementation; replaced externalId references with guid;
service.tagVersion incremented on changes to tagging for the service-resources
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql b/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql
index 4f6fe02..629d1c4 100644
--- a/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql
+++ b/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql
@@ -34,6 +34,7 @@ CREATE TABLE IF NOT EXISTS `x_tag_def` (
`is_enabled` TINYINT NULL DEFAULT 1,
PRIMARY KEY (`id`),
UNIQUE INDEX `guid_UNIQUE` (`guid` ASC),
+ INDEX `fk_X_TAG_DEF_NAME` (`name` ASC),
INDEX `fk_X_TAG_DEF_ADDED_BY_ID` (`added_by_id` ASC),
INDEX `fk_X_TAG_DEF_UPD_BY_ID` (`upd_by_id` ASC),
CONSTRAINT `fk_X_TAG_DEF_ADDED_BY_ID`
@@ -61,17 +62,14 @@ CREATE TABLE IF NOT EXISTS `x_tag` (
`update_time` DATETIME NULL,
`added_by_id` BIGINT(20) NULL,
`upd_by_id` BIGINT(20) NULL,
- `tag_def_id` BIGINT(20) NULL,
- `external_id` VARCHAR(512) NULL,
`name` VARCHAR(512) NOT NULL,
PRIMARY KEY (`id`),
- INDEX `fk_X_TAG_DEF_ID` (`tag_def_id` ASC),
+ INDEX `fk_X_TAG_NAME` (`name` ASC),
INDEX `fk_X_TAG_ADDED_BY_ID` (`added_by_id` ASC),
INDEX `fk_X_TAG_UPD_BY_ID` (`upd_by_id` ASC),
- KEY `external_id` (`external_id`),
- CONSTRAINT `fk_X_TAG_DEF_ID`
- FOREIGN KEY (`tag_def_id`)
- REFERENCES `x_tag_def` (`id`)
+ CONSTRAINT `fk_X_TAG_NAME`
+ FOREIGN KEY (`name`)
+ REFERENCES `x_tag_def` (`name`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_X_TAG_ADDED_BY_ID`
@@ -89,11 +87,11 @@ ENGINE = InnoDB;
-- -----------------------------------------------------
--- Table `x_tagged_resource`
+-- Table `x_service_resource`
-- -----------------------------------------------------
-DROP TABLE IF EXISTS `x_tagged_resource` ;
+DROP TABLE IF EXISTS `x_service_resource` ;
-CREATE TABLE IF NOT EXISTS `x_tagged_resource` (
+CREATE TABLE IF NOT EXISTS `x_service_resource` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`guid` VARCHAR(512) NOT NULL,
`create_time` DATETIME NULL,
@@ -101,24 +99,23 @@ CREATE TABLE IF NOT EXISTS `x_tagged_resource` (
`added_by_id` BIGINT(20) NULL,
`upd_by_id` BIGINT(20) NULL,
`version` BIGINT(20) NULL,
- `external_id` VARCHAR(512) NULL,
`service_id` BIGINT(20) NOT NULL,
+ `resource_signature` varchar(128) DEFAULT NULL,
`is_enabled` TINYINT NULL DEFAULT 1,
PRIMARY KEY (`id`),
- INDEX `fk_X_TAGGED_RESOURCE_ADDED_BY_ID` (`added_by_id` ASC),
- INDEX `fk_X_TAGGED_RESOURCE_UPD_BY_ID` (`upd_by_id` ASC),
- KEY `external_id` (`external_id`),
- CONSTRAINT `fk_X_TAGGED_RESOURCE_SERVICE_ID`
+ INDEX `fk_X_SERVICE_RESOURCE_ADDED_BY_ID` (`added_by_id` ASC),
+ INDEX `fk_X_SERVICE_RESOURCE_UPD_BY_ID` (`upd_by_id` ASC),
+ CONSTRAINT `fk_X_SERVICE_RESOURCE_SERVICE_ID`
FOREIGN KEY (`service_id`)
REFERENCES `x_service` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
- CONSTRAINT `fk_X_TAGGED_RESOURCE_ADDED_BY_ID`
+ CONSTRAINT `fk_X_SERVICE_RESOURCE_ADDED_BY_ID`
FOREIGN KEY (`added_by_id`)
REFERENCES `x_portal_user` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
- CONSTRAINT `fk_X_TAGGED_RESOURCE_UPD_BY_ID`
+ CONSTRAINT `fk_X_SERVICE_RESOURCE_UPD_BY_ID`
FOREIGN KEY (`upd_by_id`)
REFERENCES `x_portal_user` (`id`)
ON DELETE RESTRICT
@@ -127,40 +124,40 @@ ENGINE = InnoDB;
-- -----------------------------------------------------
--- Table `x_tagged_resource_value`
+-- Table `x_service_resource_element`
-- -----------------------------------------------------
-DROP TABLE IF EXISTS `x_tagged_resource_value` ;
+DROP TABLE IF EXISTS `x_service_resource_element` ;
-CREATE TABLE IF NOT EXISTS `x_tagged_resource_value` (
+CREATE TABLE IF NOT EXISTS `x_service_resource_element` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`guid` VARCHAR(512) NOT NULL,
`create_time` DATETIME NULL,
`update_time` DATETIME NULL,
`added_by_id` BIGINT(20) NULL,
`upd_by_id` BIGINT(20) NULL,
- `tagged_res_id` BIGINT(20) NOT NULL,
+ `res_id` BIGINT(20) NOT NULL,
`res_def_id` BIGINT(20) NOT NULL,
`is_excludes` TINYINT(1) NULL DEFAULT false,
`is_recursive` TINYINT(1) NULL DEFAULT false,
PRIMARY KEY (`id`),
- INDEX `fk_X_TAGGED_RESOURCE_VALUE_ADDED_BY_ID` (`added_by_id` ASC),
- INDEX `fk_X_TAGGED_RESOURCE_VALUE_UPD_BY_ID` (`upd_by_id` ASC),
- CONSTRAINT `fk_X_TAGGED_RESOURCE_VALUE_res_def_id`
+ INDEX `fk_X_SERVICE_RESOURCE_ELEMENT_ADDED_BY_ID` (`added_by_id` ASC),
+ INDEX `fk_X_SERVICE_RESOURCE_ELEMENT_UPD_BY_ID` (`upd_by_id` ASC),
+ CONSTRAINT `fk_X_SERVICE_RESOURCE_ELEMENT_res_def_id`
FOREIGN KEY (`res_def_id`)
REFERENCES `x_resource_def` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
- CONSTRAINT `fk_X_TAGGED_RESOURCE_VALUE_tagged_res_id`
- FOREIGN KEY (`tagged_res_id`)
- REFERENCES `x_tagged_resource` (`id`)
+ CONSTRAINT `fk_X_SERVICE_RESOURCE_ELEMENT_res_id`
+ FOREIGN KEY (`res_id`)
+ REFERENCES `x_service_resource` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
- CONSTRAINT `fk_X_TAGGED_RESOURCE_VALUE_ADDED_BY_ID`
+ CONSTRAINT `fk_X_SERVICE_RESOURCE_ELEMENT_ADDED_BY_ID`
FOREIGN KEY (`added_by_id`)
REFERENCES `x_portal_user` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
- CONSTRAINT `fk_X_TAGGED_RESOURCE_VALUE_UPD_BY_ID`
+ CONSTRAINT `fk_X_SERVICE_RESOURCE_ELEMENT_UPD_BY_ID`
FOREIGN KEY (`upd_by_id`)
REFERENCES `x_portal_user` (`id`)
ON DELETE RESTRICT
@@ -254,10 +251,10 @@ CREATE TABLE IF NOT EXISTS `x_tag_resource_map` (
`added_by_id` BIGINT(20) NULL,
`upd_by_id` BIGINT(20) NULL,
`tag_id` BIGINT(20) NOT NULL,
- `tagged_res_id` BIGINT(20) NOT NULL,
+ `res_id` BIGINT(20) NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_X_TAG_ID` (`tag_id` ASC),
- INDEX `fk_X_TAGGED_RES_ID` (`tagged_res_id` ASC),
+ INDEX `fk_X_SERVICE_RES_ID` (`res_id` ASC),
INDEX `fk_X_TAG_RES_MAP_ADDED_BY_ID` (`added_by_id` ASC),
INDEX `fk_X_TAG_RES_MAP_UPD_BY_ID` (`upd_by_id` ASC),
CONSTRAINT `fk_X_TAG_RES_MAP_TAG_ID`
@@ -265,9 +262,9 @@ CREATE TABLE IF NOT EXISTS `x_tag_resource_map` (
REFERENCES `x_tag` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
- CONSTRAINT `fk_X_TAG_RES_MAP_TAGGED_RES_ID`
- FOREIGN KEY (`tagged_res_id`)
- REFERENCES `x_tagged_resource` (`id`)
+ CONSTRAINT `fk_X_TAG_RES_MAP_SERVICE_RES_ID`
+ FOREIGN KEY (`res_id`)
+ REFERENCES `x_service_resource` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
CONSTRAINT `fk_X_TAG_RES_MAP_ADDED_BY_ID`
@@ -284,35 +281,35 @@ ENGINE = InnoDB;
-- -----------------------------------------------------
--- Table `x_tagged_resource_value_map`
+-- Table `x_service_resource_element_value`
-- -----------------------------------------------------
-DROP TABLE IF EXISTS `x_tagged_resource_value_map` ;
+DROP TABLE IF EXISTS `x_service_resource_element_value` ;
-CREATE TABLE IF NOT EXISTS `x_tagged_resource_value_map` (
+CREATE TABLE IF NOT EXISTS `x_service_resource_element_value` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`guid` VARCHAR(512) NOT NULL,
`create_time` DATETIME NULL,
`update_time` DATETIME NULL,
`added_by_id` BIGINT(20) NULL,
`upd_by_id` BIGINT(20) NULL,
- `res_value_id` BIGINT(20) NOT NULL,
+ `res_element_id` BIGINT(20) NOT NULL,
`value` VARCHAR(512) NOT NULL,
`sort_order` INT NULL,
PRIMARY KEY (`id`),
- INDEX `fk_X_RESOURCE_VALUE_ID` (`res_value_id` ASC),
- INDEX `fk_X_TAGGED_RES_VAL_MAP_ADDED_BY_ID` (`added_by_id` ASC),
- INDEX `fk_X_TAGGED_RES_VAL_MAP_UPD_BY_ID` (`upd_by_id` ASC),
- CONSTRAINT `fk_X_RESOURCE_VALUE_ID`
- FOREIGN KEY (`res_value_id`)
- REFERENCES `x_tagged_resource_value` (`id`)
+ INDEX `fk_X_RESOURCE_ELEMENT_ID` (`res_element_id` ASC),
+ INDEX `fk_X_SERVICE_RES_VAL_MAP_ADDED_BY_ID` (`added_by_id` ASC),
+ INDEX `fk_X_SERVICE_RES_VAL_MAP_UPD_BY_ID` (`upd_by_id` ASC),
+ CONSTRAINT `fk_X_RESOURCE_ELEMENT_ID`
+ FOREIGN KEY (`res_element_id`)
+ REFERENCES `x_service_resource_element` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
- CONSTRAINT `fk_X_TAGGED_RES_VAL_MAP_ADDED_BY_ID`
+ CONSTRAINT `fk_X_SERVICE_RES_VAL_MAP_ADDED_BY_ID`
FOREIGN KEY (`added_by_id`)
REFERENCES `x_portal_user` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
- CONSTRAINT `fk_X_TAGGED_RES_VAL_MAP_UPD_BY_ID`
+ CONSTRAINT `fk_X_SERVICE_RES_VAL_MAP_UPD_BY_ID`
FOREIGN KEY (`upd_by_id`)
REFERENCES `x_portal_user` (`id`)
ON DELETE RESTRICT
@@ -324,4 +321,6 @@ ENGINE = InnoDB;
-- ranger database add column in x_service_def and x_service table
-- ----------------------------------------------------------------
alter table x_service_def add column `options` VARCHAR(1024) DEFAULT NULL NULL;
-alter table x_service add column `tag_service` BIGINT DEFAULT NULL NULL;
\ No newline at end of file
+alter table x_service add column `tag_service` BIGINT DEFAULT NULL NULL,
+ add column `tag_version` BIGINT DEFAULT 0 NOT NULL,
+ add column `tag_update_time` DATETIME DEFAULT NULL NULL;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
index f50687a..08a632c 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
@@ -20,16 +20,12 @@
package org.apache.ranger.biz;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -41,33 +37,27 @@ import org.apache.ranger.entity.XXDBBase;
import org.apache.ranger.entity.XXResourceDef;
import org.apache.ranger.entity.XXService;
import org.apache.ranger.entity.XXServiceDef;
-import org.apache.ranger.entity.XXTag;
import org.apache.ranger.entity.XXTagAttribute;
import org.apache.ranger.entity.XXTagAttributeDef;
-import org.apache.ranger.entity.XXTagResourceMap;
-import org.apache.ranger.entity.XXTaggedResource;
-import org.apache.ranger.entity.XXTaggedResourceValue;
-import org.apache.ranger.entity.XXTaggedResourceValueMap;
+import org.apache.ranger.entity.XXServiceResourceElement;
+import org.apache.ranger.entity.XXServiceResourceElementValue;
import org.apache.ranger.plugin.model.*;
import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
import org.apache.ranger.plugin.model.RangerTagDef.RangerTagAttributeDef;
-import org.apache.ranger.plugin.model.RangerTag;
-import org.apache.ranger.plugin.policyresourcematcher.RangerDefaultPolicyResourceMatcher;
import org.apache.ranger.plugin.store.AbstractTagStore;
import org.apache.ranger.plugin.store.PList;
-import org.apache.ranger.plugin.store.ServiceStore;
-import org.apache.ranger.plugin.store.TagStore;
import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.plugin.util.ServiceTags;
import org.apache.ranger.service.RangerAuditFields;
import org.apache.ranger.service.RangerTagDefService;
+import org.apache.ranger.service.RangerTagResourceMapService;
import org.apache.ranger.service.RangerTagService;
-import org.apache.ranger.service.RangerTaggedResourceService;
+import org.apache.ranger.service.RangerServiceResourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
-public class TagDBStore implements TagStore {
+public class TagDBStore extends AbstractTagStore {
private static final Log LOG = LogFactory.getLog(TagDBStore.class);
@Autowired
@@ -77,7 +67,10 @@ public class TagDBStore implements TagStore {
RangerTagService rangerTagService;
@Autowired
- RangerTaggedResourceService rangerTaggedResourceService;
+ RangerServiceResourceService rangerServiceResourceService;
+
+ @Autowired
+ RangerTagResourceMapService rangerTagResourceMapService;
@Autowired
RangerDaoManager daoManager;
@@ -91,41 +84,25 @@ public class TagDBStore implements TagStore {
@Autowired
GUIDUtil guidUtil;
- @Autowired
- ServiceDBStore serviceDBStore;
-
@Override
public void init() throws Exception {
-
- }
-
- @Override
- public void setServiceStore(ServiceStore svcStore) {
-
+ super.init();
}
@Override
public RangerTagDef createTagDef(RangerTagDef tagDef) throws Exception {
-
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagDBStore.createTagDef(" + tagDef + ")");
}
- RangerTagDef ret;
-
- try {
- ret = rangerTagDefService.create(tagDef);
-
- createTagAttributeDefs(ret.getId(), tagDef.getAttributeDefs());
+ RangerTagDef ret = rangerTagDefService.create(tagDef);
- ret = rangerTagDefService.read(ret.getId());
+ createTagAttributeDefs(ret.getId(), tagDef.getAttributeDefs());
- } catch (Exception e) {
- throw errorUtil.createRESTException("failed to save tag-def [" + tagDef.getName() + "]", MessageEnums.ERROR_CREATING_OBJECT);
- }
+ ret = rangerTagDefService.read(ret.getId());
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagDBStore.createTagDef(" + tagDef + ")");
+ LOG.debug("<== TagDBStore.createTagDef(" + tagDef + "): id=" + (ret == null ? null : ret.getId()));
}
return ret;
@@ -133,627 +110,925 @@ public class TagDBStore implements TagStore {
@Override
public RangerTagDef updateTagDef(RangerTagDef tagDef) throws Exception {
-
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagDBStore.updateTagDef(" + tagDef + ")");
}
RangerTagDef existing = rangerTagDefService.read(tagDef.getId());
- RangerTagDef ret = null;
+
if (existing == null) {
- throw errorUtil.createRESTException("failed to update tag-def [" + tagDef.getName() + "], Reason: No TagDef found with id: [" + tagDef.getId() + "]",
- MessageEnums.DATA_NOT_UPDATABLE);
+ throw errorUtil.createRESTException("failed to update tag-def [" + tagDef.getName() + "], Reason: No TagDef found with id: [" + tagDef.getId() + "]", MessageEnums.DATA_NOT_UPDATABLE);
}
if (StringUtils.isEmpty(tagDef.getCreatedBy())) {
tagDef.setCreatedBy(existing.getCreatedBy());
}
+
if (tagDef.getCreateTime() == null) {
tagDef.setCreateTime(existing.getCreateTime());
}
+
if (StringUtils.isEmpty(tagDef.getGuid())) {
tagDef.setGuid(existing.getGuid());
}
- ret = rangerTagDefService.update(tagDef);
+ RangerTagDef ret = rangerTagDefService.update(tagDef);
+ // TODO: delete attributes might fail; so instead of delete+create, following should be updated to deal with only attributes that changed
deleteTagAttributeDefs(ret.getId());
-
createTagAttributeDefs(ret.getId(), tagDef.getAttributeDefs());
- return rangerTagDefService.read(ret.getId());
- }
-
- private List<XXTagAttributeDef> createTagAttributeDefs(Long tagDefId, List<RangerTagAttributeDef> tagAttrDefList) {
-
- if (tagDefId == null) {
- throw errorUtil.createRESTException("TagDBStore.createTagAttributeDefs(): Error creating tag-attr def. tagDefId can not be null.", MessageEnums.ERROR_CREATING_OBJECT);
- }
-
- if (CollectionUtils.isEmpty(tagAttrDefList)) {
- return null;
- }
-
- List<XXTagAttributeDef> xTagAttrDefList = new ArrayList<XXTagAttributeDef>();
- for (RangerTagDef.RangerTagAttributeDef attrDef : tagAttrDefList) {
- XXTagAttributeDef xAttrDef = new XXTagAttributeDef();
-
- xAttrDef.setGuid(guidUtil.genGUID());
- xAttrDef.setTagDefId(tagDefId);
- xAttrDef.setName(attrDef.getName());
- xAttrDef.setType(attrDef.getType());
- xAttrDef = (XXTagAttributeDef) rangerAuditFields.populateAuditFieldsForCreate(xAttrDef);
+ ret = rangerTagDefService.read(ret.getId());
- xAttrDef = daoManager.getXXTagAttributeDef().create(xAttrDef);
-
- xTagAttrDefList.add(xAttrDef);
- }
- return xTagAttrDefList;
- }
-
- private void deleteTagAttributeDefs(Long tagDefId) {
- if (tagDefId == null) {
- return;
- }
- List<XXTagAttributeDef> tagAttrDefList = daoManager.getXXTagAttributeDef().findByTagDefId(tagDefId);
-
- if (CollectionUtils.isEmpty(tagAttrDefList)) {
- return;
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.updateTagDef(" + tagDef + "): " + ret);
}
- for (XXTagAttributeDef xAttrDef : tagAttrDefList) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Deleting tag-attribute def [" + xAttrDef.getName() + "]");
- }
- daoManager.getXXTagAttributeDef().remove(xAttrDef);
- }
+ return ret;
}
@Override
public void deleteTagDef(String name) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.deleteTagDef(" + name + ")");
+ }
if (StringUtils.isNotBlank(name)) {
- return;
- }
+ List<RangerTagDef> tagDefs = getTagDefsByName(name);
- List<RangerTagDef> ret;
+ if(CollectionUtils.isNotEmpty(tagDefs)) {
+ for (RangerTagDef tagDef : tagDefs) {
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("Deleting tag-def [name=" + name + "; id=" + tagDef.getId() + "]");
+ }
- if (LOG.isDebugEnabled()) {
- LOG.debug("Deleting all tag-defs with name [" + name + "]");
+ rangerTagDefService.delete(tagDef);
+ }
+ }
}
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name);
- ret = getTagDefs(filter);
-
- for (RangerTagDef tagDef : ret) {
- LOG.info("Deleting tag-def with name [" + name + "]");
- rangerTagDefService.delete(tagDef);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.deleteTagDef(" + name + ")");
}
}
@Override
public void deleteTagDefById(Long id) throws Exception {
if (LOG.isDebugEnabled()) {
- LOG.debug("Deleting tag-def [" + id + "]");
+ LOG.debug("==> TagDBStore.deleteTagDefById(" + id + ")");
}
- RangerTagDef tagDef = rangerTagDefService.read(id);
-
- rangerTagDefService.delete(tagDef);
- }
+ if(id != null) {
+ RangerTagDef tagDef = rangerTagDefService.read(id);
- @Override
- public List<RangerTagDef> getTagDef(String name) throws Exception {
+ if(tagDef != null) {
+ rangerTagDefService.delete(tagDef);
+ }
+ }
- List<RangerTagDef> ret;
- if (StringUtils.isNotBlank(name)) {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name);
- ret = getTagDefs(filter);
- } else {
- ret = null;
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.deleteTagDefById(" + id + ")");
}
- return ret;
}
@Override
public RangerTagDef getTagDefById(Long id) throws Exception {
- return rangerTagDefService.read(id);
- }
-
- @Override
- public List<RangerTagDef> getTagDefs(SearchFilter filter) throws Exception {
- return getPaginatedTagDefs(filter).getList();
- }
-
- @Override
- public PList<RangerTagDef> getPaginatedTagDefs(SearchFilter filter) throws Exception {
- return rangerTagDefService.searchRangerTagDefs(filter);
- }
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagDefById(" + id + ")");
+ }
- /*
- private XXTag createTagAttributes(RangerTag tag) {
- XXTag xTag = new XXTag();
+ RangerTagDef ret = rangerTagDefService.read(id);
- xTag.setExternalId(tag.getExternalId());
- xTag.setName(tag.getName());
- xTag.setGuid(guidUtil.genGUID());
- xTag = (XXTag) rangerAuditFields.populateAuditFieldsForCreate(xTag);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagDefById(" + id + "): " + ret);
+ }
- xTag = daoManager.getXXTag().create(xTag);
+ return ret;
+ }
- for (Entry<String, String> attr : tag.getAttributeValues().entrySet()) {
- XXTagAttribute xTagAttr = new XXTagAttribute();
+ @Override
+ public RangerTagDef getTagDefByGuid(String guid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagDefByGuid(" + guid + ")");
+ }
- xTagAttr.setTagId(xTag.getId());
- xTagAttr.setName(attr.getKey());
- xTagAttr.setValue(attr.getValue());
- xTagAttr.setGuid(guidUtil.genGUID());
- xTagAttr = (XXTagAttribute) rangerAuditFields.populateAuditFieldsForCreate(xTagAttr);
+ RangerTagDef ret = rangerTagDefService.getTagDefByGuid(guid);
- xTagAttr = daoManager.getXXTagAttribute().create(xTagAttr);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagDefByGuid(" + guid + "): " + ret);
}
- return xTag;
+ return ret;
}
- private void deleteTagAttributes(Long tagId) {
- List<XXTagAttribute> tagAttrList = daoManager.getXXTagAttribute().findByTagId(tagId);
- for (XXTagAttribute tagAttr : tagAttrList) {
- daoManager.getXXTagAttribute().remove(tagAttr);
+ @Override
+ public List<RangerTagDef> getTagDefsByName(String name) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagDefsByName(" + name + ")");
}
- }
-
- private void createResourceSpecForResource(RangerServiceResource resource) {
- String serviceName = resource.getServiceName();
+ List<RangerTagDef> ret = null;
- XXService xService = daoManager.getXXService().findByName(serviceName);
- if (xService == null) {
- throw errorUtil.createRESTException("No Service found with name: " + serviceName, MessageEnums.ERROR_CREATING_OBJECT);
+ if (StringUtils.isNotBlank(name)) {
+ ret = rangerTagDefService.getTagDefsByName(name);
}
- XXServiceDef xServiceDef = daoManager.getXXServiceDef().getById(xService.getType());
- if (xServiceDef == null) {
- throw errorUtil.createRESTException("No Service-Def found with ID: " + xService.getType(), MessageEnums.ERROR_CREATING_OBJECT);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagDefsByName(" + name + "): count=" + (ret == null ? 0 : ret.size()));
}
- Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = resource.getResourceSpec();
-
- for (Entry<String, RangerPolicyResource> resSpec : resourceSpec.entrySet()) {
- XXResourceDef xResDef = daoManager.getXXResourceDef().findByNameAndServiceDefId(resSpec.getKey(), xServiceDef.getId());
-
- if (xResDef == null) {
- LOG.error("TagDBStore.createResource: ResourceType is not valid [" + resSpec.getKey() + "]");
- throw errorUtil.createRESTException("Resource Type is not valid [" + resSpec.getKey() + "]", MessageEnums.DATA_NOT_FOUND);
- }
-
- RangerPolicyResource policyRes = resSpec.getValue();
-
- XXTaggedResourceValue taggedResValue = new XXTaggedResourceValue();
- taggedResValue.setIsExcludes(policyRes.getIsExcludes());
- taggedResValue.setIsRecursive(policyRes.getIsRecursive());
- taggedResValue.setResDefId(xResDef.getId());
- taggedResValue.setTaggedResourceId(resource.getId());
- taggedResValue.setGuid(guidUtil.genGUID());
-
- taggedResValue = (XXTaggedResourceValue) rangerAuditFields.populateAuditFieldsForCreate(taggedResValue);
-
- taggedResValue = daoManager.getXXTaggedResourceValue().create(taggedResValue);
-
- int sortOrder = 1;
- for (String resVal : policyRes.getValues()) {
- XXTaggedResourceValueMap taggedResValueMap = new XXTaggedResourceValueMap();
- taggedResValueMap.setResValueId(taggedResValue.getId());
- taggedResValueMap.setValue(resVal);
- taggedResValueMap.setSortOrder(sortOrder);
- taggedResValueMap.setGuid(guidUtil.genGUID());
- taggedResValueMap = (XXTaggedResourceValueMap) rangerAuditFields.populateAuditFieldsForCreate(taggedResValueMap);
-
- taggedResValueMap = daoManager.getXXTaggedResourceValueMap().create(taggedResValueMap);
- sortOrder++;
- }
- }
+ return ret;
}
- private void deleteResourceValue(Long resourceId) {
- List<XXTaggedResourceValue> taggedResValueList = daoManager.getXXTaggedResourceValue().findByTaggedResId(resourceId);
- for (XXTaggedResourceValue taggedResValue : taggedResValueList) {
- List<XXTaggedResourceValueMap> taggedResValueMapList = daoManager.getXXTaggedResourceValueMap().findByResValueId(taggedResValue.getId());
- for (XXTaggedResourceValueMap taggedResValueMap : taggedResValueMapList) {
- daoManager.getXXTaggedResourceValueMap().remove(taggedResValueMap);
- }
- daoManager.getXXTaggedResourceValue().remove(taggedResValue);
+ @Override
+ public List<RangerTagDef> getTagDefs(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagDefs(" + filter + ")");
}
- }
- private void updateResourceSpecForResource(RangerServiceResource updResource) {
+ List<RangerTagDef> ret = getPaginatedTagDefs(filter).getList();
- if (updResource != null) {
- deleteResourceValue(updResource.getId());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagDefs(" + filter + "): " + ret);
}
- createResourceSpecForResource(updResource);
+ return ret;
}
- */
@Override
- public RangerTag createTag(RangerTag tag) throws Exception
- {
- throw new Exception("Not implemented");
-
- /*
+ public PList<RangerTagDef> getPaginatedTagDefs(SearchFilter filter) throws Exception {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> TagDBStore.createTag(" + tag + ")");
+ LOG.debug("==> TagDBStore.getPaginatedTagDefs(" + filter + ")");
}
- throw new Exception("Not implemented");
-
+ PList<RangerTagDef> ret = rangerTagDefService.searchRangerTagDefs(filter);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getPaginatedTagDefs(" + filter + "): " + ret);
+ }
- RangerTag ret = null;
+ return ret;
+ }
- try {
+ @Override
+ public RangerTag createTag(RangerTag tag) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.createTag(" + tag + ")");
+ }
- ret = rangerTagService.getPopulatedViewObject(createTagAttributes(tag));
+ RangerTag ret = rangerTagService.create(tag);
- } catch (Exception e) {
- throw errorUtil.createRESTException("failed to save tag [" + tag.getName() + "]", MessageEnums.ERROR_CREATING_OBJECT);
- }
+ createTagAttributes(ret.getId(), tag.getAttributeValues());
+ ret = rangerTagService.read(ret.getId());
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagDBStore.createTag(" + tag + ")");
+ LOG.debug("<== TagDBStore.createTag(" + tag + "): " + ret);
}
return ret;
- */
}
-
+
@Override
- public RangerTag updateTag(RangerTag tag) throws Exception
- {
-
- throw new Exception("Not implemented");
-
- /*
+ public RangerTag updateTag(RangerTag tag) throws Exception {
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagDBStore.updateTag(" + tag + ")");
}
- throw new Exception("Not implemented");
-
- RangerTag ret = null;
-
-
RangerTag existing = rangerTagService.read(tag.getId());
if (existing == null) {
- throw errorUtil.createRESTException("failed to update tag [" + tag.getName() + "], Reason: No Tag found with id: [" + tag.getId() + "]",
- MessageEnums.DATA_NOT_UPDATABLE);
+ throw errorUtil.createRESTException("failed to update tag [" + tag.getName() + "], Reason: No Tag found with id: [" + tag.getId() + "]", MessageEnums.DATA_NOT_UPDATABLE);
}
if (StringUtils.isEmpty(tag.getCreatedBy())) {
tag.setCreatedBy(existing.getCreatedBy());
}
+
if (tag.getCreateTime() == null) {
tag.setCreateTime(existing.getCreateTime());
}
+
if (StringUtils.isEmpty(tag.getGuid())) {
tag.setGuid(existing.getGuid());
}
- deleteTagAttributes(existing.getId());
+ RangerTag ret = rangerTagService.update(tag);
- createTagAttributes(tag);
-
- ret = rangerTagService.update(tag);
+ deleteTagAttributes(existing.getId());
+ createTagAttributes(existing.getId(), tag.getAttributeValues());
ret = rangerTagService.read(ret.getId());
-
-
if (LOG.isDebugEnabled()) {
LOG.debug("<== TagDBStore.updateTag(" + tag + ") : " + ret);
}
return ret;
- */
}
@Override
public void deleteTagById(Long id) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.deleteTagById(" + id + ")");
+ }
- throw new Exception("Not implemented");
-
- /*
RangerTag tag = rangerTagService.read(id);
+
deleteTagAttributes(id);
+
rangerTagService.delete(tag);
- */
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.deleteTagById(" + id + ")");
+ }
}
@Override
public RangerTag getTagById(Long id) throws Exception {
- throw new Exception("Not implemented");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagById(" + id + ")");
+ }
- /*
- RangerTag ret = null;
+ RangerTag ret = rangerTagService.read(id);
- ret = rangerTagService.read(id);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagById(" + id + "): " + ret);
+ }
+
+ return ret;
+ }
+
+ @Override
+ public RangerTag getTagByGuid(String guid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagByGuid(" + guid + ")");
+ }
+
+ RangerTag ret = rangerTagService.getTagByGuid(guid);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagByGuid(" + guid + "): " + ret);
+ }
return ret;
- */
}
@Override
public List<RangerTag> getTagsByName(String name) throws Exception {
- throw new Exception("Not implemented");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagsByName(" + name + ")");
+ }
- /*
List<RangerTag> ret = null;
if (StringUtils.isNotBlank(name)) {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name);
- ret = getTags(filter);
- } else {
- ret = null;
+ ret = rangerTagService.getTagsByName(name);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagsByName(" + name + "): count=" + (ret == null ? 0 : ret.size()));
}
return ret;
- */
}
@Override
- public List<RangerTag> getTagsByExternalId(String externalId) throws Exception {
- throw new Exception("Not implemented");
+ public List<RangerTag> getTagsForResourceId(Long resourceId) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagsForResourceId(" + resourceId + ")");
+ }
- /*
List<RangerTag> ret = null;
- if (StringUtils.isNotBlank(externalId)) {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_EXTERNAL_ID, externalId);
- ret = getTags(filter);
- } else {
- ret = null;
+ if (resourceId != null) {
+ ret = rangerTagService.getTagsForResourceId(resourceId);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagsForResourceId(" + resourceId + "): count=" + (ret == null ? 0 : ret.size()));
}
return ret;
- */
}
@Override
- public List<RangerTag> getTags(SearchFilter filter) throws Exception {
- throw new Exception("Not implemented");
+ public List<RangerTag> getTagsForResourceGuid(String resourceGuid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagsForResourceGuid(" + resourceGuid + ")");
+ }
- /*
List<RangerTag> ret = null;
- ret = rangerTagService.searchRangerTags(filter).getList();
+ if (resourceGuid != null) {
+ ret = rangerTagService.getTagsForResourceGuid(resourceGuid);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagsForResourceGuid(" + resourceGuid + "): count=" + (ret == null ? 0 : ret.size()));
+ }
return ret;
- */
}
-
@Override
- public RangerServiceResource createServiceResource(RangerServiceResource resource) throws Exception {
- throw new Exception("Not implemented");
+ public List<RangerTag> getTags(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTags(" + filter + ")");
+ }
+
+ List<RangerTag> ret = rangerTagService.searchRangerTags(filter).getList();
- /*
if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTags(" + filter + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
+ }
- LOG.debug("==> TagDBStore.createResource(" + resource + ")");
+ @Override
+ public PList<RangerTag> getPaginatedTags(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getPaginatedTags(" + filter + ")");
}
- throw new Exception("Not implemented");
- RangerServiceResource ret = null;
+ PList<RangerTag> ret = rangerTagService.searchRangerTags(filter);
- try {
- ret = rangerTaggedResourceService.create(resource);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getPaginatedTags(" + filter + "): count=" + (ret == null ? 0 : ret.getPageSize()));
+ }
- ret = rangerTaggedResourceService.read(ret.getId());
+ return ret;
+ }
- createResourceSpecForResource(ret);
- } catch (Exception e) {
- throw errorUtil.createRESTException("failed to save resource [" + resource.getId() + "]", MessageEnums.ERROR_CREATING_OBJECT);
+ @Override
+ public RangerServiceResource createServiceResource(RangerServiceResource resource) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.createServiceResource(" + resource + ")");
}
+ // TODO: update resource signature
+ RangerServiceResource ret = rangerServiceResourceService.create(resource);
+
+ createResourceSpecForResource(ret.getId(), resource);
+
+ ret = rangerServiceResourceService.read(ret.getId());
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagDBStore.createResource(" + resource + ")");
+ LOG.debug("<== TagDBStore.createServiceResource(" + resource + ")");
}
return ret;
- */
}
@Override
public RangerServiceResource updateServiceResource(RangerServiceResource resource) throws Exception {
- throw new Exception("Not implemented");
-
- /*
-
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagDBStore.updateResource(" + resource + ")");
}
- throw new Exception("Not implemented");
-
- RangerServiceResource ret = null;
-
- RangerServiceResource existing = rangerTaggedResourceService.read(resource.getId());
-
+ RangerServiceResource existing = rangerServiceResourceService.read(resource.getId());
if (existing == null) {
- throw errorUtil.createRESTException("failed to update tag [" + resource.getId() + "], Reason: No resource found with id: [" + resource.getId() + "]",
- MessageEnums.DATA_NOT_UPDATABLE);
+ throw errorUtil.createRESTException("failed to update tag [" + resource.getId() + "], Reason: No resource found with id: [" + resource.getId() + "]", MessageEnums.DATA_NOT_UPDATABLE);
}
if (StringUtils.isEmpty(resource.getCreatedBy())) {
resource.setCreatedBy(existing.getCreatedBy());
}
+
if (resource.getCreateTime() == null) {
resource.setCreateTime(existing.getCreateTime());
}
+
if (StringUtils.isEmpty(resource.getGuid())) {
resource.setGuid(existing.getGuid());
}
- ret = rangerTaggedResourceService.update(resource);
-
- ret = rangerTaggedResourceService.read(ret.getId());
-
- updateResourceSpecForResource(ret);
+ // TODO: update resource signature
+ rangerServiceResourceService.update(resource);
+ deleteResourceSpecForResource(existing.getId());
+ createResourceSpecForResource(existing.getId(), resource);
+ RangerServiceResource ret = rangerServiceResourceService.read(existing.getId());
if (LOG.isDebugEnabled()) {
LOG.debug("<== TagDBStore.updateResource(" + resource + ") : " + ret);
}
return ret;
- */
}
@Override
public void deleteServiceResourceById(Long id) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.deleteServiceResourceById(" + id + ")");
+ }
- throw new Exception("Not implemented");
+ RangerServiceResource resource = getServiceResourceById(id);
- /*
- XXTaggedResource taggedRes = daoManager.getXXTaggedResource().getById(id);
- if (taggedRes == null) {
- throw errorUtil.createRESTException("No Resource exists with Id: " + id, MessageEnums.DATA_NOT_FOUND);
+ if(resource != null) {
+ deleteResourceSpecForResource(resource.getId());
+ rangerServiceResourceService.delete(resource);
}
- // Remove taggedResourceValue
- deleteResourceValue(id);
-
- // Remove taggedResource
- daoManager.getXXTaggedResource().remove(id);
- */
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.deleteServiceResourceById(" + id + ")");
+ }
}
@Override
- public List<RangerServiceResource> getServiceResourcesByExternalId(String externalId) throws Exception {
-
- throw new Exception("Not implemented");
-
- /*
- List<RangerServiceResource> ret = null;
+ public RangerServiceResource getServiceResourceById(Long id) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getServiceResourceById(" + id + ")");
+ }
+ RangerServiceResource ret = rangerServiceResourceService.read(id);
- if (StringUtils.isNotBlank(externalId)) {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_EXTERNAL_ID, externalId);
- ret = getServiceResources(filter);
- } else {
- ret = null;
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getServiceResourceById(" + id + "): " + ret);
}
return ret;
- */
}
@Override
- public RangerServiceResource getServiceResourceById(Long id) throws Exception {
+ public RangerServiceResource getServiceResourceByGuid(String guid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getServiceResourceByGuid(" + guid + ")");
+ }
- throw new Exception("Not implemented");
+ RangerServiceResource ret = rangerServiceResourceService.getServiceResourceByGuid(guid);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getServiceResourceByGuid(" + guid + "): " + ret);
+ }
- /*
- RangerServiceResource ret = null;
- ret = rangerTaggedResourceService.read(id);
return ret;
- */
}
+ @Override
+ public List<RangerServiceResource> getServiceResourcesByServiceAndResourceSpec(String serviceName, Map<String, RangerPolicyResource> resourceSpec) throws Exception {
+ // TODO Auto-generated method stub
+ return null;
+ }
@Override
- public List<RangerServiceResource> getServiceResourcesByServiceAndResourceSpec(String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec) throws Exception {
- throw new Exception("Not implemented");
+ public List<RangerServiceResource> getServiceResources(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getServiceResources(" + filter + ")");
+ }
+
+ List<RangerServiceResource> ret = rangerServiceResourceService.searchServiceResources(filter).getList();
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getServiceResources(" + filter + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
}
@Override
- public List<RangerServiceResource> getServiceResources(SearchFilter filter) throws Exception{
+ public PList<RangerServiceResource> getPaginatedServiceResources(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getPaginatedServiceResources(" + filter + ")");
+ }
- throw new Exception("Not implemented");
+ PList<RangerServiceResource> ret = rangerServiceResourceService.searchServiceResources(filter);
- /*
- List<RangerServiceResource> ret = null;
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getPaginatedServiceResources(" + filter + "): count=" + (ret == null ? 0 : ret.getPageSize()));
+ }
- ret = rangerTaggedResourceService.searchRangerTaggedResources(filter).getList();
return ret;
- */
}
+
@Override
public RangerTagResourceMap createTagResourceMap(RangerTagResourceMap tagResourceMap) throws Exception {
- throw new Exception("Not implemented");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.createTagResourceMap(" + tagResourceMap + ")");
+ }
+
+ RangerTagResourceMap ret = rangerTagResourceMapService.create(tagResourceMap);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.createTagResourceMap(" + tagResourceMap + "): " + ret);
+ }
+
+ return ret;
}
@Override
public void deleteTagResourceMapById(Long id) throws Exception {
- throw new Exception("Not implemented");
- }
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.deleteTagResourceMapById(" + id + ")");
+ }
- @Override
- public List<RangerTagResourceMap> getTagResourceMap(String externalResourceId, String externalTagId) throws Exception {
- throw new Exception("Not implemented");
+ RangerTagResourceMap tagResourceMap = rangerTagResourceMapService.read(id);
+
+ rangerTagResourceMapService.delete(tagResourceMap);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.deleteTagResourceMapById(" + id + ")");
+ }
}
@Override
public RangerTagResourceMap getTagResourceMapById(Long id) throws Exception {
- throw new Exception("Not implemented");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagResourceMapById(" + id + ")");
+ }
+
+ RangerTagResourceMap ret = rangerTagResourceMapService.read(id);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagResourceMapById(" + id + ")");
+ }
+
+ return ret;
}
+ @Override
+ public List<RangerTagResourceMap> getTagResourceMapsForTagId(Long tagId) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagResourceMapsForTagId(" + tagId + ")");
+ }
+
+ List<RangerTagResourceMap> ret = rangerTagResourceMapService.getByTagId(tagId);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagResourceMapsForTagId(" + tagId + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
+ }
@Override
- public List<RangerTagResourceMap> getTagResourceMaps(SearchFilter filter) throws Exception {
- throw new Exception("Not implemented");
+ public List<RangerTagResourceMap> getTagResourceMapsForTagGuid(String tagGuid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagResourceMapsForTagGuid(" + tagGuid + ")");
+ }
+
+ List<RangerTagResourceMap> ret = rangerTagResourceMapService.getByTagGuid(tagGuid);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagResourceMapsForTagGuid(" + tagGuid + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
}
@Override
- public ServiceTags getServiceTagsIfUpdated(String serviceName, Long lastKnownVersion) throws Exception {
- throw new Exception("Not implemented");
+ public List<RangerTagResourceMap> getTagResourceMapsForResourceId(Long resourceId) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagResourceMapsForResourceId(" + resourceId + ")");
+ }
+
+ List<RangerTagResourceMap> ret = rangerTagResourceMapService.getByResourceId(resourceId);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagResourceMapsForResourceId(" + resourceId + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
}
@Override
- public PList<RangerTagResourceMap> getPaginatedTagResourceMaps(SearchFilter filter) throws Exception {
- throw new Exception("Not implemented");
+ public List<RangerTagResourceMap> getTagResourceMapsForResourceGuid(String resourceGuid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagResourceMapsForResourceGuid(" + resourceGuid + ")");
+ }
+
+ List<RangerTagResourceMap> ret = rangerTagResourceMapService.getByResourceGuid(resourceGuid);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagResourceMapsForResourceGuid(" + resourceGuid + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
}
@Override
- public List<String> getTags(String serviceName) throws Exception {
- throw new Exception("Not implemented");
+ public RangerTagResourceMap getTagResourceMapForTagAndResourceId(Long tagId, Long resourceId) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagResourceMapsForTagAndResourceId(" + tagId + ", " + resourceId + ")");
+ }
+
+ RangerTagResourceMap ret = rangerTagResourceMapService.getByTagAndResourceId(tagId, resourceId);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagResourceMapsForTagAndResourceId(" + tagId + ", " + resourceId + "): " + ret);
+ }
+
+ return ret;
}
@Override
- public List<String> lookupTags(String serviceName, String tagNamePattern) throws Exception {
- throw new Exception("Not implemented");
+ public RangerTagResourceMap getTagResourceMapForTagAndResourceGuid(String tagGuid, String resourceGuid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagResourceMapForTagAndResourceGuid(" + tagGuid + ", " + resourceGuid + ")");
+ }
+
+ RangerTagResourceMap ret = rangerTagResourceMapService.getByTagAndResourceGuid(tagGuid, resourceGuid);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagResourceMapForTagAndResourceGuid(" + tagGuid + ", " + resourceGuid + "): " + ret);
+ }
+
+ return ret;
}
+
@Override
- public List<RangerTag> getTagsForServiceResource(Long resourceId) throws Exception {
- throw new Exception("Not implemented");
+ public List<RangerTagResourceMap> getTagResourceMaps(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getTagResourceMaps(" + filter+ ")");
+ }
+
+ List<RangerTagResourceMap> ret = rangerTagResourceMapService.searchRangerTaggedResources(filter).getList();
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getTagResourceMaps(" + filter + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
}
@Override
- public List<RangerTag> getTagsForServiceResourceByExtId(String resourceExtId) throws Exception {
- throw new Exception("Not implemented");
+ public PList<RangerTagResourceMap> getPaginatedTagResourceMaps(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getPaginatedTagResourceMaps(" + filter+ ")");
+ }
+
+ PList<RangerTagResourceMap> ret = rangerTagResourceMapService.searchRangerTaggedResources(filter);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getPaginatedTagResourceMaps(" + filter + "): count=" + (ret == null ? 0 : ret.getPageSize()));
+ }
+
+ return ret;
}
+
@Override
- public List<RangerTagDef> getTagDefsByExternalId(String extId) throws Exception {
- throw new Exception("Not implemented");
+ public ServiceTags getServiceTagsIfUpdated(String serviceName, Long lastKnownVersion) throws Exception {
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.getServiceTagsIfUpdated(" + serviceName + ", " + lastKnownVersion + ")");
+ }
+
+ ServiceTags ret = null;
+
+ XXService xxService = daoManager.getXXService().findByName(serviceName);
+
+ if(xxService == null) {
+ throw new Exception("service does not exist. name=" + serviceName);
+ }
+
+ if(lastKnownVersion == null || xxService.getTagVersion() == null || !lastKnownVersion.equals(xxService.getTagVersion())) {
+ RangerServiceDef serviceDef = svcStore.getServiceDef(xxService.getType());
+
+ if(serviceDef == null) {
+ throw new Exception("service-def does not exist. id=" + xxService.getType());
+ }
+
+ List<RangerTagDef> tagDefs = rangerTagDefService.getTagDefsByServiceId(xxService.getId());
+ List<RangerTag> tags = rangerTagService.getTagsByServiceId(xxService.getId());
+ List<RangerServiceResource> resources = rangerServiceResourceService.getTaggedResourcesInServiceId(xxService.getId());
+ List<RangerTagResourceMap> tagResourceMaps = rangerTagResourceMapService.getTagResourceMapsByServiceId(xxService.getId());
+
+ Map<Long, RangerTagDef> tagDefMap = new HashMap<Long, RangerTagDef>();
+ Map<Long, RangerTag> tagMap = new HashMap<Long, RangerTag>();
+ Map<Long, List<Long>> resourceToTagIds = new HashMap<Long, List<Long>>();
+
+ if(CollectionUtils.isNotEmpty(tagDefs)) {
+ for(RangerTagDef tagDef : tagDefs) {
+ tagDefMap.put(tagDef.getId(), tagDef);
+ }
+ }
+
+ if(CollectionUtils.isNotEmpty(tags)) {
+ for(RangerTag tag : tags) {
+ tagMap.put(tag.getId(), tag);
+ }
+ }
+
+ if(CollectionUtils.isNotEmpty(tagResourceMaps)) {
+ Long resourceId = null;
+ List<Long> tagIds = null;
+
+ for(RangerTagResourceMap tagResourceMap : tagResourceMaps) {
+ if(! tagResourceMap.getResourceId().equals(resourceId)) {
+ if(resourceId != null) {
+ resourceToTagIds.put(resourceId, tagIds);
+ }
+
+ resourceId = tagResourceMap.getResourceId();
+ tagIds = new ArrayList<Long>();
+ }
+
+ tagIds.add(tagResourceMap.getTagId());
+ }
+
+ if(resourceId != null) {
+ resourceToTagIds.put(resourceId, tagIds);
+ }
+ }
+
+ ret = new ServiceTags();
+ ret.setServiceName(xxService.getName());
+ ret.setTagVersion(xxService.getTagVersion());
+ ret.setTagUpdateTime(xxService.getTagUpdateTime());
+ ret.setTagDefinitions(tagDefMap);
+ ret.setTags(tagMap);
+ ret.setServiceResources(resources);
+ ret.setResourceToTagIds(resourceToTagIds);
+ }
+
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.getServiceTagsIfUpdated(" + serviceName + ", " + lastKnownVersion + ")");
+ }
+
+ return ret;
}
@Override
- public List<RangerTagResourceMap> getTagResourceMapsByTagId(Long tagId) throws Exception {
+ public List<String> getTags(String serviceName) throws Exception {
throw new Exception("Not implemented");
}
@Override
- public List<RangerTagResourceMap> getTagResourceMapsByResourceId(Long resourceId) throws Exception {
+ public List<String> lookupTags(String serviceName, String tagNamePattern) throws Exception {
throw new Exception("Not implemented");
}
+
+ private List<XXTagAttributeDef> createTagAttributeDefs(Long tagDefId, List<RangerTagAttributeDef> tagAttrDefList) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.createTagAttributeDefs(" + tagDefId + ", attributeDefCount=" + (tagAttrDefList == null ? 0 : tagAttrDefList.size()) + ")");
+ }
+
+ if (tagDefId == null) {
+ throw errorUtil.createRESTException("TagDBStore.createTagAttributeDefs(): Error creating tag-attr def. tagDefId can not be null.", MessageEnums.ERROR_CREATING_OBJECT);
+ }
+
+ List<XXTagAttributeDef> ret = new ArrayList<XXTagAttributeDef>();
+
+ if (CollectionUtils.isNotEmpty(tagAttrDefList)) {
+ for (RangerTagDef.RangerTagAttributeDef attrDef : tagAttrDefList) {
+ XXTagAttributeDef xAttrDef = new XXTagAttributeDef();
+
+ xAttrDef.setGuid(guidUtil.genGUID());
+ xAttrDef.setTagDefId(tagDefId);
+ xAttrDef.setName(attrDef.getName());
+ xAttrDef.setType(attrDef.getType());
+ xAttrDef = (XXTagAttributeDef) rangerAuditFields.populateAuditFieldsForCreate(xAttrDef);
+
+ xAttrDef = daoManager.getXXTagAttributeDef().create(xAttrDef);
+
+ ret.add(xAttrDef);
+ }
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.createTagAttributeDefs(" + tagDefId + ", attributeDefCount=" + (tagAttrDefList == null ? 0 : tagAttrDefList.size()) + "): retCount=" + ret.size());
+ }
+
+ return ret;
+ }
+
+ private void deleteTagAttributeDefs(Long tagDefId) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.deleteTagAttributeDefs(" + tagDefId + ")");
+ }
+
+ if (tagDefId != null) {
+ List<XXTagAttributeDef> tagAttrDefList = daoManager.getXXTagAttributeDef().findByTagDefId(tagDefId);
+
+ if (CollectionUtils.isNotEmpty(tagAttrDefList)) {
+ for (XXTagAttributeDef xAttrDef : tagAttrDefList) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Deleting tag-attribute def [name=" + xAttrDef.getName() + "; id=" + xAttrDef.getId() + "]");
+ }
+ daoManager.getXXTagAttributeDef().remove(xAttrDef);
+ }
+ }
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.deleteTagAttributeDefs(" + tagDefId + ")");
+ }
+ }
+
+ private List<XXTagAttribute> createTagAttributes(Long tagId, Map<String, String> attributeValues) {
+ List<XXTagAttribute> ret = new ArrayList<XXTagAttribute>();
+
+ if(MapUtils.isNotEmpty(attributeValues)) {
+ for (Map.Entry<String, String> attr : attributeValues.entrySet()) {
+ XXTagAttribute xTagAttr = new XXTagAttribute();
+
+ xTagAttr.setTagId(tagId);
+ xTagAttr.setName(attr.getKey());
+ xTagAttr.setValue(attr.getValue());
+ xTagAttr.setGuid(guidUtil.genGUID());
+ xTagAttr = (XXTagAttribute) rangerAuditFields.populateAuditFieldsForCreate(xTagAttr);
+
+ xTagAttr = daoManager.getXXTagAttribute().create(xTagAttr);
+
+ ret.add(xTagAttr);
+ }
+ }
+
+ return ret;
+ }
+
+ private void deleteTagAttributes(Long tagId) {
+ List<XXTagAttribute> tagAttrList = daoManager.getXXTagAttribute().findByTagId(tagId);
+ for (XXTagAttribute tagAttr : tagAttrList) {
+ daoManager.getXXTagAttribute().remove(tagAttr);
+ }
+ }
+
+ private void deleteResourceSpecForResource(Long resourceId) {
+ List<XXServiceResourceElement> resElements = daoManager.getXXServiceResourceElement().findByResourceId(resourceId);
+
+ if(CollectionUtils.isNotEmpty(resElements)) {
+ for(XXServiceResourceElement resElement : resElements) {
+ List<XXServiceResourceElementValue> elementValues = daoManager.getXXServiceResourceElementValue().findByResValueId(resElement.getId());
+
+ if(CollectionUtils.isNotEmpty(elementValues)) {
+ for(XXServiceResourceElementValue elementValue : elementValues) {
+ daoManager.getXXServiceResourceElementValue().remove(elementValue.getId());
+ }
+ }
+
+ daoManager.getXXServiceResourceElement().remove(resElement.getId());
+ }
+ }
+ }
+
+ private void createResourceSpecForResource(Long resourceId, RangerServiceResource resource) {
+ String serviceName = resource.getServiceName();
+
+ XXService xService = daoManager.getXXService().findByName(serviceName);
+
+ if (xService == null) {
+ throw errorUtil.createRESTException("No Service found with name: " + serviceName, MessageEnums.ERROR_CREATING_OBJECT);
+ }
+
+ XXServiceDef xServiceDef = daoManager.getXXServiceDef().getById(xService.getType());
+
+ if (xServiceDef == null) {
+ throw errorUtil.createRESTException("No Service-Def found with ID: " + xService.getType(), MessageEnums.ERROR_CREATING_OBJECT);
+ }
+
+ Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = resource.getResourceSpec();
+
+ for (Map.Entry<String, RangerPolicyResource> resSpec : resourceSpec.entrySet()) {
+ XXResourceDef xResDef = daoManager.getXXResourceDef().findByNameAndServiceDefId(resSpec.getKey(), xServiceDef.getId());
+
+ if (xResDef == null) {
+ LOG.error("TagDBStore.createResource: ResourceType is not valid [" + resSpec.getKey() + "]");
+ throw errorUtil.createRESTException("Resource Type is not valid [" + resSpec.getKey() + "]", MessageEnums.DATA_NOT_FOUND);
+ }
+
+ RangerPolicyResource policyRes = resSpec.getValue();
+
+ XXServiceResourceElement resourceElement = new XXServiceResourceElement();
+ resourceElement.setIsExcludes(policyRes.getIsExcludes());
+ resourceElement.setIsRecursive(policyRes.getIsRecursive());
+ resourceElement.setResDefId(xResDef.getId());
+ resourceElement.setResourceId(resourceId);
+ resourceElement.setGuid(guidUtil.genGUID());
+
+ resourceElement = (XXServiceResourceElement) rangerAuditFields.populateAuditFieldsForCreate(resourceElement);
+
+ resourceElement = daoManager.getXXServiceResourceElement().create(resourceElement);
+
+ int sortOrder = 1;
+ for (String resVal : policyRes.getValues()) {
+ XXServiceResourceElementValue resourceElementValue = new XXServiceResourceElementValue();
+ resourceElementValue.setResElementId(resourceElement.getId());
+ resourceElementValue.setValue(resVal);
+ resourceElementValue.setSortOrder(sortOrder);
+ resourceElementValue.setGuid(guidUtil.genGUID());
+ resourceElementValue = (XXServiceResourceElementValue) rangerAuditFields.populateAuditFieldsForCreate(resourceElementValue);
+
+ resourceElementValue = daoManager.getXXServiceResourceElementValue().create(resourceElementValue);
+ sortOrder++;
+ }
+ }
+ }
+
+ private void deleteResourceValue(Long resourceId) {
+ List<XXServiceResourceElement> taggedResValueList = daoManager.getXXServiceResourceElement().findByResourceId(resourceId);
+ for (XXServiceResourceElement taggedResValue : taggedResValueList) {
+ List<XXServiceResourceElementValue> taggedResValueMapList = daoManager.getXXServiceResourceElementValue().findByResValueId(taggedResValue.getId());
+ for (XXServiceResourceElementValue taggedResValueMap : taggedResValueMapList) {
+ daoManager.getXXServiceResourceElementValue().remove(taggedResValueMap);
+ }
+ daoManager.getXXServiceResourceElement().remove(taggedResValue);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java b/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java
index 21facb0..488ba8f 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java
@@ -552,17 +552,17 @@ public class AppConstants extends RangerCommonEnums {
*/
public static final int CLASS_TYPE_XA_TAG_ATTR_DEF = 1042;
/**
- * Class type of XXTaggedResource
+ * Class type of XXServiceResource
*/
- public static final int CLASS_TYPE_XA_TAGGED_RESOURCE = 1043;
+ public static final int CLASS_TYPE_XA_SERVICE_RESOURCE = 1043;
/**
- * Class type of XXTaggedResourceValue
+ * Class type of XXServiceResourceElement
*/
- public static final int CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE = 1044;
+ public static final int CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT = 1044;
/**
- * Class type of XXTaggedResourceValueMap
+ * Class type of XXServiceResourceElementValue
*/
- public static final int CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE_MAP = 1045;
+ public static final int CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT_VALUE = 1045;
/**
* Class type of XXTag
*/
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java
index da01853..d9cf87a 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java
@@ -29,8 +29,6 @@ import org.apache.log4j.Logger;
import org.apache.ranger.common.AppConstants;
import org.apache.ranger.common.RESTErrorUtil;
import org.apache.ranger.common.db.BaseDao;
-import org.apache.ranger.entity.XXTagDef;
-import org.apache.ranger.entity.XXTaggedResource;
import org.springframework.beans.factory.annotation.Autowired;
@@ -170,14 +168,14 @@ public abstract class RangerDaoManagerBase {
if (classType == AppConstants.CLASS_TYPE_XA_TAG_ATTR_DEF) {
return getXXTagAttributeDef();
}
- if (classType == AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE) {
- return getXXTaggedResource();
+ if (classType == AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE) {
+ return getXXServiceResource();
}
- if (classType == AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE) {
- return getXXTaggedResourceValue();
+ if (classType == AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT) {
+ return getXXServiceResourceElement();
}
- if (classType == AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE_MAP) {
- return getXXTaggedResourceValueMap();
+ if (classType == AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT_VALUE) {
+ return getXXServiceResourceElementValue();
}
if (classType == AppConstants.CLASS_TYPE_XA_TAG) {
return getXXTag();
@@ -324,14 +322,14 @@ public abstract class RangerDaoManagerBase {
if (className.equals("XXTagAttributeDef")) {
return getXXTagAttributeDef();
}
- if (className.equals("XXTaggedResource")) {
- return getXXTaggedResource();
+ if (className.equals("XXServiceResource")) {
+ return getXXServiceResource();
}
- if (className.equals("XXTaggedResourceValue")) {
- return getXXTaggedResourceValue();
+ if (className.equals("XXServiceResourceElement")) {
+ return getXXServiceResourceElement();
}
- if (className.equals("XXTaggedResourceValueMap")) {
- return getXXTaggedResourceValueMap();
+ if (className.equals("XXServiceResourceElementValue")) {
+ return getXXServiceResourceElementValue();
}
if (className.equals("XXTag")) {
return getXXTag();
@@ -526,16 +524,16 @@ public abstract class RangerDaoManagerBase {
return new XXTagAttributeDefDao(this);
}
- public XXTaggedResourceDao getXXTaggedResource() {
- return new XXTaggedResourceDao(this);
+ public XXServiceResourceDao getXXServiceResource() {
+ return new XXServiceResourceDao(this);
}
- public XXTaggedResourceValueDao getXXTaggedResourceValue() {
- return new XXTaggedResourceValueDao(this);
+ public XXServiceResourceElementDao getXXServiceResourceElement() {
+ return new XXServiceResourceElementDao(this);
}
- public XXTaggedResourceValueMapDao getXXTaggedResourceValueMap() {
- return new XXTaggedResourceValueMapDao(this);
+ public XXServiceResourceElementValueDao getXXServiceResourceElementValue() {
+ return new XXServiceResourceElementValueDao(this);
}
public XXTagDao getXXTag() {
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java
new file mode 100644
index 0000000..63cdc6e
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.authorization.utils.StringUtil;
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXServiceResource;
+
+public class XXServiceResourceDao extends BaseDao<XXServiceResource> {
+
+ public XXServiceResourceDao(RangerDaoManagerBase daoManager) {
+ super(daoManager);
+ }
+
+ public XXServiceResource findByGuid(String guid) {
+ if (StringUtil.isEmpty(guid)) {
+ return null;
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXServiceResource.findByGuid", tClass)
+ .setParameter("guid", guid).getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
+
+ public List<XXServiceResource> findByServiceId(Long serviceId) {
+ if (serviceId == null) {
+ return new ArrayList<XXServiceResource>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXServiceResource.findByServiceId", tClass)
+ .setParameter("serviceId", serviceId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXServiceResource>();
+ }
+ }
+
+ public XXServiceResource findByServiceIdAndResourceSignature(Long serviceId, String resourceSignature) {
+ if (serviceId == null || StringUtil.isEmpty(resourceSignature)) {
+ return null;
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXServiceResource.findByServiceIdAndResourceSignature", tClass)
+ .setParameter("serviceId", serviceId)
+ .setParameter("resourceSignature", resourceSignature).getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
+
+ public List<XXServiceResource> findTaggedResourcesInServiceId(Long serviceId) {
+ if (serviceId == null) {
+ return new ArrayList<XXServiceResource>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXServiceResource.findTaggedResourcesInServiceId", tClass)
+ .setParameter("serviceId", serviceId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXServiceResource>();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementDao.java
new file mode 100644
index 0000000..8e2baab
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementDao.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXServiceResourceElement;
+
+public class XXServiceResourceElementDao extends BaseDao<XXServiceResourceElement> {
+
+ public XXServiceResourceElementDao(RangerDaoManagerBase daoManager) {
+ super(daoManager);
+ }
+
+ public List<XXServiceResourceElement> findByResourceId(Long resourceId) {
+ if (resourceId == null) {
+ return new ArrayList<XXServiceResourceElement>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXServiceResourceElement.findByResourceId", tClass)
+ .setParameter("resourceId", resourceId)
+ .getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXServiceResourceElement>();
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementValueDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementValueDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementValueDao.java
new file mode 100644
index 0000000..04942a7
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementValueDao.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXServiceResourceElementValue;
+
+public class XXServiceResourceElementValueDao extends BaseDao<XXServiceResourceElementValue> {
+
+ public XXServiceResourceElementValueDao(RangerDaoManagerBase daoManager) {
+ super(daoManager);
+ }
+
+ public List<XXServiceResourceElementValue> findByResValueId(Long resElementId) {
+ if (resElementId == null) {
+ return new ArrayList<XXServiceResourceElementValue>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXServiceResourceElementValue.findByResElementId", tClass)
+ .setParameter("resElementId", resElementId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXServiceResourceElementValue>();
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public List<String> findValuesByResElementId(Long resElementId) {
+ if (resElementId == null) {
+ return new ArrayList<String>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXServiceResourceElementValue.findValuesByResElementId")
+ .setParameter("resElementId", resElementId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<String>();
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java
index d8562d2..667238f 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java
@@ -20,10 +20,13 @@
package org.apache.ranger.db;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import javax.persistence.NoResultException;
+import org.apache.commons.lang.StringUtils;
+import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.common.db.BaseDao;
import org.apache.ranger.entity.XXTag;
@@ -33,13 +36,13 @@ public class XXTagDao extends BaseDao<XXTag> {
super(daoManager);
}
- public List<XXTag> findByTaggedResource(Long taggedResId) {
- if (taggedResId == null) {
+ public List<XXTag> findByResourceId(Long resourceId) {
+ if (resourceId == null) {
return new ArrayList<XXTag>();
}
try {
- return getEntityManager().createNamedQuery("XXTag.findByTaggedResource", tClass)
- .setParameter("taggedResId", taggedResId).getResultList();
+ return getEntityManager().createNamedQuery("XXTag.findByResourceId", tClass)
+ .setParameter("resourceId", resourceId).getResultList();
} catch (NoResultException e) {
return new ArrayList<XXTag>();
}
@@ -58,16 +61,67 @@ public class XXTagDao extends BaseDao<XXTag> {
}
}
- public List<XXTag> findTagsByExternalId(String externalId) {
- if (externalId == null) {
+ public XXTag findByGuid(String guid) {
+ if (StringUtil.isEmpty(guid)) {
+ return null;
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXTag.findByGuid", tClass)
+ .setParameter("guid", guid).getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
+
+ public List<XXTag> findByName(String name) {
+ if (StringUtils.isEmpty(name)) {
+ return new ArrayList<XXTag>();
+ }
+
+ try {
+ return getEntityManager().createNamedQuery("XXTag.findByName", tClass)
+ .setParameter("name", name).getResultList();
+ } catch (NoResultException e) {
return new ArrayList<XXTag>();
}
+ }
+
+ public List<XXTag> findForResourceId(Long resourceId) {
+ if (resourceId == null) {
+ return new ArrayList<XXTag>();
+ }
+
try {
- return getEntityManager().createNamedQuery("XXTag.findTagsByExternalId", tClass)
- .setParameter("externalId", externalId).getResultList();
+ return getEntityManager().createNamedQuery("XXTag.findByResourceId", tClass)
+ .setParameter("resourceId", resourceId).getResultList();
} catch (NoResultException e) {
return new ArrayList<XXTag>();
}
}
+ public List<XXTag> findForResourceGuid(String resourceGuid) {
+ if (StringUtils.isEmpty(resourceGuid)) {
+ return new ArrayList<XXTag>();
+ }
+
+ try {
+ return getEntityManager().createNamedQuery("XXTag.findByResourceGuid", tClass)
+ .setParameter("resourceGuid", resourceGuid).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXTag>();
+ }
+ }
+
+ public List<XXTag> findByServiceId(Long serviceId) {
+ if (serviceId == null) {
+ return new ArrayList<XXTag>();
+ }
+
+ try {
+ return getEntityManager().createNamedQuery("XXTag.findByServiceId", tClass)
+ .setParameter("serviceId", serviceId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXTag>();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java
index 971b589..f18fea8 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java
@@ -20,6 +20,7 @@
package org.apache.ranger.db;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import javax.persistence.NoResultException;
@@ -34,6 +35,19 @@ public class XXTagDefDao extends BaseDao<XXTagDef> {
super(daoManager);
}
+ public XXTagDef findByGuid(String guid) {
+ if (StringUtils.isEmpty(guid)) {
+ return null;
+ }
+
+ try {
+ return getEntityManager().createNamedQuery("XXTagDef.findByGuid", tClass)
+ .setParameter("guid", guid).getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
+
public List<XXTagDef> findByName(String name) {
if (StringUtils.isEmpty(name)) {
return new ArrayList<XXTagDef>();
@@ -47,4 +61,35 @@ public class XXTagDefDao extends BaseDao<XXTagDef> {
}
}
+ public List<XXTagDef> findByServiceId(Long serviceId) {
+ if (serviceId == null) {
+ return new ArrayList<XXTagDef>();
+ }
+
+ try {
+ return getEntityManager().createNamedQuery("XXTagDef.findByServiceId", tClass)
+ .setParameter("serviceId", serviceId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXTagDef>();
+ }
+ }
+
+ public void updateServiceForTagDefUpdate(Long tagDefId, Date updateTime) {
+ if (tagDefId == null) {
+ return;
+ }
+
+ if(updateTime == null) {
+ updateTime = new Date();
+ }
+
+ try {
+ getEntityManager().createNamedQuery("XXTagDef.updateTagVersionInService", tClass)
+ .setParameter("tagDefId", tagDefId)
+ .setParameter("tagUpdateTime", updateTime)
+ .executeUpdate();
+ } catch (NoResultException e) {
+ return;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java
index 57ac5e8..1db0cef 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java
@@ -20,10 +20,12 @@
package org.apache.ranger.db;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import javax.persistence.NoResultException;
+import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.common.db.BaseDao;
import org.apache.ranger.entity.XXTagResourceMap;
@@ -33,16 +35,108 @@ public class XXTagResourceMapDao extends BaseDao<XXTagResourceMap> {
super(daoManager);
}
- public List<XXTagResourceMap> findByTaggedResourceId(Long taggedResId) {
- if (taggedResId == null) {
+ public List<XXTagResourceMap> findByResourceId(Long resourceId) {
+ if (resourceId == null) {
return new ArrayList<XXTagResourceMap>();
}
try {
- return getEntityManager().createNamedQuery("XXTagResourceMap.findByTaggedResourceId", tClass)
- .setParameter("taggedResId", taggedResId).getResultList();
+ return getEntityManager().createNamedQuery("XXTagResourceMap.findByResourceId", tClass)
+ .setParameter("resourceId", resourceId).getResultList();
} catch (NoResultException e) {
return new ArrayList<XXTagResourceMap>();
}
}
+ public List<XXTagResourceMap> findByResourceGuid(String resourceGuid) {
+ if (StringUtil.isEmpty(resourceGuid)) {
+ return new ArrayList<XXTagResourceMap>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXTagResourceMap.findByResourceGuid", tClass)
+ .setParameter("resourceGuid", resourceGuid).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXTagResourceMap>();
+ }
+ }
+
+ public List<XXTagResourceMap> findByTagId(Long tagId) {
+ if (tagId == null) {
+ return new ArrayList<XXTagResourceMap>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXTagResourceMap.findByTagId", tClass)
+ .setParameter("tagId", tagId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXTagResourceMap>();
+ }
+ }
+
+ public List<XXTagResourceMap> findByTagGuid(String tagGuid) {
+ if (StringUtil.isEmpty(tagGuid)) {
+ return new ArrayList<XXTagResourceMap>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXTagResourceMap.findByTagGuid", tClass)
+ .setParameter("tagGuid", tagGuid).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXTagResourceMap>();
+ }
+ }
+
+ public XXTagResourceMap findByTagAndResourceId(Long tagId, Long resourceId) {
+ if (tagId == null || resourceId == null) {
+ return null;
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXTagResourceMap.findByTagAndResourceId", tClass)
+ .setParameter("tagId", tagId)
+ .setParameter("resourceId", resourceId).getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
+
+ public XXTagResourceMap findByTagAndResourceGuid(String tagGuid, String resourceGuid) {
+ if (tagGuid == null || resourceGuid == null) {
+ return null;
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXTagResourceMap.findByTagAndResourceGuid", tClass)
+ .setParameter("tagGuid", tagGuid)
+ .setParameter("resourceGuid", resourceGuid).getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
+
+ public List<XXTagResourceMap> findByServiceId(Long serviceId) {
+ if (serviceId == null) {
+ return new ArrayList<XXTagResourceMap>();
+ }
+ try {
+ return getEntityManager().createNamedQuery("XXTagResourceMap.findByServiceId", tClass)
+ .setParameter("serviceId", serviceId).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXTagResourceMap>();
+ }
+ }
+
+ public void updateServiceForTagUpdate(Long tagId, Date updateTime) {
+ if (tagId == null) {
+ return;
+ }
+
+ if(updateTime == null) {
+ updateTime = new Date();
+ }
+
+ try {
+ getEntityManager().createNamedQuery("XXTagResourceMap.updateTagVersionInService", tClass)
+ .setParameter("tagId", tagId)
+ .setParameter("tagUpdateTime", updateTime)
+ .executeUpdate();
+ } catch (NoResultException e) {
+ return;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceDao.java
deleted file mode 100644
index b7c2b3e..0000000
--- a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceDao.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ranger.db;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.NoResultException;
-
-import org.apache.ranger.common.db.BaseDao;
-import org.apache.ranger.entity.XXTaggedResource;
-
-public class XXTaggedResourceDao extends BaseDao<XXTaggedResource> {
-
- public XXTaggedResourceDao(RangerDaoManagerBase daoManager) {
- super(daoManager);
- }
-
- public List<XXTaggedResource> findByServiceId(Long serviceId) {
- if (serviceId == null) {
- return new ArrayList<XXTaggedResource>();
- }
- try {
- return getEntityManager().createNamedQuery("XXTaggedResource.findByServiceId", tClass)
- .setParameter("serviceId", serviceId).getResultList();
- } catch (NoResultException e) {
- return new ArrayList<XXTaggedResource>();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueDao.java
deleted file mode 100644
index 6f72a3c..0000000
--- a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueDao.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ranger.db;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.NoResultException;
-
-import org.apache.ranger.common.db.BaseDao;
-import org.apache.ranger.entity.XXTaggedResourceValue;
-
-public class XXTaggedResourceValueDao extends BaseDao<XXTaggedResourceValue> {
-
- public XXTaggedResourceValueDao(RangerDaoManagerBase daoManager) {
- super(daoManager);
- }
-
- public List<XXTaggedResourceValue> findByTaggedResId(Long taggedResId) {
- if (taggedResId == null) {
- return new ArrayList<XXTaggedResourceValue>();
- }
- try {
- return getEntityManager().createNamedQuery("XXTaggedResourceValue.findByTaggedResId", tClass)
- .setParameter("taggedResId", taggedResId)
- .getResultList();
- } catch (NoResultException e) {
- return new ArrayList<XXTaggedResourceValue>();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueMapDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueMapDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueMapDao.java
deleted file mode 100644
index 016766f..0000000
--- a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueMapDao.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ranger.db;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.NoResultException;
-
-import org.apache.ranger.common.db.BaseDao;
-import org.apache.ranger.entity.XXTaggedResourceValue;
-import org.apache.ranger.entity.XXTaggedResourceValueMap;
-
-public class XXTaggedResourceValueMapDao extends BaseDao<XXTaggedResourceValueMap> {
-
- public XXTaggedResourceValueMapDao(RangerDaoManagerBase daoManager) {
- super(daoManager);
- }
-
- public List<XXTaggedResourceValueMap> findByResValueId(Long resValueId) {
- if (resValueId == null) {
- return new ArrayList<XXTaggedResourceValueMap>();
- }
- try {
- return getEntityManager().createNamedQuery("XXTaggedResourceValueMap.findByResValueId", tClass)
- .setParameter("resValueId", resValueId).getResultList();
- } catch (NoResultException e) {
- return new ArrayList<XXTaggedResourceValueMap>();
- }
- }
-
- @SuppressWarnings("unchecked")
- public List<String> findValuesByResValueId(Long resValueId) {
- if (resValueId == null) {
- return new ArrayList<String>();
- }
- try {
- return getEntityManager().createNamedQuery("XXTaggedResourceValueMap.findValuesByResValueId")
- .setParameter("resValueId", resValueId).getResultList();
- } catch (NoResultException e) {
- return new ArrayList<String>();
- }
- }
-
-}
[4/4] incubator-ranger git commit: RANGER-595: updated tag-store
implementation; replaced externalId references with guid;
service.tagVersion incremented on changes to tagging for the service-resources
Posted by ma...@apache.org.
RANGER-595: updated tag-store implementation; replaced externalId references with guid; service.tagVersion incremented on changes to tagging for the service-resources
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/303f7b70
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/303f7b70
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/303f7b70
Branch: refs/heads/tag-policy
Commit: 303f7b7023f2e20464186babf97c461ea598062c
Parents: 83cb21e
Author: Madhan Neethiraj <ma...@apache.org>
Authored: Fri Aug 28 02:48:17 2015 -0700
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Fri Aug 28 14:54:02 2015 -0700
----------------------------------------------------------------------
.../admin/client/RangerAdminRESTClient.java | 2 +-
.../plugin/model/RangerServiceResource.java | 10 +-
.../apache/ranger/plugin/model/RangerTag.java | 7 +-
.../ranger/plugin/model/RangerTagDef.java | 1 +
.../ranger/plugin/store/AbstractTagStore.java | 324 +-----
.../ranger/plugin/store/TagPredicateUtil.java | 91 +-
.../apache/ranger/plugin/store/TagStore.java | 48 +-
.../ranger/plugin/store/TagValidator.java | 124 +--
.../ranger/plugin/store/file/TagFileStore.java | 866 ++++++++++++---
.../apache/ranger/plugin/util/SearchFilter.java | 28 +-
.../apache/ranger/plugin/util/ServiceTags.java | 14 +-
.../ranger/plugin/store/TestTagStore.java | 24 +-
.../016-updated-schema-for-tag-based-policy.sql | 93 +-
.../java/org/apache/ranger/biz/TagDBStore.java | 1011 +++++++++++-------
.../org/apache/ranger/common/AppConstants.java | 12 +-
.../apache/ranger/db/RangerDaoManagerBase.java | 38 +-
.../apache/ranger/db/XXServiceResourceDao.java | 85 ++
.../ranger/db/XXServiceResourceElementDao.java | 49 +
.../db/XXServiceResourceElementValueDao.java | 61 ++
.../java/org/apache/ranger/db/XXTagDao.java | 70 +-
.../java/org/apache/ranger/db/XXTagDefDao.java | 45 +
.../apache/ranger/db/XXTagResourceMapDao.java | 102 +-
.../apache/ranger/db/XXTaggedResourceDao.java | 49 -
.../ranger/db/XXTaggedResourceValueDao.java | 49 -
.../ranger/db/XXTaggedResourceValueMapDao.java | 62 --
.../org/apache/ranger/entity/XXServiceBase.java | 74 ++
.../apache/ranger/entity/XXServiceResource.java | 245 +++++
.../ranger/entity/XXServiceResourceElement.java | 245 +++++
.../entity/XXServiceResourceElementValue.java | 220 ++++
.../java/org/apache/ranger/entity/XXTag.java | 86 --
.../apache/ranger/entity/XXTagResourceMap.java | 28 +-
.../apache/ranger/entity/XXTaggedResource.java | 245 -----
.../ranger/entity/XXTaggedResourceValue.java | 245 -----
.../ranger/entity/XXTaggedResourceValueMap.java | 220 ----
.../java/org/apache/ranger/rest/TagREST.java | 174 ++-
.../apache/ranger/rest/TagRESTConstants.java | 31 +-
.../ranger/service/RangerServiceDefService.java | 9 -
.../service/RangerServiceResourceService.java | 96 ++
.../RangerServiceResourceServiceBase.java | 112 ++
.../ranger/service/RangerTagDefService.java | 60 ++
.../service/RangerTagResourceMapService.java | 190 ++++
.../RangerTagResourceMapServiceBase.java | 75 ++
.../apache/ranger/service/RangerTagService.java | 82 +-
.../ranger/service/RangerTagServiceBase.java | 33 +-
.../service/RangerTaggedResourceService.java | 51 -
.../RangerTaggedResourceServiceBase.java | 112 --
.../resources/META-INF/jpa_named_queries.xml | 122 ++-
47 files changed, 3611 insertions(+), 2409 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
index 3f0c5dd..5ec7996 100644
--- a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
+++ b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
@@ -222,7 +222,7 @@ public class RangerAdminRESTClient implements RangerAdminClient {
}
if(LOG.isDebugEnabled()) {
- LOG.debug("<==> RangerAdminRESTClient.getTaggedResources(" + lastKnownVersion + "): ");
+ LOG.debug("<== RangerAdminRESTClient.getServiceTagsIfUpdated(" + lastKnownVersion + "): ");
}
return ret;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResource.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResource.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResource.java
index 3728f6d..c9e07eb 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResource.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResource.java
@@ -43,15 +43,15 @@ public class RangerServiceResource extends RangerBaseModelObject {
private String resourceSignature = null;
- public RangerServiceResource(String externalId, String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec, String resourceSignature) {
+ public RangerServiceResource(String guid, String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec, String resourceSignature) {
super();
- setGuid(externalId);
+ setGuid(guid);
setServiceName(serviceName);
setResourceSpec(resourceSpec);
setResourceSignature(resourceSignature);
}
- public RangerServiceResource(String externalId, String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec) {
- this(externalId, serviceName, resourceSpec, null);
+ public RangerServiceResource(String guid, String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec) {
+ this(guid, serviceName, resourceSpec, null);
}
public RangerServiceResource(String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec) {
this(null, serviceName, resourceSpec, null);
@@ -94,7 +94,7 @@ public class RangerServiceResource extends RangerBaseModelObject {
sb.append("{ ");
- sb.append("externalId={").append(getGuid()).append("} ");
+ sb.append("guid={").append(getGuid()).append("} ");
sb.append("serviceName={").append(serviceName).append("} ");
sb.append("resourceSpec={");
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTag.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTag.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTag.java
index 25dc24d..6e4685a 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTag.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTag.java
@@ -38,11 +38,12 @@ import java.util.Map;
public class RangerTag extends RangerBaseModelObject {
private static final long serialVersionUID = 1L;
- private String name;
+ private String name;
private Map<String, String> attributeValues;
public RangerTag(String guid, String name, Map<String, String> attributeValues) {
super();
+
setGuid(guid);
setName(name);
setAttributeValues(attributeValues);
@@ -82,10 +83,10 @@ public class RangerTag extends RangerBaseModelObject {
}
public StringBuilder toString(StringBuilder sb) {
+ sb.append("RangerTag={");
- sb.append("{ ");
+ super.toString(sb);
- sb.append("guid={").append(getGuid()).append("} ");
sb.append("name={").append(name).append("} ");
sb.append("attributeValues={");
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTagDef.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTagDef.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTagDef.java
index 0f58c96..bd9bbfa 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTagDef.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerTagDef.java
@@ -102,6 +102,7 @@ public class RangerTagDef extends RangerBaseModelObject {
@XmlAccessorType(XmlAccessType.FIELD)
public static class RangerTagAttributeDef implements java.io.Serializable {
+ private static final long serialVersionUID = 1L;
private String name = null;
private String type = null;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractTagStore.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractTagStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractTagStore.java
index 43d25a7..ed1b64d 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractTagStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractTagStore.java
@@ -19,14 +19,9 @@
package org.apache.ranger.plugin.store;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ranger.plugin.model.*;
-import org.apache.ranger.plugin.util.SearchFilter;
-import org.apache.ranger.plugin.util.ServiceTags;
import java.util.*;
@@ -48,9 +43,11 @@ public abstract class AbstractTagStore implements TagStore {
protected void preCreate(RangerBaseModelObject obj) throws Exception {
obj.setId(0L);
+
if(obj.getGuid() == null) {
obj.setGuid(UUID.randomUUID().toString());
}
+
obj.setCreateTime(new Date());
obj.setUpdateTime(obj.getCreateTime());
obj.setVersion(1L);
@@ -88,7 +85,6 @@ public abstract class AbstractTagStore implements TagStore {
}
protected void preDelete(RangerBaseModelObject obj) throws Exception {
- // TODO:
}
protected void postDelete(RangerBaseModelObject obj) throws Exception {
@@ -106,322 +102,6 @@ public abstract class AbstractTagStore implements TagStore {
}
return ret;
}
-
- @Override
- public PList<RangerTagDef> getPaginatedTagDefs(SearchFilter filter) throws Exception {
- List<RangerTagDef> list = getTagDefs(filter);
-
- return new PList<RangerTagDef>(list, 0, list.size(),
- (long)list.size(), list.size(), filter.getSortType(), filter.getSortBy());
- }
-
- @Override
- public PList<RangerTagResourceMap> getPaginatedTagResourceMaps(SearchFilter filter) throws Exception {
- List<RangerTagResourceMap> list = getTagResourceMaps(filter);
-
- return new PList<RangerTagResourceMap>(list, 0, list.size(),
- (long)list.size(), list.size(), filter.getSortType(), filter.getSortBy());
- }
-
-
- @Override
- public List<RangerTagDef> getTagDefsByExternalId(String externalId) throws Exception {
-
- List<RangerTagDef> ret;
-
- if (StringUtils.isNotBlank(externalId)) {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_EXTERNAL_ID, externalId);
-
- ret = getTagDefs(filter);
-
- } else {
- ret = null;
- }
-
- return ret;
- }
-
- @Override
- public RangerTag getTagById(Long id) throws Exception {
- if (LOG.isDebugEnabled()) {
- LOG.debug("==> AbstractTagStore.getTagById(" + id + ")");
- }
-
- RangerTag ret = null;
-
- if (id != null) {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_ID, id.toString());
-
- List<RangerTag> tags = getTags(filter);
-
- if (CollectionUtils.isNotEmpty(tags) && CollectionUtils.size(tags) == 1) {
- ret = tags.get(0);
- }
- }
-
- if (LOG.isDebugEnabled()) {
- LOG.debug("<== AbstractTagStore.getTagDefById(" + id + "): " + ret);
- }
-
- return ret;
- }
-
- @Override
- public List<RangerTag> getTagsByName(String name) throws Exception {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_NAME, name);
-
- return getTags(filter);
- }
-
- @Override
- public List<RangerTag> getTagsByExternalId(String externalId) throws Exception {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_EXTERNAL_ID, externalId);
-
- return getTags(filter);
- }
-
-
- @Override
- public RangerServiceResource getServiceResourceById(Long id) throws Exception {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_RESOURCE_ID, id.toString());
-
- List<RangerServiceResource> resources = getServiceResources(filter);
- if (CollectionUtils.isEmpty(resources) || resources.size() > 1) {
- throw new Exception("Not exactly one resource found with id=" + id);
- }
-
- return resources.get(0);
- }
-
- @Override
- public List<RangerServiceResource> getServiceResourcesByExternalId(String externalId) throws Exception {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_RESOURCE_EXTERNAL_ID, externalId);
-
- return getServiceResources(filter);
- }
-
- @Override
- public List<RangerServiceResource> getServiceResourcesByServiceAndResourceSpec(String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec) throws Exception {
- List<RangerServiceResource> ret = null;
-
- RangerService service;
- try {
- service = svcStore.getServiceByName(serviceName);
- } catch (Exception excp) {
- LOG.error("AbstractTagStore.getTaggedResource - failed to get service " + serviceName);
- throw new Exception("Invalid service: " + serviceName);
- }
-
- if (MapUtils.isNotEmpty(resourceSpec)) {
-
- RangerServiceResource resource = new RangerServiceResource(serviceName, resourceSpec);
- ret = getServiceResources(resource);
- }
-
- return ret;
- }
-
- private List<RangerServiceResource> getServiceResources(RangerServiceResource resource) throws Exception {
-
- List<RangerServiceResource> ret = null;
-
- RangerServiceResourceSignature serializer = new RangerServiceResourceSignature(resource);
- String signature = serializer.getSignature();
-
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_RESOURCE_SIGNATURE, signature);
-
- ret = getServiceResources(filter);
-
- return ret;
- }
-
- @Override
- public List<RangerTagResourceMap> getTagResourceMap(String externalResourceId, String externalTagId) throws Exception {
- List<RangerTagResourceMap> ret = null;
-
- SearchFilter serviceResourceFilter = new SearchFilter();
- SearchFilter tagFilter = new SearchFilter();
-
- serviceResourceFilter.setParam(SearchFilter.TAG_RESOURCE_EXTERNAL_ID, externalResourceId);
- List<RangerServiceResource> serviceResources = getServiceResources(serviceResourceFilter);
-
- tagFilter.setParam(SearchFilter.TAG_EXTERNAL_ID, externalTagId);
- List<RangerTag> tags = getTags(tagFilter);
-
- if (CollectionUtils.isNotEmpty(serviceResources) && CollectionUtils.isNotEmpty(tags)) {
-
- for (RangerServiceResource serviceResource : serviceResources) {
-
- Long resourceId = serviceResource.getId();
-
- for (RangerTag tag : tags) {
-
- Long tagId = tag.getId();
-
- SearchFilter mapFilter = new SearchFilter();
-
- mapFilter.setParam(SearchFilter.TAG_MAP_TAG_ID, tagId.toString());
-
- mapFilter.setParam(SearchFilter.TAG_MAP_RESOURCE_ID, resourceId.toString());
-
- ret = getTagResourceMaps(mapFilter);
-
- if (CollectionUtils.isNotEmpty(ret)) {
- break;
- }
- }
- }
- }
-
- return ret;
- }
-
- @Override
- public RangerTagResourceMap getTagResourceMapById(Long id) throws Exception {
- SearchFilter filter = new SearchFilter();
-
- filter.setParam(SearchFilter.TAG_MAP_ID, id.toString());
-
- List<RangerTagResourceMap> list = getTagResourceMaps(filter);
-
- if (CollectionUtils.isEmpty(list) || CollectionUtils.size(list) != 1) {
- throw new Exception("Cannot find unique tagResourceMap object with id=" + id);
- }
- return list.get(0);
- }
-
- @Override
- public ServiceTags getServiceTagsIfUpdated(String serviceName, Long lastKnownVersion) throws Exception {
-
- ServiceTags ret = new ServiceTags();
-
- boolean tagsChanged = true;
-
- RangerService service = null;
-
- try {
- service = svcStore.getServiceByName(serviceName);
- ret.setServiceName(serviceName);
- } catch (Exception exception) {
- LOG.error("Cannot find service for serviceName=" + serviceName);
- tagsChanged = false;
- }
-
- if (lastKnownVersion != null
- && service != null && service.getTagVersion() != null
- && lastKnownVersion.compareTo(service.getTagVersion()) >= 0 ) {
- tagsChanged = false;
- }
-
- if (tagsChanged) {
- SearchFilter filter = new SearchFilter();
-
- filter.setParam(SearchFilter.TAG_RESOURCE_SERVICE_NAME, serviceName);
-
- List<RangerServiceResource> serviceResources = getServiceResources(filter);
-
- Map<Long, RangerTag> tagsMap = new HashMap<Long, RangerTag>();
- Map<Long, List<Long>> resourceToTagIdsMap = new HashMap<Long, List<Long>>();
-
- for (RangerServiceResource serviceResource : serviceResources) {
- List<RangerTag> tagList = getTagsForServiceResourceObject(serviceResource);
-
- if (CollectionUtils.isNotEmpty(tagList)) {
- List<Long> tagIdList = new ArrayList<Long>();
- for (RangerTag tag : tagList) {
- tagsMap.put(tag.getId(), tag);
- tagIdList.add(tag.getId());
- }
- resourceToTagIdsMap.put(serviceResource.getId(), tagIdList);
- }
- }
-
- if (MapUtils.isEmpty(resourceToTagIdsMap)) {
- serviceResources.clear();
- }
-
- ret.setServiceResources(serviceResources);
- ret.setResourceToTagIds(resourceToTagIdsMap);
- ret.setTags(tagsMap);
-
- if (service != null && service.getTagVersion() != null) {
- ret.setTagVersion(service.getTagVersion());
- }
- if (service != null && service.getTagUpdateTime() != null) {
- ret.setTagUpdateTime(service.getTagUpdateTime());
- }
- if (LOG.isDebugEnabled()) {
- LOG.debug("Changes to tagVersion detected, tagVersion in service=" + (service == null ? null : service.getTagVersion())
- + ", Plugin-provided lastKnownVersion=" + lastKnownVersion);
- }
- } else {
- if (LOG.isDebugEnabled()) {
- LOG.debug("No changes to tagVersion detected, tagVersion in service=" + (service == null ? null : service.getTagVersion())
- + ", Plugin-provided lastKnownVersion=" + lastKnownVersion);
- }
- ret.setTagVersion(lastKnownVersion);
- }
-
- return ret;
-
- }
-
- @Override
- public List<RangerTag> getTagsForServiceResource(Long resourceId) throws Exception {
- RangerServiceResource serviceResource = getServiceResourceById(resourceId);
-
- List<RangerTag> tagList = getTagsForServiceResourceObject(serviceResource);
-
- return tagList;
- }
-
- @Override
- public List<RangerTag> getTagsForServiceResourceByExtId(String resourceExtId) throws Exception {
- List<RangerTag> tagList = new ArrayList<RangerTag>();
-
- List<RangerServiceResource> serviceResources = getServiceResourcesByExternalId(resourceExtId);
- for (RangerServiceResource serviceResource : serviceResources) {
- List<RangerTag> tmp = getTagsForServiceResourceObject(serviceResource);
- tagList.addAll(tmp);
- }
- return tagList;
- }
-
- private List<RangerTag> getTagsForServiceResourceObject(RangerServiceResource serviceResource) throws Exception {
-
- List<RangerTag> tagList = new ArrayList<RangerTag>();
-
- if (serviceResource != null) {
- SearchFilter mapFilter = new SearchFilter();
- mapFilter.setParam(SearchFilter.TAG_MAP_RESOURCE_ID, serviceResource.getId().toString());
-
- List<RangerTagResourceMap> associations = getTagResourceMaps(mapFilter);
- if (CollectionUtils.isNotEmpty(associations)) {
-
- for (RangerTagResourceMap association : associations) {
- RangerTag tag = getTagById(association.getTagId());
- if (tag != null) {
- tagList.add(tag);
- }
- }
- }
- }
- return tagList;
- }
-
- @Override
- public List<RangerTagResourceMap> getTagResourceMapsByResourceId(Long tagId) throws Exception {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_MAP_RESOURCE_ID, tagId.toString());
- List<RangerTagResourceMap> associations = getTagResourceMaps(filter);
- return associations;
- }
-
- @Override
- public List<RangerTagResourceMap> getTagResourceMapsByTagId(Long tagId) throws Exception {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_MAP_TAG_ID, tagId.toString());
- List<RangerTagResourceMap> associations = getTagResourceMaps(filter);
- return associations;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/store/TagPredicateUtil.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/TagPredicateUtil.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/TagPredicateUtil.java
index 950969e..de48240 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/TagPredicateUtil.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/TagPredicateUtil.java
@@ -38,21 +38,19 @@ public class TagPredicateUtil extends AbstractPredicateUtil {
super.addPredicates(filter, predicates);
addPredicateForTagDefId(filter.getParam(SearchFilter.TAG_DEF_ID), predicates);
- addPredicateForTagDefExternalId(filter.getParam(SearchFilter.TAG_DEF_EXTERNAL_ID), predicates);
+ addPredicateForTagDefGuid(filter.getParam(SearchFilter.TAG_DEF_GUID), predicates);
addPredicateForTagDefName(filter.getParam(SearchFilter.TAG_DEF_NAME), predicates);
addPredicateForTagId(filter.getParam(SearchFilter.TAG_ID), predicates);
- addPredicateForTagExternalId(filter.getParam(SearchFilter.TAG_EXTERNAL_ID), predicates);
+ addPredicateForTagGuid(filter.getParam(SearchFilter.TAG_GUID), predicates);
addPredicateForTagName(filter.getParam(SearchFilter.TAG_NAME), predicates);
addPredicateForResourceId(filter.getParam(SearchFilter.TAG_RESOURCE_ID), predicates);
- addPredicateForResourceExternalId(filter.getParam(SearchFilter.TAG_RESOURCE_EXTERNAL_ID), predicates);
+ addPredicateForResourceGuid(filter.getParam(SearchFilter.TAG_RESOURCE_GUID), predicates);
addPredicateForServiceResourceServiceName(filter.getParam(SearchFilter.TAG_RESOURCE_SERVICE_NAME), predicates);
addPredicateForResourceSignature(filter.getParam(SearchFilter.TAG_RESOURCE_SIGNATURE), predicates);
addPredicateForTagResourceMapId(filter.getParam(SearchFilter.TAG_MAP_ID), predicates);
- addPredicateForTagResourceMapResourceId(filter.getParam(SearchFilter.TAG_MAP_RESOURCE_ID), predicates);
- addPredicateForTagResourceMapTagId(filter.getParam(SearchFilter.TAG_MAP_TAG_ID), predicates);
}
private Predicate addPredicateForTagDefId(final String id, List<Predicate> predicates) {
@@ -87,8 +85,8 @@ public class TagPredicateUtil extends AbstractPredicateUtil {
return ret;
}
- private Predicate addPredicateForTagDefExternalId(final String externalId, List<Predicate> predicates) {
- if (externalId == null || StringUtils.isEmpty(externalId)) {
+ private Predicate addPredicateForTagDefGuid(final String guid, List<Predicate> predicates) {
+ if (StringUtils.isEmpty(guid)) {
return null;
}
@@ -105,7 +103,7 @@ public class TagPredicateUtil extends AbstractPredicateUtil {
if (object instanceof RangerTagDef) {
RangerTagDef tagDef = (RangerTagDef) object;
- ret = StringUtils.equals(externalId, tagDef.getGuid());
+ ret = StringUtils.equals(guid, tagDef.getGuid());
}
return ret;
@@ -170,6 +168,9 @@ public class TagPredicateUtil extends AbstractPredicateUtil {
RangerTag tag = (RangerTag) object;
ret = StringUtils.equals(id, tag.getId().toString());
+ } else if (object instanceof RangerTagResourceMap) {
+ RangerTagResourceMap tagResourceMap = (RangerTagResourceMap) object;
+ ret = StringUtils.equals(id, tagResourceMap.getTagId().toString());
}
return ret;
@@ -183,8 +184,8 @@ public class TagPredicateUtil extends AbstractPredicateUtil {
return ret;
}
- private Predicate addPredicateForTagExternalId(final String externalId, List<Predicate> predicates) {
- if (StringUtils.isEmpty(externalId)) {
+ private Predicate addPredicateForTagGuid(final String guid, List<Predicate> predicates) {
+ if (StringUtils.isEmpty(guid)) {
return null;
}
@@ -201,7 +202,7 @@ public class TagPredicateUtil extends AbstractPredicateUtil {
if (object instanceof RangerTag) {
RangerTag tag = (RangerTag) object;
- ret = StringUtils.equals(externalId, tag.getGuid());
+ ret = StringUtils.equals(guid, tag.getGuid());
}
return ret;
@@ -266,6 +267,10 @@ public class TagPredicateUtil extends AbstractPredicateUtil {
RangerServiceResource resource = (RangerServiceResource) object;
ret = StringUtils.equals(id, resource.getId().toString());
+ } else if(object instanceof RangerTagResourceMap) {
+ RangerTagResourceMap tagResourceMap = (RangerTagResourceMap)object;
+
+ ret = StringUtils.equals(id, tagResourceMap.getId().toString());
}
return ret;
@@ -279,7 +284,7 @@ public class TagPredicateUtil extends AbstractPredicateUtil {
return ret;
}
- private Predicate addPredicateForResourceExternalId(final String id, List<Predicate> predicates) {
+ private Predicate addPredicateForResourceGuid(final String id, List<Predicate> predicates) {
if (StringUtils.isEmpty(id)) {
return null;
}
@@ -404,66 +409,4 @@ public class TagPredicateUtil extends AbstractPredicateUtil {
return ret;
}
-
- private Predicate addPredicateForTagResourceMapResourceId(final String resourceId, List<Predicate> predicates) {
- if (StringUtils.isEmpty(resourceId)) {
- return null;
- }
-
- Predicate ret = new Predicate() {
- @Override
- public boolean evaluate(Object object) {
-
- boolean ret = false;
-
- if (object == null) {
- return ret;
- }
-
- if (object instanceof RangerTagResourceMap) {
- RangerTagResourceMap tagResourceMap = (RangerTagResourceMap) object;
- ret = StringUtils.equals(resourceId, tagResourceMap.getResourceId().toString());
- }
-
- return ret;
- }
- };
-
- if (predicates != null) {
- predicates.add(ret);
- }
-
- return ret;
- }
-
- private Predicate addPredicateForTagResourceMapTagId(final String tagId, List<Predicate> predicates) {
- if (StringUtils.isEmpty(tagId)) {
- return null;
- }
-
- Predicate ret = new Predicate() {
- @Override
- public boolean evaluate(Object object) {
-
- boolean ret = false;
-
- if (object == null) {
- return ret;
- }
-
- if (object instanceof RangerTagResourceMap) {
- RangerTagResourceMap tagResourceMap = (RangerTagResourceMap) object;
- ret = StringUtils.equals(tagId, tagResourceMap.getTagId().toString());
- }
-
- return ret;
- }
- };
-
- if (predicates != null) {
- predicates.add(ret);
- }
-
- return ret;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java
index aaa70c6..f9d1086 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java
@@ -35,6 +35,7 @@ public interface TagStore {
void setServiceStore(ServiceStore svcStore);
+
RangerTagDef createTagDef(RangerTagDef tagDef) throws Exception;
RangerTagDef updateTagDef(RangerTagDef TagDef) throws Exception;
@@ -43,14 +44,17 @@ public interface TagStore {
void deleteTagDefById(Long id) throws Exception;
- List<RangerTagDef> getTagDef(String name) throws Exception;
-
RangerTagDef getTagDefById(Long id) throws Exception;
+ RangerTagDef getTagDefByGuid(String guid) throws Exception;
+
+ List<RangerTagDef> getTagDefsByName(String name) throws Exception;
+
List<RangerTagDef> getTagDefs(SearchFilter filter) throws Exception;
PList<RangerTagDef> getPaginatedTagDefs(SearchFilter filter) throws Exception;
+
RangerTag createTag(RangerTag tag) throws Exception;
RangerTag updateTag(RangerTag tag) throws Exception;
@@ -59,52 +63,62 @@ public interface TagStore {
RangerTag getTagById(Long id) throws Exception;
+ RangerTag getTagByGuid(String guid) throws Exception;
+
List<RangerTag> getTagsByName(String name) throws Exception;
- List<RangerTag> getTagsByExternalId(String externalId) throws Exception;
+ List<RangerTag> getTagsForResourceId(Long resourceId) throws Exception;
+
+ List<RangerTag> getTagsForResourceGuid(String resourceGuid) throws Exception;
List<RangerTag> getTags(SearchFilter filter) throws Exception;
+ PList<RangerTag> getPaginatedTags(SearchFilter filter) throws Exception;
+
+
RangerServiceResource createServiceResource(RangerServiceResource resource) throws Exception;
RangerServiceResource updateServiceResource(RangerServiceResource resource) throws Exception;
void deleteServiceResourceById(Long id) throws Exception;
- List<RangerServiceResource> getServiceResourcesByExternalId(String externalId) throws Exception;
-
RangerServiceResource getServiceResourceById(Long id) throws Exception;
+ RangerServiceResource getServiceResourceByGuid(String guid) throws Exception;
+
List<RangerServiceResource> getServiceResourcesByServiceAndResourceSpec(String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec) throws Exception;
List<RangerServiceResource> getServiceResources(SearchFilter filter) throws Exception;
+ PList<RangerServiceResource> getPaginatedServiceResources(SearchFilter filter) throws Exception;
+
+
RangerTagResourceMap createTagResourceMap(RangerTagResourceMap tagResourceMap) throws Exception;
void deleteTagResourceMapById(Long id) throws Exception;
- List<RangerTagResourceMap> getTagResourceMap(String externalResourceId, String externalTagId) throws Exception;
-
RangerTagResourceMap getTagResourceMapById(Long id) throws Exception;
- List<RangerTagResourceMap> getTagResourceMapsByTagId(Long tagId) throws Exception;
+ List<RangerTagResourceMap> getTagResourceMapsForTagId(Long tagId) throws Exception;
- List<RangerTagResourceMap> getTagResourceMapsByResourceId(Long resourceId) throws Exception;
+ List<RangerTagResourceMap> getTagResourceMapsForTagGuid(String tagGuid) throws Exception;
- List<RangerTagResourceMap> getTagResourceMaps(SearchFilter filter) throws Exception;
+ List<RangerTagResourceMap> getTagResourceMapsForResourceId(Long resourceId) throws Exception;
- ServiceTags getServiceTagsIfUpdated(String serviceName, Long lastKnownVersion) throws Exception;
+ List<RangerTagResourceMap> getTagResourceMapsForResourceGuid(String resourceGuid) throws Exception;
- PList<RangerTagResourceMap> getPaginatedTagResourceMaps(SearchFilter filter) throws Exception;
+ RangerTagResourceMap getTagResourceMapForTagAndResourceId(Long tagId, Long resourceId) throws Exception;
- List<String> getTags(String serviceName) throws Exception;
+ RangerTagResourceMap getTagResourceMapForTagAndResourceGuid(String tagGuid, String resourceGuid) throws Exception;
- List<String> lookupTags(String serviceName, String tagNamePattern) throws Exception;
+ List<RangerTagResourceMap> getTagResourceMaps(SearchFilter filter) throws Exception;
+
+ PList<RangerTagResourceMap> getPaginatedTagResourceMaps(SearchFilter filter) throws Exception;
- List<RangerTag> getTagsForServiceResource(Long resourceId) throws Exception;
- List<RangerTag> getTagsForServiceResourceByExtId(String resourceExtId) throws Exception;
+ ServiceTags getServiceTagsIfUpdated(String serviceName, Long lastKnownVersion) throws Exception;
- List<RangerTagDef> getTagDefsByExternalId(String extId) throws Exception;
+ List<String> getTags(String serviceName) throws Exception;
+ List<String> lookupTags(String serviceName, String tagNamePattern) throws Exception;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/store/TagValidator.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/TagValidator.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/TagValidator.java
index ada5dd2..8c2b230 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/TagValidator.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/TagValidator.java
@@ -57,21 +57,18 @@ public class TagValidator {
tag.setId(exist.getId());
}
- public void preUpdateTagByExternalId(String externalId, final RangerTag tag) throws Exception {
+ public void preUpdateTagByGuid(String guid, final RangerTag tag) throws Exception {
if (StringUtils.isBlank(tag.getName())) {
throw new Exception("Tag has no name");
}
- List<RangerTag> exist = tagStore.getTagsByExternalId(externalId);
- if (CollectionUtils.isEmpty(exist) || CollectionUtils.size(exist) != 1) {
- throw new Exception("Attempt to update nonexistent or multiple tags, externalId=" + externalId);
+ RangerTag existing = tagStore.getTagByGuid(guid);
+ if (existing == null) {
+ throw new Exception("Attempt to update nonexistent tag, guid=" + guid);
}
- RangerTag onlyTag = exist.get(0);
-
- tag.setId(onlyTag.getId());
- tag.setGuid(externalId);
-
+ tag.setId(existing.getId());
+ tag.setGuid(existing.getGuid());
}
public void preUpdateTagByName(String name, final RangerTag tag) throws Exception {
@@ -98,26 +95,24 @@ public class TagValidator {
throw new Exception("Attempt to delete nonexistent tag, id=" + id);
}
- List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsByTagId(exist.getId());
+ List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsForTagId(exist.getId());
if (CollectionUtils.isNotEmpty(associations)) {
throw new Exception("Attempt to delete tag which is associated with a service-resource, id=" + id);
}
return exist;
}
- public RangerTag preDeleteTagByExternalId(String externalId) throws Exception {
- List<RangerTag> exist;
- exist = tagStore.getTagsByExternalId(externalId);
- if (CollectionUtils.isEmpty(exist) || CollectionUtils.size(exist) != 1) {
- throw new Exception("Attempt to delete nonexistent or multiple tags, externalId=" + externalId);
+ public RangerTag preDeleteTagByGuid(String guid) throws Exception {
+ RangerTag exiting = tagStore.getTagByGuid(guid);
+ if (exiting == null) {
+ throw new Exception("Attempt to delete nonexistent tag, guid=" + guid);
}
- RangerTag ret = exist.get(0);
- List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsByTagId(ret.getId());
+ List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsForTagId(exiting.getId());
if (CollectionUtils.isNotEmpty(associations)) {
- throw new Exception("Attempt to delete tag which is associated with a service-resource, externalId=" + externalId);
+ throw new Exception("Attempt to delete tag which is associated with a service-resource, guid=" + guid);
}
- return ret;
+ return exiting;
}
public RangerTag preDeleteTagByName(String name) throws Exception {
@@ -127,7 +122,7 @@ public class TagValidator {
throw new Exception("Attempt to delete nonexistent or multiple tags, name=" + name);
}
RangerTag ret = exist.get(0);
- List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsByTagId(ret.getId());
+ List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsForTagId(ret.getId());
if (CollectionUtils.isNotEmpty(associations)) {
throw new Exception("Attempt to delete tag which is associated with a service-resource, name=" + name);
}
@@ -173,23 +168,20 @@ public class TagValidator {
}
- public void preUpdateServiceResourceByExternalId(String externalId, RangerServiceResource resource) throws Exception {
+ public void preUpdateServiceResourceByGuid(String guid, RangerServiceResource resource) throws Exception {
if (StringUtils.isBlank(resource.getServiceName())
|| resource.getResourceSpec() == null
|| CollectionUtils.size(resource.getResourceSpec()) == 0) {
throw new Exception("No serviceName or resourceSpec in RangerServiceResource");
}
- List<RangerServiceResource> exist;
- exist = tagStore.getServiceResourcesByExternalId(externalId);
- if (CollectionUtils.isEmpty(exist) || CollectionUtils.size(exist) != 1) {
- throw new Exception("Attempt to update nonexistent or multiple resources, externalId=" + externalId);
+ RangerServiceResource existing = tagStore.getServiceResourceByGuid(guid);
+ if (existing == null) {
+ throw new Exception("Attempt to update nonexistent resource, guid=" + guid);
}
- RangerServiceResource onlyResource = exist.get(0);
-
- resource.setId(onlyResource.getId());
- resource.setGuid(externalId);
+ resource.setId(existing.getId());
+ resource.setGuid(guid);
RangerServiceResourceSignature serializer = new RangerServiceResourceSignature(resource);
resource.setResourceSignature(serializer.getSignature());
@@ -201,60 +193,60 @@ public class TagValidator {
if (exist == null) {
throw new Exception("Attempt to delete nonexistent resource, id=" + id);
}
- List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsByResourceId(exist.getId());
+ List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsForResourceId(exist.getId());
if (CollectionUtils.isNotEmpty(associations)) {
throw new Exception("Attempt to delete serviceResource which is associated with a tag, id=" + id);
}
return exist;
}
- public RangerServiceResource preDeleteServiceResourceByExternalId(String externalId) throws Exception {
- List<RangerServiceResource> exist;
- exist = tagStore.getServiceResourcesByExternalId(externalId);
- if (CollectionUtils.isEmpty(exist) || CollectionUtils.size(exist) != 1) {
- throw new Exception("Attempt to delete nonexistent or multiple resources, externalId=" + externalId);
+ public RangerServiceResource preDeleteServiceResourceByGuid(String guid) throws Exception {
+ RangerServiceResource existing = tagStore.getServiceResourceByGuid(guid);
+ if (existing == null) {
+ throw new Exception("Attempt to delete nonexistent resource, guid=" + guid);
}
- RangerServiceResource ret = exist.get(0);
- List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsByResourceId(ret.getId());
+ List<RangerTagResourceMap> associations = tagStore.getTagResourceMapsForResourceId(existing.getId());
if (CollectionUtils.isNotEmpty(associations)) {
- throw new Exception("Attempt to delete serviceResource which is associated with a tag, externalId=" + externalId);
+ throw new Exception("Attempt to delete serviceResource which is associated with a tag, guid=" + guid);
}
- return ret;
+ return existing;
}
- public RangerTagResourceMap preCreateTagResourceMap(String externalResourceId, String externalTagId) throws Exception {
- if (StringUtils.isBlank(externalResourceId) || StringUtils.isBlank(externalTagId)) {
- throw new Exception("Both externalResourceId and internalResourceId need to be non-empty");
+ public RangerTagResourceMap preCreateTagResourceMap(String tagGuid, String resourceGuid) throws Exception {
+ if (StringUtils.isBlank(resourceGuid) || StringUtils.isBlank(tagGuid)) {
+ throw new Exception("Both resourceGuid and resourceId need to be non-empty");
}
- List<RangerTagResourceMap> exist;
- exist = tagStore.getTagResourceMap(externalResourceId, externalTagId);
- if (CollectionUtils.isNotEmpty(exist)) {
- throw new Exception("Attempt to create existing association between resourceId=" + externalResourceId + " and tagId=" + externalTagId);
+ RangerTagResourceMap exist = tagStore.getTagResourceMapForTagAndResourceGuid(tagGuid, resourceGuid);
+ if (exist != null) {
+ throw new Exception("Attempt to create existing association between resourceId=" + resourceGuid + " and tagId=" + tagGuid);
+ }
+
+ RangerServiceResource existingServiceResource = tagStore.getServiceResourceByGuid(resourceGuid);
+
+ if(existingServiceResource == null) {
+ throw new Exception("No resource found for guid=" + resourceGuid);
}
- List<RangerServiceResource> existingServiceResources = tagStore.getServiceResourcesByExternalId(externalResourceId);
- List<RangerTag> existingTags = tagStore.getTagsByExternalId(externalTagId);
-
- if (CollectionUtils.isNotEmpty(existingServiceResources) && CollectionUtils.size(existingServiceResources) == 1) {
- if (CollectionUtils.isNotEmpty(existingTags) && CollectionUtils.size(existingTags) == 1) {
- RangerTagResourceMap newTagResourceMap = new RangerTagResourceMap();
- newTagResourceMap.setResourceId(existingServiceResources.get(0).getId());
- newTagResourceMap.setTagId(existingTags.get(0).getId());
- return newTagResourceMap;
- } else {
- throw new Exception("No unique tag found for externalId=" + externalTagId);
- }
- } else {
- throw new Exception("No unique resource found for externalId=" + externalResourceId);
+
+ RangerTag existingTag = tagStore.getTagByGuid(tagGuid);
+
+ if(existingTag == null) {
+ throw new Exception("No tag found for guid=" + tagGuid);
}
+
+ RangerTagResourceMap newTagResourceMap = new RangerTagResourceMap();
+ newTagResourceMap.setResourceId(existingServiceResource.getId());
+ newTagResourceMap.setTagId(existingTag.getId());
+
+ return newTagResourceMap;
}
- public RangerTagResourceMap preDeleteTagResourceMap(String externalResourceId, String externalTagId) throws Exception {
- List<RangerTagResourceMap> exist;
- exist = tagStore.getTagResourceMap(externalResourceId, externalTagId);
- if (CollectionUtils.isEmpty(exist) || CollectionUtils.size(exist) != 1) {
- throw new Exception("Attempt to create nonexistent association between resourceId=" + externalResourceId + " and tagId=" + externalTagId);
+ public RangerTagResourceMap preDeleteTagResourceMap(String tagGuid, String resourceGuid) throws Exception {
+ RangerTagResourceMap existing = tagStore.getTagResourceMapForTagAndResourceGuid(tagGuid, resourceGuid);
+ if (existing == null) {
+ throw new Exception("Attempt to delete nonexistent association between resourceId=" + resourceGuid + " and tagId=" + tagGuid);
}
- return exist.get(0);
+
+ return existing;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
index 8a63f72..6117034 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
@@ -20,6 +20,7 @@
package org.apache.ranger.plugin.store.file;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
@@ -28,9 +29,12 @@ import org.apache.hadoop.fs.Path;
import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.model.*;
import org.apache.ranger.plugin.store.AbstractTagStore;
+import org.apache.ranger.plugin.store.PList;
+import org.apache.ranger.plugin.store.RangerServiceResourceSignature;
import org.apache.ranger.plugin.store.TagPredicateUtil;
import org.apache.ranger.plugin.store.TagStore;
import org.apache.ranger.plugin.util.SearchFilter;
+import org.apache.ranger.plugin.util.ServiceTags;
import java.util.*;
import java.util.regex.Matcher;
@@ -40,20 +44,20 @@ public class TagFileStore extends AbstractTagStore {
private static final Log LOG = LogFactory.getLog(TagFileStore.class);
public static final String PROPERTY_TAG_FILE_STORE_DIR = "ranger.tag.store.file.dir";
- protected static final String FILE_PREFIX_TAG_DEF = "ranger-tagdef-";
- protected static final String FILE_PREFIX_TAG = "ranger-tag-";
- protected static final String FILE_PREFIX_RESOURCE = "ranger-serviceresource-";
- protected static final String FILE_PREFIX_TAG_RESOURCE_MAP = "ranger-tagresourcemap-";
- private String tagDataDir = null;
- private long nextTagDefId = 0;
- private long nextTagId = 0;
- private long nextServiceResourceId = 0;
- private long nextTagResourceMapId = 0;
+ protected static final String FILE_PREFIX_TAG_DEF = "ranger-tagdef-";
+ protected static final String FILE_PREFIX_TAG = "ranger-tag-";
+ protected static final String FILE_PREFIX_RESOURCE = "ranger-serviceresource-";
+ protected static final String FILE_PREFIX_TAG_RESOURCE_MAP = "ranger-tagresourcemap-";
+ private String tagDataDir = null;
+ private long nextTagDefId = 0;
+ private long nextTagId = 0;
+ private long nextServiceResourceId = 0;
+ private long nextTagResourceMapId = 0;
private TagPredicateUtil predicateUtil = null;
- private FileStoreUtil fileStoreUtil = null;
+ private FileStoreUtil fileStoreUtil = null;
private volatile static TagFileStore instance = null;
@@ -78,9 +82,7 @@ public class TagFileStore extends AbstractTagStore {
fileStoreUtil = new FileStoreUtil();
predicateUtil = new TagPredicateUtil();
- if (LOG.isDebugEnabled())
-
- {
+ if (LOG.isDebugEnabled()) {
LOG.debug("<== TagFileStore.TagFileStore()");
}
}
@@ -103,6 +105,7 @@ public class TagFileStore extends AbstractTagStore {
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagFileStore.initStore()");
}
+
fileStoreUtil.initStore(tagDataDir);
if (LOG.isDebugEnabled()) {
@@ -116,13 +119,13 @@ public class TagFileStore extends AbstractTagStore {
LOG.debug("==> TagFileStore.createTagDef(" + tagDef + ")");
}
- List<RangerTagDef> existing = getTagDef(tagDef.getName());
+ List<RangerTagDef> existing = getTagDefsByName(tagDef.getName());
if (CollectionUtils.isNotEmpty(existing)) {
throw new Exception(tagDef.getName() + ": tag-def already exists (id=" + existing.get(0).getId() + ")");
}
- RangerTagDef ret;
+ RangerTagDef ret = null;
try {
preCreate(tagDef);
@@ -154,11 +157,13 @@ public class TagFileStore extends AbstractTagStore {
RangerTagDef existing = null;
if(tagDef.getId() == null) {
- List<RangerTagDef> existingDefs = getTagDef(tagDef.getName());
+ List<RangerTagDef> existingDefs = getTagDefsByName(tagDef.getName());
if (CollectionUtils.isEmpty(existingDefs)) {
throw new Exception("tag-def does not exist: name=" + tagDef.getName());
}
+
+ existing = existingDefs.get(0);
} else {
existing = this.getTagDefById(tagDef.getId());
@@ -167,8 +172,7 @@ public class TagFileStore extends AbstractTagStore {
}
}
-
- RangerTagDef ret;
+ RangerTagDef ret = null;
try {
preUpdate(existing);
@@ -198,77 +202,106 @@ public class TagFileStore extends AbstractTagStore {
LOG.debug("==> TagFileStore.deleteTagDef(" + name + ")");
}
- List<RangerTagDef> existingDefs = getTagDef(name);
+ List<RangerTagDef> existingDefs = getTagDefsByName(name);
- if (CollectionUtils.isEmpty(existingDefs)) {
- throw new Exception("no tag-def exists with name=" + name);
+ if (CollectionUtils.isNotEmpty(existingDefs)) {
+ try {
+ for(RangerTagDef existing : existingDefs) {
+ deleteTagDef(existing);
+ }
+ } catch (Exception excp) {
+ throw new Exception("failed to delete tag-def with ID=" + name, excp);
+ }
}
- try {
- for(RangerTagDef existing : existingDefs) {
- Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG_DEF, existing.getId()));
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.deleteTagDef(" + name + ")");
+ }
+ }
- preDelete(existing);
+ @Override
+ public void deleteTagDefById(Long id) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.deleteTagDefById(" + id + ")");
+ }
- fileStoreUtil.deleteFile(filePath);
+ RangerTagDef existing = getTagDefById(id);
- postDelete(existing);
- }
- } catch (Exception excp) {
- throw new Exception("failed to delete tag-def with ID=" + name, excp);
+ if(existing != null) {
+ deleteTagDef(existing);
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.deleteTagDef(" + name + ")");
+ LOG.debug("<== TagFileStore.deleteTagDefById(" + id + ")");
+ }
+ }
+
+ @Override
+ public RangerTagDef getTagDefById(Long id) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagDefById(" + id + ")");
+ }
+
+ RangerTagDef ret = null;
+
+ if (id != null) {
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_ID, id.toString());
+
+ List<RangerTagDef> tagDefs = getTagDefs(filter);
+
+ ret = CollectionUtils.isEmpty(tagDefs) ? null : tagDefs.get(0);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagDefById(" + id + "): " + ret);
}
+ return ret;
}
@Override
- public List<RangerTagDef> getTagDef(String name) throws Exception {
+ public RangerTagDef getTagDefByGuid(String guid) throws Exception {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> TagFileStore.getTagDef(" + name + ")");
+ LOG.debug("==> TagFileStore.getTagDefByGuid(" + guid + ")");
}
- List<RangerTagDef> ret;
+ RangerTagDef ret = null;
- if (StringUtils.isNotBlank(name)) {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name);
+ if (StringUtils.isNotBlank(guid)) {
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_GUID, guid);
List<RangerTagDef> tagDefs = getTagDefs(filter);
- ret = CollectionUtils.isEmpty(tagDefs) ? null : tagDefs;
- } else {
- ret = null;
+ if(CollectionUtils.isNotEmpty(tagDefs)) {
+ ret = tagDefs.get(0);
+ }
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.getTagDef(" + name + "): " + ret);
+ LOG.debug("<== TagFileStore.getTagDefByGuid(" + guid + "): " + ret);
}
return ret;
}
@Override
- public RangerTagDef getTagDefById(Long id) throws Exception {
+ public List<RangerTagDef> getTagDefsByName(String name) throws Exception {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> TagFileStore.getTagDefById(" + id + ")");
+ LOG.debug("==> TagFileStore.getTagDef(" + name + ")");
}
- RangerTagDef ret;
+ List<RangerTagDef> ret = null;
- if (id != null) {
- SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_ID, id.toString());
+ if (StringUtils.isNotBlank(name)) {
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name);
List<RangerTagDef> tagDefs = getTagDefs(filter);
- ret = CollectionUtils.isEmpty(tagDefs) ? null : tagDefs.get(0);
- } else {
- ret = null;
+ ret = CollectionUtils.isEmpty(tagDefs) ? null : tagDefs;
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.getTagDefById(" + id + "): " + ret);
+ LOG.debug("<== TagFileStore.getTagDef(" + name + "): " + ret);
}
return ret;
@@ -276,7 +309,6 @@ public class TagFileStore extends AbstractTagStore {
@Override
public List<RangerTagDef> getTagDefs(SearchFilter filter) throws Exception {
-
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagFileStore.getTagDefs()");
}
@@ -285,25 +317,43 @@ public class TagFileStore extends AbstractTagStore {
if (CollectionUtils.isNotEmpty(ret) && filter != null && !filter.isEmpty()) {
CollectionUtils.filter(ret, predicateUtil.getPredicate(filter));
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagDefs(): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
+ }
+
+ @Override
+ public PList<RangerTagDef> getPaginatedTagDefs(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getPaginatedTagDefs()");
+ }
- //Comparator<RangerBaseModelObject> comparator = getSorter(filter);
+ PList<RangerTagDef> ret = null;
- //if(comparator != null) {
- //Collections.sort(ret, comparator);
- //}
+ List<RangerTagDef> list = getTagDefs(filter);
+
+ if(list != null) {
+ ret = new PList<RangerTagDef>(list, 0, list.size(), list.size(), list.size(), filter.getSortType(), filter.getSortBy());
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.getTagDefs(): count=" + (ret == null ? 0 : ret.size()));
+ LOG.debug("<== TagFileStore.getPaginatedTagDefs(): count=" + (ret == null ? 0 : ret.getPageSize()));
}
return ret;
}
@Override
- public RangerTag createTag(RangerTag tag) throws Exception
- {
- RangerTag ret;
+ public RangerTag createTag(RangerTag tag) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.createTag(" + tag + ")");
+ }
+
+ RangerTag ret = null;
try {
preCreate(tag);
@@ -320,16 +370,19 @@ public class TagFileStore extends AbstractTagStore {
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.createTag(" + tag + ")");
+ LOG.debug("<== TagFileStore.createTag(" + tag + "): " + ret);
}
return ret;
}
@Override
- public RangerTag updateTag(RangerTag tag) throws Exception
- {
- RangerTag ret;
+ public RangerTag updateTag(RangerTag tag) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.updateTag(" + tag + ")");
+ }
+
+ RangerTag ret = null;
try {
preUpdate(tag);
@@ -344,7 +397,7 @@ public class TagFileStore extends AbstractTagStore {
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.updateTag(" + tag + ")");
+ LOG.debug("<== TagFileStore.updateTag(" + tag + "): " + ret);
}
return ret;
@@ -353,33 +406,126 @@ public class TagFileStore extends AbstractTagStore {
@Override
public void deleteTagById(Long id) throws Exception {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> TagFileStore.deleteTag(" + id + ")");
+ LOG.debug("==> TagFileStore.deleteTagById(" + id + ")");
}
try {
RangerTag tag = getTagById(id);
- Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG, tag.getId()));
+ deleteTag(tag);
+ } catch (Exception excp) {
+ throw new Exception("failed to delete tag with ID=" + id, excp);
+ }
- preDelete(tag);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.deleteTagById(" + id + ")");
+ }
+ }
- fileStoreUtil.deleteFile(filePath);
+ @Override
+ public RangerTag getTagById(Long id) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagById(" + id + ")");
+ }
- postDelete(tag);
+ RangerTag ret = null;
- } catch (Exception excp) {
- throw new Exception("failed to delete tag with ID=" + id, excp);
+ if (id != null) {
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_ID, id.toString());
+
+ List<RangerTag> tags = getTags(filter);
+
+ if (CollectionUtils.isNotEmpty(tags) && CollectionUtils.size(tags) == 1) {
+ ret = tags.get(0);
+ }
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.deleteTag(" + id + ")");
+ LOG.debug("<== TagFileStore.getTagDefById(" + id + "): " + ret);
}
+
+ return ret;
}
@Override
- public List<RangerTag> getTags(SearchFilter filter) throws Exception {
+ public RangerTag getTagByGuid(String guid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagByGuid(" + guid + ")");
+ }
+
+ RangerTag ret = null;
+
+ if (guid != null) {
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_GUID, guid);
+
+ List<RangerTag> tags = getTags(filter);
+
+ if (CollectionUtils.isNotEmpty(tags) && CollectionUtils.size(tags) == 1) {
+ ret = tags.get(0);
+ }
+ }
if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagByGuid(" + guid + "): " + ret);
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<RangerTag> getTagsByName(String name) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagsByName(" + name + ")");
+ }
+
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_NAME, name);
+
+ List<RangerTag> ret = getTags(filter);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagsByName(" + name + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<RangerTag> getTagsForResourceId(Long resourceId) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagsForResourceId(" + resourceId + ")");
+ }
+
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_RESOURCE_ID, resourceId.toString());
+
+ List<RangerTag> ret = getTags(filter);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagsForResourceId(" + resourceId + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<RangerTag> getTagsForResourceGuid(String resourceGuid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagsForResourceGuid(" + resourceGuid + ")");
+ }
+
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_RESOURCE_GUID, resourceGuid);
+
+ List<RangerTag> ret = getTags(filter);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagsForResourceGuid(" + resourceGuid + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<RangerTag> getTags(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
LOG.debug("==> TagFileStore.getTags()");
}
@@ -396,10 +542,35 @@ public class TagFileStore extends AbstractTagStore {
return ret;
}
+ @Override
+ public PList<RangerTag> getPaginatedTags(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getPaginatedTags()");
+ }
+
+ PList<RangerTag> ret = null;
+
+ List<RangerTag> list = getTags(filter);
+
+ if(list != null) {
+ ret = new PList<RangerTag>(list, 0, list.size(), list.size(), list.size(), filter.getSortType(), filter.getSortBy());
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getPaginatedTags(): count=" + (ret == null ? 0 : ret.getPageSize()));
+ }
+
+ return ret;
+ }
+
@Override
public RangerServiceResource createServiceResource(RangerServiceResource resource) throws Exception {
- RangerServiceResource ret;
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.createServiceResource(" + resource + ")");
+ }
+
+ RangerServiceResource ret = null;
try {
preCreate(resource);
@@ -416,7 +587,7 @@ public class TagFileStore extends AbstractTagStore {
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.createServiceResource(" + resource + ")");
+ LOG.debug("<== TagFileStore.createServiceResource(" + resource + "): " + ret);
}
return ret;
@@ -427,7 +598,8 @@ public class TagFileStore extends AbstractTagStore {
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagFileStore.updateServiceResource(" + resource + ")");
}
- RangerServiceResource ret;
+
+ RangerServiceResource ret = null;
try {
preUpdate(resource);
@@ -442,7 +614,7 @@ public class TagFileStore extends AbstractTagStore {
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.updateServiceResource(" + resource + ")");
+ LOG.debug("<== TagFileStore.updateServiceResource(" + resource + "): " + ret);
}
return ret;
@@ -452,27 +624,87 @@ public class TagFileStore extends AbstractTagStore {
@Override
public void deleteServiceResourceById(Long id) throws Exception {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> TagFileStore.deleteServiceResource(" + id + ")");
+ LOG.debug("==> TagFileStore.deleteServiceResourceById(" + id + ")");
}
try {
RangerServiceResource resource = getServiceResourceById(id);
- Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_RESOURCE, resource.getId()));
+ deleteServiceResource(resource);
+ } catch (Exception excp) {
+ throw new Exception("failed to delete service-resource with ID=" + id, excp);
+ }
- preDelete(resource);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.deleteServiceResourceById(" + id + ")");
+ }
+ }
- fileStoreUtil.deleteFile(filePath);
+ @Override
+ public RangerServiceResource getServiceResourceById(Long id) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getServiceResourceById(" + id + ")");
+ }
- postDelete(resource);
+ RangerServiceResource ret = null;
- } catch (Exception excp) {
- throw new Exception("failed to delete service-resource with ID=" + id, excp);
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_RESOURCE_ID, id.toString());
+
+ List<RangerServiceResource> resources = getServiceResources(filter);
+
+ if (CollectionUtils.isNotEmpty(resources)) {
+ ret = resources.get(0);
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.deleteServiceResource(" + id + ")");
+ LOG.debug("<== TagFileStore.getServiceResourceById(" + id + "): " + ret);
}
+
+ return ret;
+ }
+
+ @Override
+ public RangerServiceResource getServiceResourceByGuid(String guid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getServiceResourcesByGuid(" + guid + ")");
+ }
+
+ RangerServiceResource ret = null;
+
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_RESOURCE_GUID, guid);
+
+ List<RangerServiceResource> resources = getServiceResources(filter);
+
+ if (CollectionUtils.isNotEmpty(resources)) {
+ ret = resources.get(0);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getServiceResourcesByGuid(" + guid + "): " + ret);
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<RangerServiceResource> getServiceResourcesByServiceAndResourceSpec(String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getServiceResourcesByServiceAndResourceSpec(" + serviceName + ", " + resourceSpec + ")");
+ }
+
+ List<RangerServiceResource> ret = null;
+
+ if (MapUtils.isNotEmpty(resourceSpec)) {
+ RangerServiceResource resource = new RangerServiceResource(serviceName, resourceSpec);
+
+ ret = getServiceResources(resource);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getServiceResourcesByServiceAndResourceSpec(" + serviceName + ", " + resourceSpec + "): count=" + (ret == null ? 0 : ret.size()));
+ }
+
+ return ret;
}
@Override
@@ -495,18 +727,45 @@ public class TagFileStore extends AbstractTagStore {
}
@Override
- public RangerTagResourceMap createTagResourceMap(RangerTagResourceMap tagResourceMap) throws Exception {
+ public PList<RangerServiceResource> getPaginatedServiceResources(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getPaginatedServiceResources()");
+ }
+
+ PList<RangerServiceResource> ret = null;
- RangerTagResourceMap ret;
+ List<RangerServiceResource> list = getServiceResources(filter);
+
+ if(list != null) {
+ ret = new PList<RangerServiceResource>(list, 0, list.size(), list.size(), list.size(), filter.getSortType(), filter.getSortBy());
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getPaginatedServiceResources(): count=" + (ret == null ? 0 : ret.getPageSize()));
+ }
+
+ return ret;
+ }
+
+
+ @Override
+ public RangerTagResourceMap createTagResourceMap(RangerTagResourceMap tagResourceMap) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.createTagResourceMap(" + tagResourceMap + ")");
+ }
preCreate(tagResourceMap);
tagResourceMap.setId(nextTagResourceMapId);
- ret = fileStoreUtil.saveToFile(tagResourceMap, new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG_RESOURCE_MAP, nextTagResourceMapId++)), false);
+ RangerTagResourceMap ret = fileStoreUtil.saveToFile(tagResourceMap, new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG_RESOURCE_MAP, nextTagResourceMapId++)), false);
postCreate(ret);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.createTagResourceMap(" + tagResourceMap + "): " + ret);
+ }
+
return ret;
}
@@ -519,21 +778,178 @@ public class TagFileStore extends AbstractTagStore {
try {
RangerTagResourceMap tagResourceMap = getTagResourceMapById(id);
- Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG_RESOURCE_MAP, tagResourceMap.getId()));
+ deleteTagResourceMap(tagResourceMap);
+ } catch (Exception excp) {
+ throw new Exception("failed to delete tagResourceMap with ID=" + id, excp);
+ }
- preDelete(tagResourceMap);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.deleteTagResourceMapById(" + id + ")");
+ }
+ }
- fileStoreUtil.deleteFile(filePath);
+ @Override
+ public RangerTagResourceMap getTagResourceMapById(Long id) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagResourceMapById(" + id + ")");
+ }
- postDelete(tagResourceMap);
+ RangerTagResourceMap ret = null;
- } catch (Exception excp) {
- throw new Exception("failed to delete tagResourceMap with ID=" + id, excp);
+ SearchFilter filter = new SearchFilter();
+
+ filter.setParam(SearchFilter.TAG_MAP_ID, id.toString());
+
+ List<RangerTagResourceMap> list = getTagResourceMaps(filter);
+
+ if (CollectionUtils.isNotEmpty(list)) {
+ ret = list.get(0);
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.deleteTagResourceMapById(" + id + ")");
+ LOG.debug("<== TagFileStore.getTagResourceMapById(" + id + "): " + ret);
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<RangerTagResourceMap> getTagResourceMapsForTagId(Long tagId) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagResourceMapsForTagId(" + tagId + ")");
+ }
+
+ SearchFilter filter = new SearchFilter();
+
+ filter.setParam(SearchFilter.TAG_ID, tagId.toString());
+
+ List<RangerTagResourceMap> ret = getTagResourceMaps(filter);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagResourceMapsForTagId(" + tagId + "): " + ret);
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<RangerTagResourceMap> getTagResourceMapsForTagGuid(String tagGuid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagResourceMapsForTagGuid(" + tagGuid + ")");
+ }
+
+ List<RangerTagResourceMap> ret = null;
+
+ RangerTag tag = getTagByGuid(tagGuid);
+
+ if(tag != null) {
+ SearchFilter filter = new SearchFilter();
+ filter.setParam(SearchFilter.TAG_ID, tag.getId().toString());
+
+ ret = getTagResourceMaps(filter);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagResourceMapsForTagGuid(" + tagGuid + "): " + ret);
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<RangerTagResourceMap> getTagResourceMapsForResourceId(Long resourceId) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagResourceMapById(" + resourceId + ")");
+ }
+
+ SearchFilter filter = new SearchFilter();
+
+ filter.setParam(SearchFilter.TAG_RESOURCE_ID, resourceId.toString());
+
+ List<RangerTagResourceMap> ret = getTagResourceMaps(filter);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagResourceMapById(" + resourceId + "): " + ret);
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<RangerTagResourceMap> getTagResourceMapsForResourceGuid(String resourceGuid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagResourceMapsForResourceGuid(" + resourceGuid + ")");
+ }
+
+ SearchFilter filter = new SearchFilter();
+
+ RangerServiceResource resource = getServiceResourceByGuid(resourceGuid);
+ filter.setParam(SearchFilter.TAG_RESOURCE_ID, resource.getId().toString());
+
+ List<RangerTagResourceMap> ret = getTagResourceMaps(filter);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagResourceMapsForResourceGuid(" + resourceGuid + "): " + ret);
+ }
+
+ return ret;
+ }
+
+ @Override
+ public RangerTagResourceMap getTagResourceMapForTagAndResourceId(Long tagId, Long resourceId) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagResourceMapForTagAndResourceId(" + tagId + ", " + resourceId + ")");
+ }
+
+ RangerTagResourceMap ret = null;
+
+ SearchFilter filter = new SearchFilter();
+
+ filter.setParam(SearchFilter.TAG_ID, tagId.toString());
+ filter.setParam(SearchFilter.TAG_RESOURCE_ID, resourceId.toString());
+
+ List<RangerTagResourceMap> tagResourceMaps = getTagResourceMaps(filter);
+
+ if(CollectionUtils.isNotEmpty(tagResourceMaps)) {
+ ret = tagResourceMaps.get(0);
}
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagResourceMapForTagAndResourceId(" + tagId + ", " + resourceId + "): " + ret);
+ }
+
+ return ret;
+ }
+
+ @Override
+ public RangerTagResourceMap getTagResourceMapForTagAndResourceGuid(String tagGuid, String resrouceGuid) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTagResourceMapForTagAndResourceGuid(" + tagGuid + ", " + resrouceGuid + ")");
+ }
+
+ RangerTagResourceMap ret = null;
+
+ SearchFilter filter = new SearchFilter();
+
+ RangerTag tag = getTagByGuid(tagGuid);
+ RangerServiceResource resource = getServiceResourceByGuid(resrouceGuid);
+
+ if(tag != null && resource != null) {
+ filter.setParam(SearchFilter.TAG_ID, tag.getId().toString());
+ filter.setParam(SearchFilter.TAG_RESOURCE_ID, resource.getId().toString());
+
+ List<RangerTagResourceMap> tagResourceMaps = getTagResourceMaps(filter);
+
+ if(CollectionUtils.isNotEmpty(tagResourceMaps)) {
+ ret = tagResourceMaps.get(0);
+ }
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTagResourceMapForTagAndResourceGuid(" + tagGuid + ", " + resrouceGuid + "): " + ret);
+ }
+
+ return ret;
}
@Override
@@ -556,6 +972,190 @@ public class TagFileStore extends AbstractTagStore {
}
+ @Override
+ public PList<RangerTagResourceMap> getPaginatedTagResourceMaps(SearchFilter filter) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getPaginatedTagResourceMaps()");
+ }
+
+ PList<RangerTagResourceMap> ret = null;
+
+ List<RangerTagResourceMap> list = getTagResourceMaps(filter);
+
+ if(CollectionUtils.isNotEmpty(list)) {
+ ret = new PList<RangerTagResourceMap>(list, 0, list.size(), list.size(), list.size(), filter.getSortType(), filter.getSortBy());
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getPaginatedTagResourceMaps(): count=" + (ret == null ? 0 : ret.getPageSize()));
+ }
+
+ return ret;
+ }
+
+
+ @Override
+ public ServiceTags getServiceTagsIfUpdated(String serviceName, Long lastKnownVersion) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getServiceTagsIfUpdated(" + serviceName + ", " + lastKnownVersion + ")");
+ }
+
+ ServiceTags ret = new ServiceTags();
+
+ boolean tagsChanged = true;
+
+ RangerService service = null;
+
+ try {
+ service = svcStore.getServiceByName(serviceName);
+ ret.setServiceName(serviceName);
+ } catch (Exception exception) {
+ LOG.error("Cannot find service for serviceName=" + serviceName);
+ tagsChanged = false;
+ }
+
+ if (lastKnownVersion != null
+ && service != null && service.getTagVersion() != null
+ && lastKnownVersion.compareTo(service.getTagVersion()) >= 0 ) {
+ tagsChanged = false;
+ }
+
+ if (tagsChanged) {
+ SearchFilter filter = new SearchFilter();
+
+ filter.setParam(SearchFilter.TAG_RESOURCE_SERVICE_NAME, serviceName);
+
+ List<RangerServiceResource> serviceResources = getServiceResources(filter);
+
+ Map<Long, RangerTag> tagsMap = new HashMap<Long, RangerTag>();
+ Map<Long, List<Long>> resourceToTagIdsMap = new HashMap<Long, List<Long>>();
+
+ for (RangerServiceResource serviceResource : serviceResources) {
+ List<RangerTag> tagList = getTagsForServiceResourceObject(serviceResource);
+
+ if (CollectionUtils.isNotEmpty(tagList)) {
+ List<Long> tagIdList = new ArrayList<Long>();
+ for (RangerTag tag : tagList) {
+ tagsMap.put(tag.getId(), tag);
+ tagIdList.add(tag.getId());
+ }
+ resourceToTagIdsMap.put(serviceResource.getId(), tagIdList);
+ }
+ }
+
+ if (MapUtils.isEmpty(resourceToTagIdsMap)) {
+ serviceResources.clear();
+ }
+
+ ret.setServiceResources(serviceResources);
+ ret.setResourceToTagIds(resourceToTagIdsMap);
+ ret.setTags(tagsMap);
+
+ if (service != null && service.getTagVersion() != null) {
+ ret.setTagVersion(service.getTagVersion());
+ }
+ if (service != null && service.getTagUpdateTime() != null) {
+ ret.setTagUpdateTime(service.getTagUpdateTime());
+ }
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Changes to tagVersion detected, tagVersion in service=" + (service == null ? null : service.getTagVersion())
+ + ", Plugin-provided lastKnownVersion=" + lastKnownVersion);
+ }
+ } else {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("No changes to tagVersion detected, tagVersion in service=" + (service == null ? null : service.getTagVersion())
+ + ", Plugin-provided lastKnownVersion=" + lastKnownVersion);
+ }
+ ret.setTagVersion(lastKnownVersion);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getServiceTagsIfUpdated(" + serviceName + ", " + lastKnownVersion + "): " + ret);
+ }
+
+ return ret;
+
+ }
+
+ @Override
+ public List<String> getTags(String serviceName) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.getTags(" + serviceName + ")");
+ }
+
+ List<String> ret = new ArrayList<String>();
+
+ // Ignore serviceName
+ List<RangerTag> allTags = getAllTags();
+
+ for (RangerTag tag : allTags) {
+ ret.add(tag.getName());
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.getTags(" + serviceName + "): count=" + ret.size());
+ }
+
+ return ret;
+ }
+
+ @Override
+ public List<String> lookupTags(String serviceName, String tagNamePattern) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagFileStore.lookupTags(" + serviceName + ", " + tagNamePattern + ")");
+ }
+
+ List<String> ret = new ArrayList<String>();
+ List<String> tags = getTags(serviceName);
+
+ if (CollectionUtils.isNotEmpty(tags)) {
+ Pattern p = Pattern.compile(tagNamePattern);
+ for (String tagName : tags) {
+ Matcher m = p.matcher(tagName);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("TagFileStore.lookupTags) - Trying to match .... tagNamePattern=" + tagNamePattern + ", tagName=" + tagName);
+ }
+
+ if (m.matches()) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("TagFileStore.lookupTags) - Match found.... tagNamePattern=" + tagNamePattern + ", tagName=" + tagName);
+ }
+
+ ret.add(tagName);
+ }
+ }
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagFileStore.lookupTags(" + serviceName + ", " + tagNamePattern + "): count=" + ret.size());
+ }
+
+ return ret;
+ }
+
+ private List<RangerTag> getTagsForServiceResourceObject(RangerServiceResource serviceResource) throws Exception {
+
+ List<RangerTag> tagList = new ArrayList<RangerTag>();
+
+ if (serviceResource != null) {
+ SearchFilter mapFilter = new SearchFilter();
+ mapFilter.setParam(SearchFilter.TAG_RESOURCE_ID, serviceResource.getId().toString());
+
+ List<RangerTagResourceMap> associations = getTagResourceMaps(mapFilter);
+ if (CollectionUtils.isNotEmpty(associations)) {
+
+ for (RangerTagResourceMap association : associations) {
+ RangerTag tag = getTagById(association.getTagId());
+ if (tag != null) {
+ tagList.add(tag);
+ }
+ }
+ }
+ }
+ return tagList;
+ }
+
private List<RangerTagDef> getAllTagDefs() throws Exception {
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagFileStore.getAllTagDefs()");
@@ -712,62 +1312,58 @@ public class TagFileStore extends AbstractTagStore {
return ret;
}
- @Override
- public List<String> getTags(String serviceName) throws Exception {
+ private void deleteTagDef(RangerTagDef tagDef) throws Exception {
+ Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG_DEF, tagDef.getId()));
- if (LOG.isDebugEnabled()) {
- LOG.debug("==> TagFileStore.getTags(" + serviceName + ")");
- }
+ preDelete(tagDef);
- // Ignore serviceName
- List<RangerTag> allTags = getAllTags();
+ fileStoreUtil.deleteFile(filePath);
- List<String> ret = new ArrayList<String>();
+ postDelete(tagDef);
+ }
- for (RangerTag tag : allTags) {
- ret.add(tag.getName());
- }
+ private void deleteTag(RangerTag tag) throws Exception {
+ Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG, tag.getId()));
- return ret;
+ preDelete(tag);
+
+ fileStoreUtil.deleteFile(filePath);
+
+ postDelete(tag);
}
- @Override
- public List<String> lookupTags(String serviceName, String tagNamePattern) throws Exception {
+ private void deleteServiceResource(RangerServiceResource resource) throws Exception {
+ Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_RESOURCE, resource.getId()));
- if (LOG.isDebugEnabled()) {
- LOG.debug("==> TagFileStore.lookupTags(" + serviceName + ", " + tagNamePattern + ")");
- }
+ preDelete(resource);
- List<String> tagNameList = getTags(serviceName);
- List<String> matchedTagList = new ArrayList<String>();
+ fileStoreUtil.deleteFile(filePath);
- if (CollectionUtils.isNotEmpty(tagNameList)) {
- Pattern p = Pattern.compile(tagNamePattern);
- for (String tagName : tagNameList) {
- Matcher m = p.matcher(tagName);
- if (LOG.isDebugEnabled()) {
- LOG.debug("TagFileStore.lookupTags) - Trying to match .... tagNamePattern=" + tagNamePattern + ", tagName=" + tagName);
- }
- if (m.matches()) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("TagFileStore.lookupTags) - Match found.... tagNamePattern=" + tagNamePattern + ", tagName=" + tagName);
- }
- matchedTagList.add(tagName);
- }
- }
- }
+ postDelete(resource);
+ }
- if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagFileStore.lookupTags(" + serviceName + ", " + tagNamePattern + ")");
- }
+ private void deleteTagResourceMap(RangerTagResourceMap tagResourceMap) throws Exception {
+ Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG_RESOURCE_MAP, tagResourceMap.getId()));
+
+ preDelete(tagResourceMap);
+
+ fileStoreUtil.deleteFile(filePath);
- return matchedTagList;
+ postDelete(tagResourceMap);
}
- @Override
- public void deleteTagDefById(Long id) throws Exception {
- // TODO Auto-generated method stub
+ private List<RangerServiceResource> getServiceResources(RangerServiceResource resource) throws Exception {
+
+ List<RangerServiceResource> ret = null;
+
+ RangerServiceResourceSignature serializer = new RangerServiceResourceSignature(resource);
+ String signature = serializer.getSignature();
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_RESOURCE_SIGNATURE, signature);
+
+ ret = getServiceResources(filter);
+
+ return ret;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
index 9dc4994..743df88 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
@@ -51,23 +51,17 @@ public class SearchFilter {
public static final String RESOURCE_SIGNATURE = "resourceSignature:"; // search
public static final String POLICY_TYPE = "policyType"; // search
- public static final String TAG_DEF_ID = "tagDefId"; // search
- public static final String TAG_DEF_EXTERNAL_ID = "tagDefExtId"; // search
- public static final String TAG_DEF_NAME = "tagDefName"; // search
-
- public static final String TAG_ID = "tagId"; // search
- public static final String TAG_EXTERNAL_ID = "tagExternalId"; // search
- public static final String TAG_NAME = "tagName"; // search
-
- public static final String TAG_RESOURCE_ID = "resourceId"; // search
- public static final String TAG_RESOURCE_EXTERNAL_ID = "externalResourceId"; // search
- public static final String TAG_RESOURCE_SERVICE_NAME = "resourceServiceName"; // search
- public static final String TAG_RESOURCE_SIGNATURE = "resourceSignature"; // search
-
-
- public static final String TAG_MAP_ID = "tagResourceMapId"; // search
- public static final String TAG_MAP_RESOURCE_ID = "tagResourceMapResourceId"; // search
- public static final String TAG_MAP_TAG_ID = "tagResourceMapTagId"; // search
+ public static final String TAG_DEF_ID = "tagDefId"; // search
+ public static final String TAG_DEF_GUID = "tagDefGuid"; // search
+ public static final String TAG_DEF_NAME = "tagDefName"; // search
+ public static final String TAG_ID = "tagId"; // search
+ public static final String TAG_GUID = "tagGuid"; // search
+ public static final String TAG_NAME = "tagName"; // search
+ public static final String TAG_RESOURCE_ID = "resourceId"; // search
+ public static final String TAG_RESOURCE_GUID = "resourceGuid"; // search
+ public static final String TAG_RESOURCE_SERVICE_NAME = "resourceServiceName"; // search
+ public static final String TAG_RESOURCE_SIGNATURE = "resourceSignature"; // search
+ public static final String TAG_MAP_ID = "tagResourceMapId"; // search
private Map<String, String> params = null;
private int startIndex = 0;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java
index 3159b2b..e56e942 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java
@@ -44,13 +44,13 @@ import org.codehaus.jackson.map.annotate.JsonSerialize;
public class ServiceTags implements java.io.Serializable {
private static final long serialVersionUID = 1L;
- private String serviceName;
- private Long tagVersion;
- private Date tagUpdateTime;
- Map<Long, RangerTagDef> tagDefinitions;
- Map<Long, RangerTag> tags;
- List<RangerServiceResource> serviceResources;
- Map<Long, List<Long>> resourceToTagIds;
+ private String serviceName;
+ private Long tagVersion;
+ private Date tagUpdateTime;
+ private Map<Long, RangerTagDef> tagDefinitions;
+ private Map<Long, RangerTag> tags;
+ private List<RangerServiceResource> serviceResources;
+ private Map<Long, List<Long>> resourceToTagIds;
/**
* @return the serviceName
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/agents-common/src/test/java/org/apache/ranger/plugin/store/TestTagStore.java
----------------------------------------------------------------------
diff --git a/agents-common/src/test/java/org/apache/ranger/plugin/store/TestTagStore.java b/agents-common/src/test/java/org/apache/ranger/plugin/store/TestTagStore.java
index 797b083..e0f4865 100644
--- a/agents-common/src/test/java/org/apache/ranger/plugin/store/TestTagStore.java
+++ b/agents-common/src/test/java/org/apache/ranger/plugin/store/TestTagStore.java
@@ -35,14 +35,10 @@ import org.apache.hadoop.fs.*;
import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.model.*;
import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
-import org.apache.ranger.plugin.policyengine.RangerAccessRequest;
-import org.apache.ranger.plugin.policyengine.RangerAccessResource;
import org.apache.ranger.plugin.store.file.ServiceFileStore;
import org.apache.ranger.plugin.store.file.TagFileStore;
-import org.apache.ranger.plugin.store.rest.ServiceRESTStore;
import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.plugin.util.ServiceTags;
-import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -201,8 +197,8 @@ public class TestTagStore {
@Test
public void testTagStore_serviceresource() throws Exception {
- String externalId = "GUID_SERVICERESOURCE_TEST";
- String newExternalId = "NEW_GUID_SERVICERESOURCE_TEST";
+ String guid = "GUID_SERVICERESOURCE_TEST";
+ String newGuid = "NEW_GUID_SERVICERESOURCE_TEST";
Map<String, RangerPolicyResource> resourceResources = new HashMap<String, RangerPolicyResource>();
@@ -217,7 +213,7 @@ public class TestTagStore {
RangerServiceResource serviceResource = new RangerServiceResource();
serviceResource.setServiceName(serviceName);
serviceResource.setResourceSpec(resourceResources);
- serviceResource.setGuid(externalId);
+ serviceResource.setGuid(guid);
validator.preCreateServiceResource(serviceResource);
RangerServiceResource createdServiceResource = tagStore.createServiceResource(serviceResource);
@@ -229,7 +225,7 @@ public class TestTagStore {
assertEquals("createServiceResource() failed", initServiceResourceCount + 1, serviceResources == null ? 0 : serviceResources.size());
- createdServiceResource.setGuid(newExternalId);
+ createdServiceResource.setGuid(newGuid);
validator.preUpdateServiceResourceById(createdServiceResource.getId(), createdServiceResource);
RangerServiceResource updatedServiceResource = tagStore.updateServiceResource(createdServiceResource);
@@ -259,15 +255,15 @@ public class TestTagStore {
String tagName = "ssn";
- String externalResourceId = "GUID_SERVICERESOURCE_TEST";
- String externalTagId = "GUID_TAG_TEST";
+ String resourceGuid = "GUID_SERVICERESOURCE_TEST";
+ String tagGuid = "GUID_TAG_TEST";
List<RangerTag> tags = tagStore.getTags(filter);
int initTagCount = tags == null ? 0 : tags.size();
RangerTag tag = new RangerTag(tagName, new HashMap<String, String>());
- tag.setGuid(externalTagId);
+ tag.setGuid(tagGuid);
validator.preCreateTag(tag);
RangerTag createdTag = tagStore.createTag(tag);
@@ -291,7 +287,7 @@ public class TestTagStore {
serviceResource.setServiceName(serviceName);
serviceResource.setResourceSpec(resourceResources);
- serviceResource.setGuid(externalResourceId);
+ serviceResource.setGuid(resourceGuid);
validator.preCreateServiceResource(serviceResource);
RangerServiceResource createdServiceResource = tagStore.createServiceResource(serviceResource);
@@ -303,7 +299,7 @@ public class TestTagStore {
// Now create map
- RangerTagResourceMap tagResourceMap = validator.preCreateTagResourceMap(externalResourceId, externalTagId);
+ RangerTagResourceMap tagResourceMap = validator.preCreateTagResourceMap(tagGuid, resourceGuid);
RangerTagResourceMap createdTagResourceMap = tagStore.createTagResourceMap(tagResourceMap);
@@ -315,7 +311,7 @@ public class TestTagStore {
assertTrue("No tagged resources found!", CollectionUtils.isNotEmpty(resourceList) && CollectionUtils.size(resourceList) == 1);
// Delete all created entities
- RangerTagResourceMap map = validator.preDeleteTagResourceMap(externalResourceId, externalTagId);
+ RangerTagResourceMap map = validator.preDeleteTagResourceMap(tagGuid, resourceGuid);
tagStore.deleteTagResourceMapById(map.getId());
validator.preDeleteServiceResourceById(createdServiceResource.getId());
[2/4] incubator-ranger git commit: RANGER-595: updated tag-store
implementation; replaced externalId references with guid;
service.tagVersion incremented on changes to tagging for the service-resources
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java
index 087eb8d..69c4e4d 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java
@@ -96,6 +96,25 @@ public abstract class XXServiceBase extends XXDBBase {
protected Date policyUpdateTime;
/**
+ * tagVersion of the XXService
+ * <ul>
+ * </ul>
+ *
+ */
+ @Column(name = "tag_version")
+ protected Long tagVersion;
+
+ /**
+ * tagUpdateTime of the XXService
+ * <ul>
+ * </ul>
+ *
+ */
+ @Temporal(TemporalType.TIMESTAMP)
+ @Column(name = "tag_update_time")
+ protected Date tagUpdateTime;
+
+ /**
* description of the XXService
* <ul>
* </ul>
@@ -248,6 +267,46 @@ public abstract class XXServiceBase extends XXDBBase {
}
/**
+ * This method sets the value to the member attribute <b> tagVersion</b>
+ * . You cannot set null to the attribute.
+ *
+ * @param tagVersion
+ * Value to set member attribute <b> tagVersion</b>
+ */
+ public void setTagVersion(Long tagVersion) {
+ this.tagVersion = tagVersion;
+ }
+
+ /**
+ * Returns the value for the member attribute <b>tagVersion</b>
+ *
+ * @return Long - value of member attribute <b>tagVersion</b> .
+ */
+ public Long getTagVersion() {
+ return this.tagVersion;
+ }
+
+ /**
+ * This method sets the value to the member attribute <b>
+ * tagUpdateTime</b> . You cannot set null to the attribute.
+ *
+ * @param tagUpdateTime
+ * Value to set member attribute <b> tagUpdateTime</b>
+ */
+ public void setTagUpdateTime(Date tagUpdateTime) {
+ this.tagUpdateTime = tagUpdateTime;
+ }
+
+ /**
+ * Returns the value for the member attribute <b>tagUpdateTime</b>
+ *
+ * @return Date - value of member attribute <b>tagUpdateTime</b> .
+ */
+ public Date getTagUpdateTime() {
+ return this.tagUpdateTime;
+ }
+
+ /**
* This method sets the value to the member attribute <b> description</b> .
* You cannot set null to the attribute.
*
@@ -346,6 +405,20 @@ public abstract class XXServiceBase extends XXDBBase {
} else if (!policyVersion.equals(other.policyVersion)) {
return false;
}
+ if (tagUpdateTime == null) {
+ if (other.tagUpdateTime != null) {
+ return false;
+ }
+ } else if (!tagUpdateTime.equals(other.tagUpdateTime)) {
+ return false;
+ }
+ if (tagVersion == null) {
+ if (other.tagVersion != null) {
+ return false;
+ }
+ } else if (!tagVersion.equals(other.tagVersion)) {
+ return false;
+ }
if (type == null) {
if (other.type != null) {
return false;
@@ -379,6 +452,7 @@ public abstract class XXServiceBase extends XXDBBase {
public String toString() {
return "XXServiceBase [" + super.toString() + " guid=" + guid + ", version=" + version + ", type=" + type
+ ", name=" + name + ", tagService=" + tagService + ", policyVersion=" + policyVersion + ", policyUpdateTime=" + policyUpdateTime
+ + ", tagVersion=" + tagVersion + ", tagUpdateTime=" + tagUpdateTime
+ ", description=" + description + ", isEnabled=" + isEnabled + "]";
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResource.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResource.java b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResource.java
new file mode 100644
index 0000000..8fd3866
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResource.java
@@ -0,0 +1,245 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.entity;
+
+import java.io.Serializable;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.ranger.common.AppConstants;
+
+@Entity
+@Cacheable
+@Table(name="x_service_resource")
+@XmlRootElement
+public class XXServiceResource extends XXDBBase implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @SequenceGenerator(name = "XXServiceResourceSEQ", sequenceName = "XXServiceResourceSEQ", allocationSize = 1)
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "XXServiceResourceSEQ")
+ @Column(name = "id")
+ protected Long id;
+
+ @Column(name = "guid", unique = true, nullable = false, length = 512)
+ protected String guid;
+
+ @Column(name = "version")
+ protected Long version;
+
+ @Column(name = "is_enabled")
+ protected Boolean isEnabled;
+
+ @Column(name = "resource_signature")
+ protected String resourceSignature;
+
+ @Column(name = "service_id")
+ protected Long serviceId;
+
+ @Override
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @Override
+ public Long getId() {
+ return id;
+ }
+
+ /**
+ * @return the guid
+ */
+ public String getGuid() {
+ return guid;
+ }
+
+ /**
+ * @param guid
+ * the guid to set
+ */
+ public void setGuid(String guid) {
+ this.guid = guid;
+ }
+
+ /**
+ * @return the serviceId
+ */
+ public Long getServiceId() {
+ return serviceId;
+ }
+
+ /**
+ * @param serviceId
+ * the serviceId to set
+ */
+ public void setServiceId(Long serviceId) {
+ this.serviceId = serviceId;
+ }
+
+ /**
+ * @return the resourceSignature
+ */
+ public String getResourceSignature() {
+ return resourceSignature;
+ }
+
+ /**
+ * @param resourceSignature
+ * the resourceSignature to set
+ */
+ public void setResourceSignature(String resourceSignature) {
+ this.resourceSignature = resourceSignature;
+ }
+
+ /**
+ * @return the version
+ */
+ public Long getVersion() {
+ return version;
+ }
+
+ /**
+ * @param version
+ * the version to set
+ */
+ public void setVersion(Long version) {
+ this.version = version;
+ }
+
+ /**
+ * @return the isEnabled
+ */
+ public Boolean getIsEnabled() {
+ return isEnabled;
+ }
+
+ /**
+ * @param isEnabled
+ * the isEnabled to set
+ */
+ public void setIsEnabled(Boolean isEnabled) {
+ this.isEnabled = isEnabled;
+ }
+
+ @Override
+ public int getMyClassType() {
+ return AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((guid == null) ? 0 : guid.hashCode());
+ result = prime * result + ((version == null) ? 0 : version.hashCode());
+ result = prime * result + ((isEnabled == null) ? 0 : isEnabled.hashCode());
+ result = prime * result + ((resourceSignature == null) ? 0 : resourceSignature.hashCode());
+ result = prime * result + ((serviceId == null) ? 0 : serviceId.hashCode());
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ XXServiceResource other = (XXServiceResource) obj;
+ if (resourceSignature == null) {
+ if (other.resourceSignature != null)
+ return false;
+ } else if (!resourceSignature.equals(other.resourceSignature))
+ return false;
+ if (guid == null) {
+ if (other.guid != null)
+ return false;
+ } else if (!guid.equals(other.guid))
+ return false;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (isEnabled == null) {
+ if (other.isEnabled != null)
+ return false;
+ } else if (!isEnabled.equals(other.isEnabled))
+ return false;
+ if (serviceId == null) {
+ if (other.serviceId != null)
+ return false;
+ } else if (!serviceId.equals(other.serviceId))
+ return false;
+ if (version == null) {
+ if (other.version != null)
+ return false;
+ } else if (!version.equals(other.version))
+ return false;
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ toString(sb);
+ return sb.toString();
+ }
+
+ public StringBuilder toString(StringBuilder sb) {
+ sb.append("{ ");
+ sb.append(super.toString() + "} ");
+ sb.append("id={").append(id).append("} ");
+ sb.append("guid={").append(guid).append("} ");
+ sb.append("version={").append(version).append("} ");
+ sb.append("isEnabled={").append(isEnabled).append("} ");
+ sb.append("resourceSignature={").append(resourceSignature).append("} ");
+ sb.append("serviceId={").append(serviceId).append("} ");
+ sb.append(" }");
+
+ return sb;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElement.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElement.java b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElement.java
new file mode 100644
index 0000000..a545133
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElement.java
@@ -0,0 +1,245 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.entity;
+
+import java.io.Serializable;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.ranger.common.AppConstants;
+
+@Entity
+@Cacheable
+@Table(name="x_service_resource_element")
+@XmlRootElement
+public class XXServiceResourceElement extends XXDBBase implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @SequenceGenerator(name = "XXServiceResourceElementSEQ", sequenceName = "XXServiceResourceElementSEQ", allocationSize = 1)
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "XXServiceResourceElementSEQ")
+ @Column(name = "id")
+ protected Long id;
+
+ @Column(name = "guid", unique = true, nullable = false, length = 512)
+ protected String guid;
+
+ @Column(name = "res_def_id")
+ protected Long resDefId;
+
+ @Column(name = "res_id")
+ protected Long resourceId;
+
+ @Column(name = "is_excludes")
+ protected Boolean isExcludes;
+
+ @Column(name = "is_recursive")
+ protected Boolean isRecursive;
+
+ @Override
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @Override
+ public Long getId() {
+ return id;
+ }
+
+ /**
+ * @return the guid
+ */
+ public String getGuid() {
+ return guid;
+ }
+
+ /**
+ * @param guid
+ * the guid to set
+ */
+ public void setGuid(String guid) {
+ this.guid = guid;
+ }
+
+ /**
+ * @return the resDefId
+ */
+ public Long getResDefId() {
+ return resDefId;
+ }
+
+ /**
+ * @param resDefId
+ * the resDefId to set
+ */
+ public void setResDefId(Long resDefId) {
+ this.resDefId = resDefId;
+ }
+
+ /**
+ * @return the isExcludes
+ */
+ public Boolean getIsExcludes() {
+ return isExcludes;
+ }
+
+ /**
+ * @param isExcludes
+ * the isExcludes to set
+ */
+ public void setIsExcludes(Boolean isExcludes) {
+ this.isExcludes = isExcludes;
+ }
+
+ /**
+ * @return the isRecursive
+ */
+ public Boolean getIsRecursive() {
+ return isRecursive;
+ }
+
+ /**
+ * @param isRecursive
+ * the isRecursive to set
+ */
+ public void setIsRecursive(Boolean isRecursive) {
+ this.isRecursive = isRecursive;
+ }
+
+ /**
+ * @return the resourceId
+ */
+ public Long getResourceId() {
+ return resourceId;
+ }
+
+ /**
+ * @param resourceId
+ * the resourceId to set
+ */
+ public void setResourceId(Long resourceId) {
+ this.resourceId = resourceId;
+ }
+
+ @Override
+ public int getMyClassType() {
+ return AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((guid == null) ? 0 : guid.hashCode());
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((isExcludes == null) ? 0 : isExcludes.hashCode());
+ result = prime * result + ((isRecursive == null) ? 0 : isRecursive.hashCode());
+ result = prime * result + ((resDefId == null) ? 0 : resDefId.hashCode());
+ result = prime * result + ((resourceId == null) ? 0 : resourceId.hashCode());
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ XXServiceResourceElement other = (XXServiceResourceElement) obj;
+ if (guid == null) {
+ if (other.guid != null)
+ return false;
+ } else if (!guid.equals(other.guid))
+ return false;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (isExcludes == null) {
+ if (other.isExcludes != null)
+ return false;
+ } else if (!isExcludes.equals(other.isExcludes))
+ return false;
+ if (isRecursive == null) {
+ if (other.isRecursive != null)
+ return false;
+ } else if (!isRecursive.equals(other.isRecursive))
+ return false;
+ if (resDefId == null) {
+ if (other.resDefId != null)
+ return false;
+ } else if (!resDefId.equals(other.resDefId))
+ return false;
+ if (resourceId == null) {
+ if (other.resourceId != null)
+ return false;
+ } else if (!resourceId.equals(other.resourceId))
+ return false;
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ toString(sb);
+ return sb.toString();
+ }
+
+ public StringBuilder toString(StringBuilder sb) {
+ sb.append("{ ");
+ sb.append(super.toString() + "} ");
+ sb.append("id={").append(id).append("} ");
+ sb.append("guid={").append(guid).append("} ");
+ sb.append("resDefId={").append(resDefId).append("} ");
+ sb.append("resourceId={").append(resourceId).append("} ");
+ sb.append("isExcludes={").append(isExcludes).append("} ");
+ sb.append("isRecursive={").append(isRecursive).append("} ");
+ sb.append(" }");
+
+ return sb;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElementValue.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElementValue.java b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElementValue.java
new file mode 100644
index 0000000..23b17b9
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElementValue.java
@@ -0,0 +1,220 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.entity;
+
+import java.io.Serializable;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.ranger.common.AppConstants;
+
+@Entity
+@Cacheable
+@Table(name="x_service_resource_element_value")
+@XmlRootElement
+public class XXServiceResourceElementValue extends XXDBBase implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @SequenceGenerator(name = "XXServiceResourceElementValueSEQ", sequenceName = "XXServiceResourceElementValueSEQ", allocationSize = 1)
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "XXServiceResourceElementValueSEQ")
+ @Column(name = "id")
+ protected Long id;
+
+ @Column(name = "guid", unique = true, nullable = false, length = 512)
+ protected String guid;
+
+ @Column(name = "res_element_id")
+ protected Long resElementId;
+
+ @Column(name = "value")
+ protected String value;
+
+ @Column(name = "sort_order")
+ protected Integer sortOrder;
+
+ @Override
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @Override
+ public Long getId() {
+ return id;
+ }
+
+ /**
+ * @return the guid
+ */
+ public String getGuid() {
+ return guid;
+ }
+
+ /**
+ * @param guid
+ * the guid to set
+ */
+ public void setGuid(String guid) {
+ this.guid = guid;
+ }
+
+ /**
+ * @return the resElementId
+ */
+ public Long getResElementId() {
+ return resElementId;
+ }
+
+ /**
+ * @param resElementId
+ * the resElementId to set
+ */
+ public void setResElementId(Long resElementId) {
+ this.resElementId = resElementId;
+ }
+
+ /**
+ * @return the value
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * @param value
+ * the value to set
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * @return the sortOrder
+ */
+ public Integer getSortOrder() {
+ return sortOrder;
+ }
+
+ /**
+ * @param sortOrder
+ * the sortOrder to set
+ */
+ public void setSortOrder(Integer sortOrder) {
+ this.sortOrder = sortOrder;
+ }
+
+ @Override
+ public int getMyClassType() {
+ return AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT_VALUE;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((guid == null) ? 0 : guid.hashCode());
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((resElementId == null) ? 0 : resElementId.hashCode());
+ result = prime * result + ((sortOrder == null) ? 0 : sortOrder.hashCode());
+ result = prime * result + ((value == null) ? 0 : value.hashCode());
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ XXServiceResourceElementValue other = (XXServiceResourceElementValue) obj;
+ if (guid == null) {
+ if (other.guid != null)
+ return false;
+ } else if (!guid.equals(other.guid))
+ return false;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (resElementId == null) {
+ if (other.resElementId != null)
+ return false;
+ } else if (!resElementId.equals(other.resElementId))
+ return false;
+ if (sortOrder == null) {
+ if (other.sortOrder != null)
+ return false;
+ } else if (!sortOrder.equals(other.sortOrder))
+ return false;
+ if (value == null) {
+ if (other.value != null)
+ return false;
+ } else if (!value.equals(other.value))
+ return false;
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ toString(sb);
+ return sb.toString();
+ }
+
+ public StringBuilder toString(StringBuilder sb) {
+ sb.append("{ ");
+ sb.append(super.toString() + "} ");
+ sb.append("id={").append(id).append("} ");
+ sb.append("guid={").append(guid).append("} ");
+ sb.append("resElementId={").append(resElementId).append("} ");
+ sb.append("value={").append(value).append("} ");
+ sb.append("sortOrder={").append(sortOrder).append("} ");
+ sb.append(" }");
+
+ return sb;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java b/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java
index 46b760b..1d8493a 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java
@@ -49,18 +49,6 @@ public class XXTag extends XXDBBase implements Serializable {
@Column(name = "guid", unique = true, nullable = false, length = 512)
protected String guid;
- @Column(name = "version")
- protected Long version;
-
- @Column(name = "is_enabled")
- protected Boolean isEnabled;
-
- @Column(name = "tag_def_id")
- protected Long tagDefId;
-
- @Column(name = "external_id")
- protected String externalId;
-
@Column(name = "name")
protected String name;
@@ -90,51 +78,6 @@ public class XXTag extends XXDBBase implements Serializable {
}
/**
- * @return the version
- */
- public Long getVersion() {
- return version;
- }
-
- /**
- * @param version
- * the version to set
- */
- public void setVersion(Long version) {
- this.version = version;
- }
-
- /**
- * @return the isEnabled
- */
- public Boolean getIsEnabled() {
- return isEnabled;
- }
-
- /**
- * @param isEnabled
- * the isEnabled to set
- */
- public void setIsEnabled(Boolean isEnabled) {
- this.isEnabled = isEnabled;
- }
-
- /**
- * @return the tagDefId
- */
- public Long getTagDefId() {
- return tagDefId;
- }
-
- /**
- * @param tagDefId
- * the tagDefId to set
- */
- public void setTagDefId(Long tagDefId) {
- this.tagDefId = tagDefId;
- }
-
- /**
* @return the name
*/
public String getName() {
@@ -149,21 +92,6 @@ public class XXTag extends XXDBBase implements Serializable {
this.name = name;
}
- /**
- * @return the externalId
- */
- public String getExternalId() {
- return externalId;
- }
-
- /**
- * @param externalId
- * the externalId to set
- */
- public void setExternalId(String externalId) {
- this.externalId = externalId;
- }
-
@Override
public int getMyClassType() {
return AppConstants.CLASS_TYPE_XA_TAG;
@@ -178,11 +106,9 @@ public class XXTag extends XXDBBase implements Serializable {
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((externalId == null) ? 0 : externalId.hashCode());
result = prime * result + ((guid == null) ? 0 : guid.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((tagDefId == null) ? 0 : tagDefId.hashCode());
return result;
}
@@ -200,11 +126,6 @@ public class XXTag extends XXDBBase implements Serializable {
if (getClass() != obj.getClass())
return false;
XXTag other = (XXTag) obj;
- if (externalId == null) {
- if (other.externalId != null)
- return false;
- } else if (!externalId.equals(other.externalId))
- return false;
if (guid == null) {
if (other.guid != null)
return false;
@@ -220,11 +141,6 @@ public class XXTag extends XXDBBase implements Serializable {
return false;
} else if (!name.equals(other.name))
return false;
- if (tagDefId == null) {
- if (other.tagDefId != null)
- return false;
- } else if (!tagDefId.equals(other.tagDefId))
- return false;
return true;
}
@@ -245,8 +161,6 @@ public class XXTag extends XXDBBase implements Serializable {
sb.append(super.toString() + "} ");
sb.append("id={").append(id).append("} ");
sb.append("guid={").append(guid).append("} ");
- sb.append("tagDefId={").append(tagDefId).append("} ");
- sb.append("externalId={").append(externalId).append("} ");
sb.append("name={").append(name).append("} ");
sb.append(" }");
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java b/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java
index 953df6b..98f2355 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java
@@ -52,8 +52,8 @@ public class XXTagResourceMap extends XXDBBase implements Serializable {
@Column(name = "tag_id")
protected Long tagId;
- @Column(name = "tagged_res_id")
- protected Long taggedResId;
+ @Column(name = "res_id")
+ protected Long resourceId;
@Override
public void setId(Long id) {
@@ -96,18 +96,18 @@ public class XXTagResourceMap extends XXDBBase implements Serializable {
}
/**
- * @return the taggedResId
+ * @return the resourceId
*/
- public Long getTaggedResId() {
- return taggedResId;
+ public Long getResourceId() {
+ return resourceId;
}
/**
- * @param taggedResId
- * the taggedResId to set
+ * @param resourceId
+ * the resourceId to set
*/
- public void setTaggedResId(Long taggedResId) {
- this.taggedResId = taggedResId;
+ public void setResourceId(Long resourceId) {
+ this.resourceId = resourceId;
}
@Override
@@ -127,7 +127,7 @@ public class XXTagResourceMap extends XXDBBase implements Serializable {
result = prime * result + ((guid == null) ? 0 : guid.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((tagId == null) ? 0 : tagId.hashCode());
- result = prime * result + ((taggedResId == null) ? 0 : taggedResId.hashCode());
+ result = prime * result + ((resourceId == null) ? 0 : resourceId.hashCode());
return result;
}
@@ -160,10 +160,10 @@ public class XXTagResourceMap extends XXDBBase implements Serializable {
return false;
} else if (!tagId.equals(other.tagId))
return false;
- if (taggedResId == null) {
- if (other.taggedResId != null)
+ if (resourceId == null) {
+ if (other.resourceId != null)
return false;
- } else if (!taggedResId.equals(other.taggedResId))
+ } else if (!resourceId.equals(other.resourceId))
return false;
return true;
}
@@ -186,7 +186,7 @@ public class XXTagResourceMap extends XXDBBase implements Serializable {
sb.append("id={").append(id).append("} ");
sb.append("guid={").append(guid).append("} ");
sb.append("tagId={").append(tagId).append("} ");
- sb.append("taggedResId={").append(taggedResId).append("} ");
+ sb.append("resourceId={").append(resourceId).append("} ");
sb.append(" }");
return sb;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResource.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResource.java b/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResource.java
deleted file mode 100644
index 9487bc7..0000000
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResource.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ranger.entity;
-
-import java.io.Serializable;
-
-import javax.persistence.Cacheable;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.ranger.common.AppConstants;
-
-@Entity
-@Cacheable
-@Table(name="x_tagged_resource")
-@XmlRootElement
-public class XXTaggedResource extends XXDBBase implements Serializable {
- private static final long serialVersionUID = 1L;
-
- @Id
- @SequenceGenerator(name = "XXTaggedResourceSEQ", sequenceName = "XXTaggedResourceSEQ", allocationSize = 1)
- @GeneratedValue(strategy = GenerationType.AUTO, generator = "XXTaggedResourceSEQ")
- @Column(name = "id")
- protected Long id;
-
- @Column(name = "guid", unique = true, nullable = false, length = 512)
- protected String guid;
-
- @Column(name = "version")
- protected Long version;
-
- @Column(name = "is_enabled")
- protected Boolean isEnabled;
-
- @Column(name = "external_id")
- protected String externalId;
-
- @Column(name = "service_id")
- protected Long serviceId;
-
- @Override
- public void setId(Long id) {
- this.id = id;
- }
-
- @Override
- public Long getId() {
- return id;
- }
-
- /**
- * @return the guid
- */
- public String getGuid() {
- return guid;
- }
-
- /**
- * @param guid
- * the guid to set
- */
- public void setGuid(String guid) {
- this.guid = guid;
- }
-
- /**
- * @return the serviceId
- */
- public Long getServiceId() {
- return serviceId;
- }
-
- /**
- * @param serviceId
- * the serviceId to set
- */
- public void setServiceId(Long serviceId) {
- this.serviceId = serviceId;
- }
-
- /**
- * @return the externalId
- */
- public String getExternalId() {
- return externalId;
- }
-
- /**
- * @param externalId
- * the externalId to set
- */
- public void setExternalId(String externalId) {
- this.externalId = externalId;
- }
-
- /**
- * @return the version
- */
- public Long getVersion() {
- return version;
- }
-
- /**
- * @param version
- * the version to set
- */
- public void setVersion(Long version) {
- this.version = version;
- }
-
- /**
- * @return the isEnabled
- */
- public Boolean getIsEnabled() {
- return isEnabled;
- }
-
- /**
- * @param isEnabled
- * the isEnabled to set
- */
- public void setIsEnabled(Boolean isEnabled) {
- this.isEnabled = isEnabled;
- }
-
- @Override
- public int getMyClassType() {
- return AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((externalId == null) ? 0 : externalId.hashCode());
- result = prime * result + ((guid == null) ? 0 : guid.hashCode());
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((isEnabled == null) ? 0 : isEnabled.hashCode());
- result = prime * result + ((serviceId == null) ? 0 : serviceId.hashCode());
- result = prime * result + ((version == null) ? 0 : version.hashCode());
- return result;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (!super.equals(obj))
- return false;
- if (getClass() != obj.getClass())
- return false;
- XXTaggedResource other = (XXTaggedResource) obj;
- if (externalId == null) {
- if (other.externalId != null)
- return false;
- } else if (!externalId.equals(other.externalId))
- return false;
- if (guid == null) {
- if (other.guid != null)
- return false;
- } else if (!guid.equals(other.guid))
- return false;
- if (id == null) {
- if (other.id != null)
- return false;
- } else if (!id.equals(other.id))
- return false;
- if (isEnabled == null) {
- if (other.isEnabled != null)
- return false;
- } else if (!isEnabled.equals(other.isEnabled))
- return false;
- if (serviceId == null) {
- if (other.serviceId != null)
- return false;
- } else if (!serviceId.equals(other.serviceId))
- return false;
- if (version == null) {
- if (other.version != null)
- return false;
- } else if (!version.equals(other.version))
- return false;
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- toString(sb);
- return sb.toString();
- }
-
- public StringBuilder toString(StringBuilder sb) {
- sb.append("{ ");
- sb.append(super.toString() + "} ");
- sb.append("id={").append(id).append("} ");
- sb.append("guid={").append(guid).append("} ");
- sb.append("version={").append(version).append("} ");
- sb.append("isEnabled={").append(isEnabled).append("} ");
- sb.append("externalId={").append(externalId).append("} ");
- sb.append("serviceId={").append(serviceId).append("} ");
- sb.append(" }");
-
- return sb;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValue.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValue.java b/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValue.java
deleted file mode 100644
index 977d1f5..0000000
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValue.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ranger.entity;
-
-import java.io.Serializable;
-
-import javax.persistence.Cacheable;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.ranger.common.AppConstants;
-
-@Entity
-@Cacheable
-@Table(name="x_tagged_resource_value")
-@XmlRootElement
-public class XXTaggedResourceValue extends XXDBBase implements Serializable {
- private static final long serialVersionUID = 1L;
-
- @Id
- @SequenceGenerator(name = "XXTaggedResourceValueSEQ", sequenceName = "XXTaggedResourceValueSEQ", allocationSize = 1)
- @GeneratedValue(strategy = GenerationType.AUTO, generator = "XXTaggedResourceValueSEQ")
- @Column(name = "id")
- protected Long id;
-
- @Column(name = "guid", unique = true, nullable = false, length = 512)
- protected String guid;
-
- @Column(name = "res_def_id")
- protected Long resDefId;
-
- @Column(name = "tagged_res_id")
- protected Long taggedResourceId;
-
- @Column(name = "is_excludes")
- protected Boolean isExcludes;
-
- @Column(name = "is_recursive")
- protected Boolean isRecursive;
-
- @Override
- public void setId(Long id) {
- this.id = id;
- }
-
- @Override
- public Long getId() {
- return id;
- }
-
- /**
- * @return the guid
- */
- public String getGuid() {
- return guid;
- }
-
- /**
- * @param guid
- * the guid to set
- */
- public void setGuid(String guid) {
- this.guid = guid;
- }
-
- /**
- * @return the resDefId
- */
- public Long getResDefId() {
- return resDefId;
- }
-
- /**
- * @param resDefId
- * the resDefId to set
- */
- public void setResDefId(Long resDefId) {
- this.resDefId = resDefId;
- }
-
- /**
- * @return the isExcludes
- */
- public Boolean getIsExcludes() {
- return isExcludes;
- }
-
- /**
- * @param isExcludes
- * the isExcludes to set
- */
- public void setIsExcludes(Boolean isExcludes) {
- this.isExcludes = isExcludes;
- }
-
- /**
- * @return the isRecursive
- */
- public Boolean getIsRecursive() {
- return isRecursive;
- }
-
- /**
- * @param isRecursive
- * the isRecursive to set
- */
- public void setIsRecursive(Boolean isRecursive) {
- this.isRecursive = isRecursive;
- }
-
- /**
- * @return the taggedResourceId
- */
- public Long getTaggedResourceId() {
- return taggedResourceId;
- }
-
- /**
- * @param taggedResourceId
- * the taggedResourceId to set
- */
- public void setTaggedResourceId(Long taggedResourceId) {
- this.taggedResourceId = taggedResourceId;
- }
-
- @Override
- public int getMyClassType() {
- return AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((guid == null) ? 0 : guid.hashCode());
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((isExcludes == null) ? 0 : isExcludes.hashCode());
- result = prime * result + ((isRecursive == null) ? 0 : isRecursive.hashCode());
- result = prime * result + ((resDefId == null) ? 0 : resDefId.hashCode());
- result = prime * result + ((taggedResourceId == null) ? 0 : taggedResourceId.hashCode());
- return result;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (!super.equals(obj))
- return false;
- if (getClass() != obj.getClass())
- return false;
- XXTaggedResourceValue other = (XXTaggedResourceValue) obj;
- if (guid == null) {
- if (other.guid != null)
- return false;
- } else if (!guid.equals(other.guid))
- return false;
- if (id == null) {
- if (other.id != null)
- return false;
- } else if (!id.equals(other.id))
- return false;
- if (isExcludes == null) {
- if (other.isExcludes != null)
- return false;
- } else if (!isExcludes.equals(other.isExcludes))
- return false;
- if (isRecursive == null) {
- if (other.isRecursive != null)
- return false;
- } else if (!isRecursive.equals(other.isRecursive))
- return false;
- if (resDefId == null) {
- if (other.resDefId != null)
- return false;
- } else if (!resDefId.equals(other.resDefId))
- return false;
- if (taggedResourceId == null) {
- if (other.taggedResourceId != null)
- return false;
- } else if (!taggedResourceId.equals(other.taggedResourceId))
- return false;
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- toString(sb);
- return sb.toString();
- }
-
- public StringBuilder toString(StringBuilder sb) {
- sb.append("{ ");
- sb.append(super.toString() + "} ");
- sb.append("id={").append(id).append("} ");
- sb.append("guid={").append(guid).append("} ");
- sb.append("resDefId={").append(resDefId).append("} ");
- sb.append("taggedResourceId={").append(taggedResourceId).append("} ");
- sb.append("isExcludes={").append(isExcludes).append("} ");
- sb.append("isRecursive={").append(isRecursive).append("} ");
- sb.append(" }");
-
- return sb;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValueMap.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValueMap.java b/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValueMap.java
deleted file mode 100644
index 62e875f..0000000
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValueMap.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.ranger.entity;
-
-import java.io.Serializable;
-
-import javax.persistence.Cacheable;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.ranger.common.AppConstants;
-
-@Entity
-@Cacheable
-@Table(name="x_tagged_resource_value_map")
-@XmlRootElement
-public class XXTaggedResourceValueMap extends XXDBBase implements Serializable {
- private static final long serialVersionUID = 1L;
-
- @Id
- @SequenceGenerator(name = "XXTaggedResourceValueMapSEQ", sequenceName = "XXTaggedResourceValueMapSEQ", allocationSize = 1)
- @GeneratedValue(strategy = GenerationType.AUTO, generator = "XXTaggedResourceValueMapSEQ")
- @Column(name = "id")
- protected Long id;
-
- @Column(name = "guid", unique = true, nullable = false, length = 512)
- protected String guid;
-
- @Column(name = "res_value_id")
- protected Long resValueId;
-
- @Column(name = "value")
- protected String value;
-
- @Column(name = "sort_order")
- protected Integer sortOrder;
-
- @Override
- public void setId(Long id) {
- this.id = id;
- }
-
- @Override
- public Long getId() {
- return id;
- }
-
- /**
- * @return the guid
- */
- public String getGuid() {
- return guid;
- }
-
- /**
- * @param guid
- * the guid to set
- */
- public void setGuid(String guid) {
- this.guid = guid;
- }
-
- /**
- * @return the resValueId
- */
- public Long getResValueId() {
- return resValueId;
- }
-
- /**
- * @param resValueId
- * the resValueId to set
- */
- public void setResValueId(Long resValueId) {
- this.resValueId = resValueId;
- }
-
- /**
- * @return the value
- */
- public String getValue() {
- return value;
- }
-
- /**
- * @param value
- * the value to set
- */
- public void setValue(String value) {
- this.value = value;
- }
-
- /**
- * @return the sortOrder
- */
- public Integer getSortOrder() {
- return sortOrder;
- }
-
- /**
- * @param sortOrder
- * the sortOrder to set
- */
- public void setSortOrder(Integer sortOrder) {
- this.sortOrder = sortOrder;
- }
-
- @Override
- public int getMyClassType() {
- return AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE_MAP;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((guid == null) ? 0 : guid.hashCode());
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((resValueId == null) ? 0 : resValueId.hashCode());
- result = prime * result + ((sortOrder == null) ? 0 : sortOrder.hashCode());
- result = prime * result + ((value == null) ? 0 : value.hashCode());
- return result;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (!super.equals(obj))
- return false;
- if (getClass() != obj.getClass())
- return false;
- XXTaggedResourceValueMap other = (XXTaggedResourceValueMap) obj;
- if (guid == null) {
- if (other.guid != null)
- return false;
- } else if (!guid.equals(other.guid))
- return false;
- if (id == null) {
- if (other.id != null)
- return false;
- } else if (!id.equals(other.id))
- return false;
- if (resValueId == null) {
- if (other.resValueId != null)
- return false;
- } else if (!resValueId.equals(other.resValueId))
- return false;
- if (sortOrder == null) {
- if (other.sortOrder != null)
- return false;
- } else if (!sortOrder.equals(other.sortOrder))
- return false;
- if (value == null) {
- if (other.value != null)
- return false;
- } else if (!value.equals(other.value))
- return false;
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- toString(sb);
- return sb.toString();
- }
-
- public StringBuilder toString(StringBuilder sb) {
- sb.append("{ ");
- sb.append(super.toString() + "} ");
- sb.append("id={").append(id).append("} ");
- sb.append("guid={").append(guid).append("} ");
- sb.append("resValueId={").append(resValueId).append("} ");
- sb.append("value={").append(value).append("} ");
- sb.append("sortOrder={").append(sortOrder).append("} ");
- sb.append(" }");
-
- return sb;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
index b667777..0b0d4ca 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
@@ -20,24 +20,21 @@
package org.apache.ranger.rest;
import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.ListUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ranger.biz.ServiceDBStore;
-//import org.apache.ranger.biz.TagDBStore;
+import org.apache.ranger.biz.TagDBStore;
import org.apache.ranger.common.RESTErrorUtil;
import org.apache.ranger.plugin.model.RangerServiceResource;
import org.apache.ranger.plugin.model.RangerTag;
import org.apache.ranger.plugin.model.RangerTagResourceMap;
import org.apache.ranger.plugin.model.RangerTagDef;
-import org.apache.ranger.plugin.store.TagStore;
import org.apache.ranger.plugin.store.TagValidator;
-
-import org.apache.ranger.plugin.store.file.TagFileStore;
import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.plugin.util.ServiceTags;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
+import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -46,11 +43,9 @@ import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
-import java.util.ArrayList;
import java.util.List;
@Path(TagRESTConstants.TAGDEF_NAME_AND_VERSION)
-
@Component
@Scope("request")
@Transactional(propagation = Propagation.REQUIRES_NEW)
@@ -64,13 +59,8 @@ public class TagREST {
@Autowired
ServiceDBStore svcStore;
- //@Autowired
- //TagDBStore tagStore;
-
- TagStore tagStore;
-
- //@Autowired
- //TagValidator validator;
+ @Autowired
+ TagDBStore tagStore;
TagValidator validator;
@@ -79,16 +69,16 @@ public class TagREST {
@PostConstruct
public void initStore() {
- tagStore = TagFileStore.getInstance();
+ validator = new TagValidator();
+
tagStore.setServiceStore(svcStore);
- validator = new TagValidator();
validator.setTagStore(tagStore);
}
@POST
@Path(TagRESTConstants.TAGDEFS_RESOURCE)
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public RangerTagDef createTagDef(RangerTagDef tagDef) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.createTagDef(" + tagDef + ")");
@@ -116,8 +106,7 @@ public class TagREST {
@PUT
@Path(TagRESTConstants.TAGDEF_RESOURCE + "/{id}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public RangerTagDef updateTagDef(@PathParam("id") Long id, RangerTagDef tagDef) {
if(LOG.isDebugEnabled()) {
@@ -147,7 +136,7 @@ public class TagREST {
@DELETE
@Path(TagRESTConstants.TAGDEF_RESOURCE + "/{id}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public void deleteTagDef(@PathParam("id") Long id) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.deleteTagDef(" + id + ")");
@@ -171,6 +160,7 @@ public class TagREST {
@GET
@Path(TagRESTConstants.TAGDEF_RESOURCE+"/{name}")
@Produces({ "application/json", "application/xml" })
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public List<RangerTagDef> getTagDefByName(@PathParam("name") String name) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.getTagDefByName(" + name + ")");
@@ -179,7 +169,7 @@ public class TagREST {
List<RangerTagDef> ret;
try {
- ret = tagStore.getTagDef(name);
+ ret = tagStore.getTagDefsByName(name);
} catch(Exception excp) {
LOG.error("getTagDefByName(" + name + ") failed", excp);
@@ -200,6 +190,7 @@ public class TagREST {
@GET
@Path(TagRESTConstants.TAGDEFS_RESOURCE)
@Produces({ "application/json", "application/xml" })
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public List<RangerTagDef> getTagDefs() {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.getTagDefs()");
@@ -229,7 +220,7 @@ public class TagREST {
@POST
@Path(TagRESTConstants.TAGS_RESOURCE)
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public RangerTag createTag(RangerTag tag) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.createTag(" + tag + ")");
@@ -256,8 +247,7 @@ public class TagREST {
@PUT
@Path(TagRESTConstants.TAG_RESOURCE + "{id}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public RangerTag updateTagById(@PathParam("id") Long id, RangerTag tag) {
RangerTag ret;
@@ -277,27 +267,26 @@ public class TagREST {
}
@PUT
- @Path(TagRESTConstants.TAG_RESOURCE + "externalId/{externalId}")
+ @Path(TagRESTConstants.TAG_RESOURCE + "guid/{guid}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
- public RangerTag updateTagByExternalId(@PathParam("externalId") String externalId, RangerTag tag) {
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ public RangerTag updateTagByGuid(@PathParam("guid") String guid, RangerTag tag) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.updateTagByExternalId(" + externalId + ")");
+ LOG.debug("==> TagREST.updateTagByGuid(" + guid + ")");
}
RangerTag ret;
try {
- validator.preUpdateTagByExternalId(externalId, tag);
+ validator.preUpdateTagByGuid(guid, tag);
ret = tagStore.updateTag(tag);
} catch (Exception excp) {
- LOG.error("updateTagByExternalId(" + externalId + ") failed", excp);
+ LOG.error("updateTagByGuid(" + guid + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("<== TagREST.updateTagByExternalId(" + externalId + "): " + ret);
+ LOG.debug("<== TagREST.updateTagByGuid(" + guid + "): " + ret);
}
return ret;
@@ -306,8 +295,7 @@ public class TagREST {
@PUT
@Path(TagRESTConstants.TAG_RESOURCE + "name/{name}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public RangerTag updateTagByName(@PathParam("name") String name, RangerTag tag) {
if(LOG.isDebugEnabled()) {
@@ -333,8 +321,7 @@ public class TagREST {
@DELETE
@Path(TagRESTConstants.TAG_RESOURCE + "{id}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public void deleteTagById(@PathParam("id") Long id) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.deleteTagById(" + id +")");
@@ -354,32 +341,32 @@ public class TagREST {
}
@DELETE
- @Path(TagRESTConstants.TAG_RESOURCE + "externalId/{externalId}")
+ @Path(TagRESTConstants.TAG_RESOURCE + "guid/{guid}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
- public void deleteTagByExternalId(@PathParam("externalId") String externalId) {
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ public void deleteTagByGuid(@PathParam("guid") String guid) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.deleteTagByExternalId(" + externalId + ")");
+ LOG.debug("==> TagREST.deleteTagByGuid(" + guid + ")");
}
try {
- RangerTag exist = validator.preDeleteTagByExternalId(externalId);
+ RangerTag exist = validator.preDeleteTagByGuid(guid);
tagStore.deleteTagById(exist.getId());
} catch(Exception excp) {
- LOG.error("deleteTagByExternalId(" + externalId + ") failed", excp);
+ LOG.error("deleteTagByGuid(" + guid + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("<== TagREST.deleteTagByExternalId(" + externalId + ")");
+ LOG.debug("<== TagREST.deleteTagByGuid(" + guid + ")");
}
}
@DELETE
@Path(TagRESTConstants.TAG_RESOURCE + "name/{name}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public void deleteTagByName(@PathParam("name") String name) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.deleteTagByName(" + name + ")");
@@ -402,6 +389,7 @@ public class TagREST {
@GET
@Path(TagRESTConstants.TAGS_RESOURCE + "{id}")
@Produces({ "application/json", "application/xml" })
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public RangerTag getTagById(@PathParam("id") Long id) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.getTagById(" + id + ")");
@@ -424,24 +412,25 @@ public class TagREST {
}
@GET
- @Path(TagRESTConstants.TAGS_RESOURCE + "externalId/{externalId}")
+ @Path(TagRESTConstants.TAGS_RESOURCE + "guid/{guid}")
@Produces({ "application/json", "application/xml" })
- public List<RangerTag> getTagsByExternalId(@PathParam("externalId") String externalId) {
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ public RangerTag getTagByGuid(@PathParam("guid") String guid) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.getTagsByExternalId(" + externalId + ")");
+ LOG.debug("==> TagREST.getTagByGuid(" + guid + ")");
}
- List<RangerTag> ret;
+ RangerTag ret;
try {
- ret = tagStore.getTagsByExternalId(externalId);
+ ret = tagStore.getTagByGuid(guid);
} catch(Exception excp) {
- LOG.error("getTagsByExternalId(" + externalId + ") failed", excp);
+ LOG.error("getTagByGuid(" + guid + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("<== TagREST.getTagsByExternalId(" + externalId + "): " + ret);
+ LOG.debug("<== TagREST.getTagByGuid(" + guid + "): " + ret);
}
return ret;
@@ -450,6 +439,7 @@ public class TagREST {
@GET
@Path(TagRESTConstants.TAGS_RESOURCE + "name/{name}")
@Produces({ "application/json", "application/xml" })
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public List<RangerTag> getTagsByName(@PathParam("name") String name) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.getTagsByName(" + name + ")");
@@ -474,6 +464,7 @@ public class TagREST {
@GET
@Path(TagRESTConstants.TAGS_RESOURCE)
@Produces({ "application/json", "application/xml" })
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public List<RangerTag> getAllTags() {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.getAllTags()");
@@ -504,7 +495,7 @@ public class TagREST {
@POST
@Path(TagRESTConstants.RESOURCES_RESOURCE)
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public RangerServiceResource createServiceResource(RangerServiceResource resource) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.createServiceResource(" + resource + ")");
@@ -531,8 +522,7 @@ public class TagREST {
@PUT
@Path(TagRESTConstants.RESOURCE_RESOURCE + "{id}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public RangerServiceResource updateServiceResourceById(@PathParam("id") Long id, RangerServiceResource resource) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.updateServiceResourceById(" + id + ")");
@@ -555,25 +545,24 @@ public class TagREST {
}
@PUT
- @Path(TagRESTConstants.RESOURCE_RESOURCE + "externalId/{externalId}")
+ @Path(TagRESTConstants.RESOURCE_RESOURCE + "guid/{guid}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
- public RangerServiceResource updateServiceResourceByExternalId(@PathParam("externalId") String externalId, RangerServiceResource resource) {
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ public RangerServiceResource updateServiceResourceByGuid(@PathParam("guid") String guid, RangerServiceResource resource) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.updateServiceResourceByExternalId(" + externalId + ", " + resource + ")");
+ LOG.debug("==> TagREST.updateServiceResourceByGuid(" + guid + ", " + resource + ")");
}
RangerServiceResource ret;
try {
- validator.preUpdateServiceResourceByExternalId(externalId, resource);
+ validator.preUpdateServiceResourceByGuid(guid, resource);
ret = tagStore.updateServiceResource(resource);
} catch(Exception excp) {
- LOG.error("updateServiceResourceByExternalId(" + externalId + ", " + resource + ") failed", excp);
+ LOG.error("updateServiceResourceByGuid(" + guid + ", " + resource + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("<== TagREST.updateServiceResourceByExternalId(" + externalId + ", " + resource + "): " + ret);
+ LOG.debug("<== TagREST.updateServiceResourceByGuid(" + guid + ", " + resource + "): " + ret);
}
return ret;
}
@@ -581,7 +570,7 @@ public class TagREST {
@DELETE
@Path(TagRESTConstants.RESOURCE_RESOURCE + "{id}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public void deleteServiceResourceById(@PathParam("id") Long id) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.deleteServiceResourceById(" + id + ")");
@@ -601,31 +590,32 @@ public class TagREST {
}
@DELETE
- @Path(TagRESTConstants.RESOURCE_RESOURCE + "externalId/{externalId}")
+ @Path(TagRESTConstants.RESOURCE_RESOURCE + "guid/{guid}")
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
- public void deleteServiceResourceByExternalId(@PathParam("externalId") String externalId) {
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ public void deleteServiceResourceByGuid(@PathParam("guid") String guid) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.deleteServiceResourceByExternalId(" + externalId + ")");
+ LOG.debug("==> TagREST.deleteServiceResourceByGuid(" + guid + ")");
}
try {
- RangerServiceResource exist = validator.preDeleteServiceResourceByExternalId(externalId);
+ RangerServiceResource exist = validator.preDeleteServiceResourceByGuid(guid);
tagStore.deleteServiceResourceById(exist.getId());
} catch(Exception excp) {
- LOG.error("deleteServiceResourceByExternalId(" + externalId + ") failed", excp);
+ LOG.error("deleteServiceResourceByGuid(" + guid + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("<== TagREST.deleteServiceResourceByExternalId(" + externalId + ")");
+ LOG.debug("<== TagREST.deleteServiceResourceByGuid(" + guid + ")");
}
}
@GET
@Path(TagRESTConstants.RESOURCES_RESOURCE + "{id}")
@Produces({ "application/json", "application/xml" })
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public RangerServiceResource getServiceResourceById(@PathParam("id") Long id) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.getServiceResourceById(" + id + ")");
@@ -645,22 +635,23 @@ public class TagREST {
}
@GET
- @Path(TagRESTConstants.RESOURCES_RESOURCE + "externalId/{externalId}")
+ @Path(TagRESTConstants.RESOURCES_RESOURCE + "guid/{guid}")
@Produces({ "application/json", "application/xml" })
- public List<RangerServiceResource> getServiceResourcesByExternalId(@PathParam("externalId") String externalId) {
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ public RangerServiceResource getServiceResourceByGuid(@PathParam("guid") String guid) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.getServiceResourceByExternalId(" + externalId + ")");
+ LOG.debug("==> TagREST.getServiceResourceByGuid(" + guid + ")");
}
- List<RangerServiceResource> ret;
+ RangerServiceResource ret;
try {
- ret = tagStore.getServiceResourcesByExternalId(externalId);
+ ret = tagStore.getServiceResourceByGuid(guid);
} catch(Exception excp) {
- LOG.error("getServiceResourceByExternalId(" + externalId + ") failed", excp);
+ LOG.error("getServiceResourceByGuid(" + guid + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("<== TagREST.getServiceResourceByExternalId(" + externalId + "): " + ret);
+ LOG.debug("<== TagREST.getServiceResourceByGuid(" + guid + "): " + ret);
}
return ret;
}
@@ -668,26 +659,25 @@ public class TagREST {
@POST
@Path(TagRESTConstants.TAGRESOURCEMAPS_RESOURCE)
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
- public RangerTagResourceMap createTagResourceMap(@QueryParam("externalResourceId") String externalResourceId,
- @QueryParam("externalTagId") String externalTagId) {
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ public RangerTagResourceMap createTagResourceMap(@QueryParam("tagGuid") String tagGuid, @QueryParam("resourceGuid") String resourceGuid) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.createTagResourceMap(" + externalResourceId + ", " + externalTagId + ")");
+ LOG.debug("==> TagREST.createTagResourceMap(" + tagGuid + ", " + resourceGuid + ")");
}
RangerTagResourceMap tagResourceMap;
try {
- tagResourceMap = validator.preCreateTagResourceMap(externalResourceId, externalTagId);
+ tagResourceMap = validator.preCreateTagResourceMap(tagGuid, resourceGuid);
tagResourceMap = tagStore.createTagResourceMap(tagResourceMap);
} catch(Exception excp) {
- LOG.error("createTagResourceMap(" + externalResourceId + ", " + externalTagId + ") failed", excp);
+ LOG.error("createTagResourceMap(" + tagGuid + ", " + resourceGuid + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.createTagResourceMap(" + externalResourceId + ", " + externalTagId + ")");
+ LOG.debug("==> TagREST.createTagResourceMap(" + tagGuid + ", " + resourceGuid + ")");
}
return tagResourceMap;
@@ -696,24 +686,23 @@ public class TagREST {
@DELETE
@Path(TagRESTConstants.TAGRESOURCEMAPS_RESOURCE)
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
- public void deleteTagResourceMap(@QueryParam("externalResourceId") String externalResourceId,
- @QueryParam("externalTagId") String externalTagId) {
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ public void deleteTagResourceMap(@QueryParam("tagGuid") String tagGuid, @QueryParam("resourceGuid") String resourceGuid) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.deleteTagResourceMap(" + externalResourceId + ", " + externalTagId + ")");
+ LOG.debug("==> TagREST.deleteTagResourceMap(" + tagGuid + ", " + resourceGuid + ")");
}
try {
- RangerTagResourceMap exist = validator.preDeleteTagResourceMap(externalResourceId, externalTagId);
+ RangerTagResourceMap exist = validator.preDeleteTagResourceMap(tagGuid, resourceGuid);
tagStore.deleteTagResourceMapById(exist.getId());
} catch(Exception excp) {
- LOG.error("deleteTagResourceMap(" + externalResourceId + ", " + externalTagId + ") failed", excp);
+ LOG.error("deleteTagResourceMap(" + tagGuid + ", " + resourceGuid + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.deleteTagResourceMap(" + externalResourceId + ", " + externalTagId + ")");
+ LOG.debug("==> TagREST.deleteTagResourceMap(" + tagGuid + ", " + resourceGuid + ")");
}
}
@@ -727,7 +716,7 @@ public class TagREST {
@GET
@Path(TagRESTConstants.RESOURCES_RESOURCE)
@Produces({ "application/json", "application/xml" })
- //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public List<RangerServiceResource> getServiceResources(RangerServiceResource resource) throws Exception {
List<RangerServiceResource> ret = null;
@@ -776,6 +765,7 @@ public class TagREST {
@GET
@Path(TagRESTConstants.TAGNAMES_RESOURCE)
@Produces({ "application/json", "application/xml" })
+ @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
public List<String> getTagNames(@QueryParam(TagRESTConstants.SERVICE_NAME_PARAM) String serviceName) {
if(LOG.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java b/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java
index 915ff13..07a559c 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java
@@ -22,25 +22,18 @@ package org.apache.ranger.rest;
public class TagRESTConstants {
public static final String TAGDEF_NAME_AND_VERSION = "tags";
- static final String TAGDEFS_RESOURCE = "/tagdefs/";
- static final String TAGDEF_RESOURCE = "/tagdef/";
-
- static final String TAGS_RESOURCE = "/tags/";
- static final String TAG_RESOURCE = "/tag/";
-
- static final String RESOURCES_RESOURCE = "/resources/";
- static final String RESOURCE_RESOURCE = "/resource/";
-
+ static final String TAGDEFS_RESOURCE = "/tagdefs/";
+ static final String TAGDEF_RESOURCE = "/tagdef/";
+ static final String TAGS_RESOURCE = "/tags/";
+ static final String TAG_RESOURCE = "/tag/";
+ static final String RESOURCES_RESOURCE = "/resources/";
+ static final String RESOURCE_RESOURCE = "/resource/";
static final String TAGRESOURCEMAPS_RESOURCE = "/tagresourcemaps/";
+ static final String TAGNAMES_RESOURCE = "/tags/names/";
+ static final String LOOKUP_TAGS_RESOURCE = "/tags/lookup/";
+ static final String TAGS_DOWNLOAD = "/download/";
-
- static final String TAGNAMES_RESOURCE = "/tags/names/";
- static final String LOOKUP_TAGS_RESOURCE = "/tags/lookup/";
-
- static final String TAGS_DOWNLOAD = "/download/";
-
- public static final String SERVICE_NAME_PARAM = "serviceName";
- public static final String LAST_KNOWN_TAG_VERSION_PARAM = "tagVersion";
- public static final String PATTERN_PARAM = "pattern";
-
+ public static final String SERVICE_NAME_PARAM = "serviceName";
+ public static final String LAST_KNOWN_TAG_VERSION_PARAM = "lastKnownVersion";
+ public static final String PATTERN_PARAM = "pattern";
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
index e80ba01..9f9761c 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
@@ -20,15 +20,6 @@ package org.apache.ranger.service;
import java.util.ArrayList;
import java.util.List;
-import org.apache.ranger.common.SearchField.DATA_TYPE;
-import org.apache.ranger.common.SearchField.SEARCH_TYPE;
-import org.apache.ranger.common.UserSessionBase;
-import org.apache.ranger.entity.XXContextEnricherDef;
-import org.apache.ranger.entity.XXAccessTypeDef;
-import org.apache.ranger.entity.XXEnumDef;
-import org.apache.ranger.entity.XXPolicyConditionDef;
-import org.apache.ranger.entity.XXResourceDef;
-import org.apache.ranger.entity.XXServiceConfigDef;
import org.apache.ranger.entity.XXServiceDef;
import org.apache.ranger.entity.XXServiceDefBase;
import org.apache.ranger.plugin.model.RangerServiceDef;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java
new file mode 100644
index 0000000..3bbd344
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.ranger.common.SearchField;
+import org.apache.ranger.common.SearchField.DATA_TYPE;
+import org.apache.ranger.common.SearchField.SEARCH_TYPE;
+import org.apache.ranger.entity.XXServiceResource;
+import org.apache.ranger.plugin.model.RangerServiceResource;
+import org.apache.ranger.plugin.util.SearchFilter;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RangerServiceResourceService extends RangerServiceResourceServiceBase<XXServiceResource, RangerServiceResource> {
+
+ public RangerServiceResourceService() {
+ searchFields.add(new SearchField(SearchFilter.TAG_RESOURCE_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
+ searchFields.add(new SearchField(SearchFilter.TAG_SERVICE_ID, "obj.serviceId", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
+ searchFields.add(new SearchField(SearchFilter.TAG_RESOURCE_SIGNATURE, "obj.resourceSignature", DATA_TYPE.STRING, SEARCH_TYPE.FULL));
+ }
+
+ @Override
+ protected void validateForCreate(RangerServiceResource vObj) {
+
+ }
+
+ @Override
+ protected void validateForUpdate(RangerServiceResource vObj, XXServiceResource entityObj) {
+
+ }
+
+ public RangerServiceResource getPopulatedViewObject(XXServiceResource xObj) {
+ return populateViewBean(xObj);
+ }
+
+ public RangerServiceResource getServiceResourceByGuid(String guid) {
+ RangerServiceResource ret = null;
+
+ XXServiceResource xxServiceResource = daoMgr.getXXServiceResource().findByGuid(guid);
+
+ if(xxServiceResource != null) {
+ ret = populateViewBean(xxServiceResource);
+ }
+
+ return ret;
+ }
+
+ public RangerServiceResource getServiceResourceByServiceIdAndResourceSignature(Long serviceId, String resourceSignature) {
+ RangerServiceResource ret = null;
+
+ XXServiceResource xxServiceResource = daoMgr.getXXServiceResource().findByServiceIdAndResourceSignature(serviceId, resourceSignature);
+
+ if(xxServiceResource != null) {
+ ret = populateViewBean(xxServiceResource);
+ }
+
+ return ret;
+ }
+
+ public List<RangerServiceResource> getTaggedResourcesInServiceId(Long serviceId) {
+ List<RangerServiceResource> ret = new ArrayList<RangerServiceResource>();
+
+ List<XXServiceResource> xxServiceResources = daoMgr.getXXServiceResource().findTaggedResourcesInServiceId(serviceId);
+
+ if(CollectionUtils.isNotEmpty(xxServiceResources)) {
+ for(XXServiceResource xxServiceResource : xxServiceResources) {
+ RangerServiceResource serviceResource = populateViewBean(xxServiceResource);
+
+ ret.add(serviceResource);
+ }
+ }
+
+ return ret;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
new file mode 100644
index 0000000..f6a1dca
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.ranger.common.GUIDUtil;
+import org.apache.ranger.common.MessageEnums;
+import org.apache.ranger.entity.XXResourceDef;
+import org.apache.ranger.entity.XXService;
+import org.apache.ranger.entity.XXServiceResource;
+import org.apache.ranger.entity.XXServiceResourceElement;
+import org.apache.ranger.plugin.model.RangerPolicy;
+import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
+import org.apache.ranger.plugin.model.RangerServiceResource;
+import org.apache.ranger.plugin.store.PList;
+import org.apache.ranger.plugin.util.SearchFilter;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class RangerServiceResourceServiceBase<T extends XXServiceResource, V extends RangerServiceResource> extends RangerBaseModelService<T, V> {
+
+ @Autowired
+ GUIDUtil guidUtil;
+
+ @Override
+ @SuppressWarnings("unchecked")
+ protected XXServiceResource mapViewToEntityBean(RangerServiceResource vObj, XXServiceResource xObj, int operationContext) {
+ String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
+
+ xObj.setGuid(guid);
+ xObj.setVersion(vObj.getVersion());
+ xObj.setIsEnabled(vObj.getIsEnabled());
+
+ XXService xService = daoMgr.getXXService().findByName(vObj.getServiceName());
+ if (xService == null) {
+ throw restErrorUtil.createRESTException("Error Populating XXServiceResource. No Service found with name: " + vObj.getServiceName(), MessageEnums.INVALID_INPUT_DATA);
+ }
+
+ xObj.setServiceId(xService.getId());
+
+ return xObj;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ protected RangerServiceResource mapEntityToViewBean(RangerServiceResource vObj, XXServiceResource xObj) {
+ vObj.setGuid(xObj.getGuid());
+ vObj.setVersion(xObj.getVersion());
+ vObj.setIsEnabled(xObj.getIsEnabled());
+
+ XXService xService = daoMgr.getXXService().getById(xObj.getServiceId());
+
+ vObj.setServiceName(xService.getName());
+
+ List<XXServiceResourceElement> resElementList = daoMgr.getXXServiceResourceElement().findByResourceId(xObj.getId());
+ Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = new HashMap<String, RangerPolicy.RangerPolicyResource>();
+
+ for (XXServiceResourceElement resElement : resElementList) {
+ List<String> resValueMapList = daoMgr.getXXServiceResourceElementValue().findValuesByResElementId(resElement.getId());
+
+ XXResourceDef xResDef = daoMgr.getXXResourceDef().getById(resElement.getResDefId());
+
+ RangerPolicyResource policyRes = new RangerPolicyResource();
+ policyRes.setIsExcludes(resElement.getIsExcludes());
+ policyRes.setIsRecursive(resElement.getIsRecursive());
+ policyRes.setValues(resValueMapList);
+
+ resourceSpec.put(xResDef.getName(), policyRes);
+ }
+
+ vObj.setResourceSpec(resourceSpec);
+
+ return vObj;
+ }
+
+ @SuppressWarnings("unchecked")
+ public PList<RangerServiceResource> searchServiceResources(SearchFilter searchFilter) {
+ PList<RangerServiceResource> retList = new PList<RangerServiceResource>();
+ List<RangerServiceResource> resourceList = new ArrayList<RangerServiceResource>();
+
+ List<XXServiceResource> xResourceList = (List<XXServiceResource>) searchRangerObjects(searchFilter, searchFields, sortFields, (PList<V>) retList);
+
+ for (XXServiceResource xResource : xResourceList) {
+ RangerServiceResource taggedRes = populateViewBean((T) xResource);
+ resourceList.add(taggedRes);
+ }
+ retList.setList(resourceList);
+ return retList;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
index bd61ff1..462b781 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
@@ -19,11 +19,17 @@
package org.apache.ranger.service;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
import org.apache.ranger.common.SearchField;
import org.apache.ranger.common.SearchField.DATA_TYPE;
import org.apache.ranger.common.SearchField.SEARCH_TYPE;
import org.apache.ranger.entity.XXTagDef;
+import org.apache.ranger.entity.XXTagResourceMap;
import org.apache.ranger.plugin.model.RangerTagDef;
+import org.apache.ranger.plugin.model.RangerTagResourceMap;
import org.apache.ranger.plugin.util.SearchFilter;
import org.springframework.stereotype.Service;
@@ -32,6 +38,7 @@ public class RangerTagDefService extends RangerTagDefServiceBase<XXTagDef, Range
public RangerTagDefService() {
searchFields.add(new SearchField(SearchFilter.TAG_DEF_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
+ searchFields.add(new SearchField(SearchFilter.TAG_DEF_GUID, "obj.guid", DATA_TYPE.STRING, SEARCH_TYPE.FULL));
searchFields.add(new SearchField(SearchFilter.TAG_DEF_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL));
}
@@ -45,8 +52,61 @@ public class RangerTagDefService extends RangerTagDefServiceBase<XXTagDef, Range
}
+ @Override
+ public RangerTagDef postUpdate(XXTagDef tagDef) {
+ RangerTagDef ret = super.postUpdate(tagDef);
+
+ daoMgr.getXXTagDef().updateServiceForTagDefUpdate(tagDef.getId(), tagDef.getUpdateTime());
+
+ return ret;
+ }
+
public RangerTagDef getPopulatedViewObject(XXTagDef xObj) {
return populateViewBean(xObj);
}
+ public RangerTagDef getTagDefByGuid(String guid) {
+ RangerTagDef ret = null;
+
+ XXTagDef xxTagDef = daoMgr.getXXTagDef().findByGuid(guid);
+
+ if(xxTagDef != null) {
+ ret = populateViewBean(xxTagDef);
+ }
+
+ return ret;
+ }
+
+ public List<RangerTagDef> getTagDefsByName(String name) {
+ List<RangerTagDef> ret = new ArrayList<RangerTagDef>();
+
+ List<XXTagDef> xxTagDefs = daoMgr.getXXTagDef().findByName(name);
+
+ if(CollectionUtils.isNotEmpty(xxTagDefs)) {
+ for(XXTagDef xxTagDef : xxTagDefs) {
+ RangerTagDef tagDef = populateViewBean(xxTagDef);
+
+ ret.add(tagDef);
+ }
+ }
+
+ return ret;
+ }
+
+ public List<RangerTagDef> getTagDefsByServiceId(Long serviceId) {
+ List<RangerTagDef> ret = new ArrayList<RangerTagDef>();
+
+ List<XXTagDef> xxTagDefs = daoMgr.getXXTagDef().findByServiceId(serviceId);
+
+ if(CollectionUtils.isNotEmpty(xxTagDefs)) {
+ for(XXTagDef xxTagDef : xxTagDefs) {
+ RangerTagDef tagDef = populateViewBean(xxTagDef);
+
+ ret.add(tagDef);
+ }
+ }
+
+ return ret;
+ }
+
}