Skip to content

Instantly share code, notes, and snippets.

@debop
debop / ScalaReflects.scala
Created January 19, 2013 10:19
Scala 객체의 수형을 Java class로 변환하기
def asJavaClass(x: Any): Class[_] = x match {
case x: scala.Boolean => java.lang.Boolean.TYPE
case x: scala.Char => java.lang.Character.TYPE
case x: scala.Byte => java.lang.Byte.TYPE
case x: scala.Short => java.lang.Short.TYPE
case x: scala.Int => java.lang.Integer.TYPE
case x: scala.Long => java.lang.Long.TYPE
case x: scala.Float => java.lang.Float.TYPE
case x: scala.Double => java.lang.Double.TYPE
@debop
debop / ScalaReflects.scala
Created January 19, 2013 10:22
생성자의 인자 및 인자 수형을 제공한 객체 생성
def newInstanceWithTypes[T: ClassTag](initArgs: Any*)(initArgsTypes: Class[_]*): T = {
if (initArgs == null || initArgs.length == 0)
return newInstance[T]()
val parameterTypes =
if (initArgsTypes != null) initArgsTypes.toArray
else initArgs.map(asJavaClass(_)).toArray
val constructor = classTag[T].runtimeClass.getConstructor(parameterTypes: _*)
constructor.newInstance(initArgs.map(_.asInstanceOf[AnyRef]): _*).asInstanceOf[T]
class MyClass(var id: Int, var name: String) {
def this() {
this(0, "Unknown")
}
}
@debop
debop / ScalaReflectsTest.scala
Created January 19, 2013 10:24
scala reflection instancing test
@Test
def instancingByDefaultContructor() {
val instance = ScalaReflects.newInstance[MyClass]()
Assert.assertNotNull(instance)
Assert.assertTrue(instance.isInstanceOf[MyClass])
}
@Test
def instancingByParameterizedContructor() {
val instance = ScalaReflects.newInstance[MyClass](100, "Dynamic")
@debop
debop / DynamicAccessor.java
Created January 21, 2013 13:35
DynamicAccessor
/**
* 동적으로 객체의 속성, 메소드에 접근할 수 있는 접근자입니다.
* User: [email protected]
* Date: 13. 1. 21
*/
@Slf4j
public class DynamicAccessor<T> {
private final Class<T> targetType;
private final ConstructorAccess<T> ctorAccessor;
@debop
debop / DynamicAccessorFactory.java
Created January 21, 2013 13:38
DynamicAccessorFactory
/**
* {@link DynamicAccessor} 의 생성자입니다.
* User: [email protected]
* Date: 13. 1. 21
*/
@Slf4j
public class DynamicAccessorFactory {
private static final CacheLoader<Class<?>, DynamicAccessor> loader;
private static final LoadingCache<Class<?>, DynamicAccessor> cache;
@Slf4j
public class DynamicAccessorTest {
@lombok.Getter
@lombok.Setter
static class User {
private String email;
private Double age;
public User() {}
@debop
debop / Parallels.scala
Created January 29, 2013 14:23
병렬 실행
def mapAsOrdered[T <: Ordered[T], V](items: Iterable[T], mapper: T => V): Iterable[V] = {
items.par
.map(item => (item, mapper(item)))
.toList.sortWith(_._1 < _._1)
.map(_._2)
}
@debop
debop / UnitOfWorkInterceptor.java
Created February 16, 2013 02:52
UnitOfWorkInterceptor
package kr.nsoft.data.hibernate.springmvc;
import kr.nsoft.data.hibernate.unitofwork.IUnitOfWork;
import kr.nsoft.data.hibernate.unitofwork.UnitOfWorks;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@debop
debop / spring-servlet.xml
Created February 16, 2013 03:07
mvc interceptor
<context:annotation-config/>
<context:component-scan base-package="kr.nsoft.contact"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
<property name="contentType" value="text/html;charset=UTF-8"/>
</bean>