summaryrefslogtreecommitdiff
path: root/java-plan3/src/org/msgpack/Schema.java
blob: f99b3d0a3f7c8200995048c05e5eef6821a5f99e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
//
// MessagePack for Java
//
// Copyright (C) 2009 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;

import java.io.Writer;
import java.io.IOException;
import org.msgpack.schema.SSchemaParser;
import org.msgpack.schema.ClassGenerator;

public abstract class Schema {
	private String expression;
	private String name;

	public Schema(String name) {
		this.expression = expression;
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public String getFullName() {
		return name;
	}

	public String getExpression() {
		return name;
	}

	public static Schema parse(String source) {
		return SSchemaParser.parse(source);
	}

	public static Schema load(String source) {
		return SSchemaParser.load(source);
	}

	public void write(Writer output) throws IOException {
		ClassGenerator.write(this, output);
	}

	public abstract void pack(Packer pk, Object obj) throws IOException;

	public abstract Object convert(Object obj) throws MessageTypeException;


	public Object createFromNil() {
		return null;
	}

	public Object createFromBoolean(boolean v) {
		throw new RuntimeException("type error");
	}

	public Object createFromByte(byte v) {
		throw new RuntimeException("type error");
	}

	public Object createFromShort(short v) {
		throw new RuntimeException("type error");
	}

	public Object createFromInt(int v) {
		throw new RuntimeException("type error");
	}

	public Object createFromLong(long v) {
		throw new RuntimeException("type error");
	}

	public Object createFromFloat(float v) {
		throw new RuntimeException("type error");
	}

	public Object createFromDouble(double v) {
		throw new RuntimeException("type error");
	}

	public Object createFromRaw(byte[] b, int offset, int length) {
		throw new RuntimeException("type error");
	}

	/* FIXME
	public Object createFromBoolean(boolean v) {
		throw MessageTypeException.schemaMismatch(this);
	}

	public Object createFromByte(byte v) {
		throw MessageTypeException.schemaMismatch(this);
	}

	public Object createFromShort(short v) {
		throw MessageTypeException.schemaMismatch(this);
	}

	public Object createFromInt(int v) {
		throw MessageTypeException.schemaMismatch(this);
	}

	public Object createFromLong(long v) {
		throw MessageTypeException.schemaMismatch(this);
	}

	public Object createFromFloat(float v) {
		throw MessageTypeException.schemaMismatch(this);
	}

	public Object createFromDouble(double v) {
		throw MessageTypeException.schemaMismatch(this);
	}

	public Object createFromRaw(byte[] b, int offset, int length) {
		throw MessageTypeException.schemaMismatch(this);
	}
	*/
}