diff --git a/java/src/main/java/org/msgpack/template/GenericTemplate.java b/java/src/main/java/org/msgpack/template/GenericTemplate.java new file mode 100644 index 00000000..3fa204c9 --- /dev/null +++ b/java/src/main/java/org/msgpack/template/GenericTemplate.java @@ -0,0 +1,25 @@ +// +// MessagePack for Java +// +// Copyright (C) 2009-2010 FURUHASHI Sadayuki +// +// Licensed 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.msgpack.template; + +import org.msgpack.Template; + +public interface GenericTemplate { + public Template build(Template[] params); +} + diff --git a/java/src/main/java/org/msgpack/template/GenericTemplate1.java b/java/src/main/java/org/msgpack/template/GenericTemplate1.java new file mode 100644 index 00000000..ca89b655 --- /dev/null +++ b/java/src/main/java/org/msgpack/template/GenericTemplate1.java @@ -0,0 +1,54 @@ +// +// MessagePack for Java +// +// Copyright (C) 2009-2010 FURUHASHI Sadayuki +// +// Licensed 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.msgpack.template; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import org.msgpack.Template; + +public class GenericTemplate1 implements GenericTemplate { + Constructor constructor; + + public GenericTemplate1(Class tmpl) { + try { + this.constructor = tmpl.getConstructor(new Class[]{Template.class}); + constructor.newInstance(new Object[]{AnyTemplate.getInstance()}); + } catch (NoSuchMethodException e) { + throw new IllegalArgumentException(e); + } catch (InvocationTargetException e) { + throw new IllegalArgumentException(e); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException(e); + } catch (InstantiationException e) { + throw new IllegalArgumentException(e); + } + } + + public Template build(Template[] params) { + try { + return constructor.newInstance(params); + } catch (InvocationTargetException e) { + throw new IllegalArgumentException(e); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException(e); + } catch (InstantiationException e) { + throw new IllegalArgumentException(e); + } + } +} + diff --git a/java/src/main/java/org/msgpack/template/GenericTemplate2.java b/java/src/main/java/org/msgpack/template/GenericTemplate2.java new file mode 100644 index 00000000..5f938775 --- /dev/null +++ b/java/src/main/java/org/msgpack/template/GenericTemplate2.java @@ -0,0 +1,54 @@ +// +// MessagePack for Java +// +// Copyright (C) 2009-2010 FURUHASHI Sadayuki +// +// Licensed 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.msgpack.template; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import org.msgpack.Template; + +public class GenericTemplate2 implements GenericTemplate { + Constructor constructor; + + public GenericTemplate2(Class tmpl) { + try { + this.constructor = tmpl.getConstructor(new Class[]{Template.class, Template.class}); + constructor.newInstance(new Object[]{AnyTemplate.getInstance(), AnyTemplate.getInstance()}); + } catch (NoSuchMethodException e) { + throw new IllegalArgumentException(e); + } catch (InvocationTargetException e) { + throw new IllegalArgumentException(e); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException(e); + } catch (InstantiationException e) { + throw new IllegalArgumentException(e); + } + } + + public Template build(Template[] params) { + try { + return constructor.newInstance(params); + } catch (InvocationTargetException e) { + throw new IllegalArgumentException(e); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException(e); + } catch (InstantiationException e) { + throw new IllegalArgumentException(e); + } + } +} +