From eb5d326a1e3d9c1bdfddda2d754da4939c19f2ad Mon Sep 17 00:00:00 2001 From: FURUHASHI Sadayuki Date: Wed, 1 Dec 2010 20:34:33 +0900 Subject: [PATCH] java: adds GenericTemplates --- .../org/msgpack/template/GenericTemplate.java | 25 +++++++++ .../msgpack/template/GenericTemplate1.java | 54 +++++++++++++++++++ .../msgpack/template/GenericTemplate2.java | 54 +++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 java/src/main/java/org/msgpack/template/GenericTemplate.java create mode 100644 java/src/main/java/org/msgpack/template/GenericTemplate1.java create mode 100644 java/src/main/java/org/msgpack/template/GenericTemplate2.java 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); + } + } +} +