String topicInfo = getTopicInfoPath(topicDetails.getTopicName());
if(registry.resourceExists(topicInfo)){
TopicDetails currentTopicDetails = getTopicDetails(topicDetails.getTopicName());
Resource resource = registry.get(topicInfo);
if(currentTopicDetails.isSecureTopic() && !currentTopicDetails.getOwner().equals(EventBrokerUtils.getLoggedInUserName())){
throw new EventException("Current user do not have permission to change this topic");
}
resource.setProperty("topicName", topicDetails.getTopicName());
if(topicDetails.getDescription() != null){
resource.setProperty("description", topicDetails.getDescription());
}
if(topicDetails.getSchemaDescription() != null){
resource.setProperty("schemaDescription", topicDetails.getSchemaDescription());
}
if(topicDetails.isSecureTopic()){
resource.setProperty("isSecureTopic", String.valueOf(topicDetails.isSecureTopic()));
}
registry.put(topicInfo,resource);
}else{
Resource resource = registry.newResource();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
resource.setContent(outStream.toByteArray());
resource.setProperty("topicName", topicDetails.getTopicName());
if(topicDetails.getDescription() != null){
resource.setProperty("description", topicDetails.getDescription());
}
if(topicDetails.getSchemaDescription() != null){
resource.setProperty("schemaDescription", topicDetails.getSchemaDescription());
}
if(topicDetails.isSecureTopic()){
resource.setProperty("isSecureTopic", String.valueOf(topicDetails.isSecureTopic()));
}
resource.setProperty(OWNER,EventBrokerUtils.getLoggedInUserName());
registry.put(topicInfo,resource);
}
} catch (RegistryException e) {
throw new EventException("Error getting topic details "+ e.getMessage(), e);
}
}