Skip to content

Instantly share code, notes, and snippets.

View benjishults's full-sized avatar

Benjamin Shults benjishults

  • SmartThings Inc.
View GitHub Profile
@benjishults
benjishults / StaticParamsDemo.java
Created December 31, 2018 17:04
Simple overloading function puzzle in Java
class Base {
public void foo(Base x) {
System.out.println("Base.Base");
}
public void foo(Derived x) {
System.out.println("Base.Derived");
}
public void bar(Object x) {
System.out.println("bar-Base:Object");
}
@benjishults
benjishults / AuditService.java
Created December 31, 2018 17:14
the AuditService as we find it
public class AuditService {
private static final Logger LOGGER = LoggerFactory.getLogger(AuditService.class);
private AuditPublishingService auditPublishingService;
public AuditService(AuditPublishingService auditPublishingService) {
this.auditPublishingService = auditPublishingService;
}
public void auditDownload(Task taskObj) {
DocAccessAuditRequest request = publishDocAccessEvent(taskObj, DocAccessType.DOWNLOAD);
LOGGER.info("Audit log for Download :DocAccessAuditRequest", request);
}
@benjishults
benjishults / ExternalGroupHelper.java
Created December 31, 2018 17:20
ExternalGroupHelper interface for extensible code demo
public interface ExternalGroupHelper {
boolean isMember(User u, String extGroupId);
List<Member> members(String extGroupId);
}
@benjishults
benjishults / ExternalGroupHelperProvider.java
Created December 31, 2018 17:22
ExternalGroupHelperProvider for extensible code demo
public class ExternalGroupHelperProvider implements ContextAware {
// ... save the application context in a field named context ...
public ExternalGroupHelper getHelperForType(String groupType) {
return context.getBeanByName(groupType + "ExternalGroupHelper");
}
}
@benjishults
benjishults / Controller.java
Created December 31, 2018 17:25
request handling in extensible code deom
CommentUserGroup cug = cugDao.find(commentUserGroupId);
ExternalGroupHelper groupHelper = extGroupHelperProvider.getHelperForType(cug.getExtGroupType());
if (groupHelper.isMember(securityContextHelper.getCurrentUser(), cug.getExtGroupId())) {
return groupHelper.members(cug.getExtGroupId());
} else {
return Collections.emptyList();
}
@benjishults
benjishults / CommentUserGroup.js
Created December 31, 2018 17:27
comment user group description
{
id: "<guid>",
extGroupType: "<code-name for group type>",
extGroupId: "<FK into a table determined by the group type>"
}
@benjishults
benjishults / Comment.js
Last active December 31, 2018 17:29
comment description
{
commentUserGroupId: "<ID from the C_U_G table>",
author: "<user id>",
payload: "<comment content>"
}
@benjishults
benjishults / Comment.java
Created December 31, 2018 17:31
Java Comment data class
public class Comment {
private String commentUserGroupId;
private User author;
private Object payload;
// ... constructor, getters, equals, hashCode ...
}
@benjishults
benjishults / CommentAddedListener.java
Created December 31, 2018 17:32
CommentAddedListener
public interface CommentAddedListener {
void processComment(Comment comment);
}
@benjishults
benjishults / CommentController.java
Created December 31, 2018 17:35
CommentController first pass
public class CommentController {
private static final Logger LOG = LoggerFactory.getLogger(CommentController.class);
// implementation of listeners might need to be thread safe
// depending on whether you allow dynamic change to
// listener registration
private Set<CommentAddedListener> listeners;
// ... some fields and constructor omitted ...