diff options
Diffstat (limited to 'branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache')
9 files changed, 0 insertions, 900 deletions
diff --git a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java b/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java deleted file mode 100644 index 9723a8ba69..0000000000 --- a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2String.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.tuscany.sca.databinding.json; - -import org.apache.tuscany.sca.databinding.PullTransformer; -import org.apache.tuscany.sca.databinding.TransformationContext; -import org.apache.tuscany.sca.databinding.TransformationException; -import org.apache.tuscany.sca.databinding.impl.BaseTransformer; -import org.codehaus.jettison.json.JSONObject; - -/** - * @version $Rev$ $Date$ - */ -public class JSON2String extends BaseTransformer<JSONObject, String> implements - PullTransformer<JSONObject, String> { - - @Override - protected Class getSourceType() { - return JSONObject.class; - } - - @Override - protected Class getTargetType() { - return String.class; - } - - public String transform(JSONObject source, TransformationContext context) { - try { - return source.toString(); - } catch (Exception e) { - throw new TransformationException(e); - } - } - - @Override - public int getWeight() { - return 500; - } - -} diff --git a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java b/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java deleted file mode 100644 index b55bd2b652..0000000000 --- a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSON2XMLStreamReader.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.tuscany.sca.databinding.json; - -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.sca.databinding.PullTransformer; -import org.apache.tuscany.sca.databinding.TransformationContext; -import org.apache.tuscany.sca.databinding.TransformationException; -import org.apache.tuscany.sca.databinding.impl.BaseTransformer; -import org.codehaus.jettison.badgerfish.BadgerFishXMLStreamReader; -import org.codehaus.jettison.json.JSONObject; - -/** - * @version $Rev$ $Date$ - */ -public class JSON2XMLStreamReader extends BaseTransformer<JSONObject, XMLStreamReader> implements - PullTransformer<JSONObject, XMLStreamReader> { - - @Override - protected Class getSourceType() { - return JSONObject.class; - } - - @Override - protected Class getTargetType() { - return XMLStreamReader.class; - } - - public XMLStreamReader transform(JSONObject source, TransformationContext context) { - try { - return new BadgerFishXMLStreamReader(source); - } catch (Exception e) { - throw new TransformationException(e); - } - } - - @Override - public int getWeight() { - return 500; - } - -} diff --git a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSONDataBinding.java b/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSONDataBinding.java deleted file mode 100644 index a00b8fe3d0..0000000000 --- a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/JSONDataBinding.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.tuscany.sca.databinding.json; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.databinding.impl.BaseDataBinding; -import org.codehaus.jettison.json.JSONObject; - -/** - * JAXB DataBinding - */ -public class JSONDataBinding extends BaseDataBinding { - public static final String NAME = JSONObject.class.getName(); - public static final String[] ALIASES = new String[] {"json"}; - - public static final String ROOT_NAMESPACE = "http://tuscany.apache.org/xmlns/sca/databinding/json/1.0"; - public static final QName ROOT_ELEMENT = new QName(ROOT_NAMESPACE, "root"); - - public JSONDataBinding() { - super(NAME, ALIASES, JSONObject.class); - } - - @SuppressWarnings("unchecked") - @Override - public Object copy(Object arg) { - try { - JSONObject src = (JSONObject)arg; - return new JSONObject(src.toString()); - } catch (Exception e) { - throw new IllegalArgumentException(e); - } - } - -} diff --git a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java b/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java deleted file mode 100644 index 3e7d074be3..0000000000 --- a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/String2JSON.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.tuscany.sca.databinding.json; - -import org.apache.tuscany.sca.databinding.PullTransformer; -import org.apache.tuscany.sca.databinding.TransformationContext; -import org.apache.tuscany.sca.databinding.TransformationException; -import org.apache.tuscany.sca.databinding.impl.BaseTransformer; -import org.codehaus.jettison.json.JSONObject; - -/** - * @version $Rev$ $Date$ - */ -public class String2JSON extends BaseTransformer<String, JSONObject> implements - PullTransformer<String, JSONObject> { - - @Override - protected Class getSourceType() { - return String.class; - } - - @Override - protected Class getTargetType() { - return JSONObject.class; - } - - public JSONObject transform(String source, TransformationContext context) { - try { - return new JSONObject(source); - } catch (Exception e) { - throw new TransformationException(e); - } - } - - @Override - public int getWeight() { - return 500; - } - -} diff --git a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java b/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java deleted file mode 100644 index 76f94c7b28..0000000000 --- a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamReader2JSON.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.tuscany.sca.databinding.json; - -import java.io.StringWriter; - -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.tuscany.sca.databinding.PullTransformer; -import org.apache.tuscany.sca.databinding.TransformationContext; -import org.apache.tuscany.sca.databinding.TransformationException; -import org.apache.tuscany.sca.databinding.impl.BaseTransformer; -import org.codehaus.jettison.badgerfish.BadgerFishXMLStreamWriter; -import org.codehaus.jettison.json.JSONObject; - -/** - * @version $Rev$ $Date$ - */ -public class XMLStreamReader2JSON extends BaseTransformer<XMLStreamReader, JSONObject> implements - PullTransformer<XMLStreamReader, JSONObject> { - - @Override - protected Class getSourceType() { - return XMLStreamReader.class; - } - - @Override - protected Class getTargetType() { - return JSONObject.class; - } - - public JSONObject transform(XMLStreamReader source, TransformationContext context) { - try { - StringWriter writer = new StringWriter(); - XMLStreamWriter jsonWriter = new BadgerFishXMLStreamWriter(writer); - XMLStreamSerializer serializer = new XMLStreamSerializer(); - serializer.serialize(source, jsonWriter); - source.close(); - return new JSONObject(writer.toString()); - } catch (Exception e) { - throw new TransformationException(e); - } - } - - @Override - public int getWeight() { - return 500; - } - -} diff --git a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamSerializer.java b/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamSerializer.java deleted file mode 100644 index 26987cbb28..0000000000 --- a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/XMLStreamSerializer.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.tuscany.sca.databinding.json; - -import javax.xml.namespace.NamespaceContext; -import javax.xml.stream.XMLStreamConstants; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -/** - * The XMLStreamSerializer pulls events from the XMLStreamReader and dumps into the XMLStreamWriter - */ -public class XMLStreamSerializer implements XMLStreamConstants { - public static final String NAMESPACE_PREFIX = "ns"; - private static int namespaceSuffix; - - /* - * The behavior of the serializer is such that it returns when it encounters the starting element for the second - * time. The depth variable tracks the depth of the serilizer and tells it when to return. Note that it is assumed - * that this serialization starts on an Element. - */ - - /** - * Field depth - */ - private int depth; - - /** - * Generates a unique namespace prefix that is not in the scope of the NamespaceContext - * - * @param nsCtxt - * @return string - */ - private String generateUniquePrefix(NamespaceContext nsCtxt) { - String prefix = NAMESPACE_PREFIX + namespaceSuffix++; - // null should be returned if the prefix is not bound! - while (nsCtxt.getNamespaceURI(prefix) != null) { - prefix = NAMESPACE_PREFIX + namespaceSuffix++; - } - - return prefix; - } - - /** - * Method serialize. - * - * @param node - * @param writer - * @throws XMLStreamException - */ - public void serialize(XMLStreamReader node, XMLStreamWriter writer) throws XMLStreamException { - serializeNode(node, writer); - } - - /** - * @param reader - * @param writer - * @throws XMLStreamException - */ - protected void serializeAttributes(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { - int count = reader.getAttributeCount(); - String prefix; - String namespaceName; - String writerPrefix; - for (int i = 0; i < count; i++) { - prefix = reader.getAttributePrefix(i); - namespaceName = reader.getAttributeNamespace(i); - /* - * Due to parser implementations returning null as the namespace URI (for the empty namespace) we need to - * make sure that we deal with a namespace name that is not null. The best way to work around this issue is - * to set the namespace uri to "" if it is null - */ - if (namespaceName == null) { - namespaceName = ""; - } - - writerPrefix = writer.getNamespaceContext().getPrefix(namespaceName); - - if (!"".equals(namespaceName)) { - // prefix has already being declared but this particular - // attrib has a - // no prefix attached. So use the prefix provided by the - // writer - if (writerPrefix != null && (prefix == null || prefix.equals(""))) { - writer.writeAttribute(writerPrefix, namespaceName, reader.getAttributeLocalName(i), reader - .getAttributeValue(i)); - - // writer prefix is available but different from the - // current - // prefix of the attrib. We should be decalring the new - // prefix - // as a namespace declaration - } else if (prefix != null && !"".equals(prefix) && !prefix.equals(writerPrefix)) { - writer.writeNamespace(prefix, namespaceName); - writer.writeAttribute(prefix, namespaceName, reader.getAttributeLocalName(i), reader - .getAttributeValue(i)); - - // prefix is null (or empty), but the namespace name is - // valid! it has not - // being written previously also. So we need to generate - // a prefix - // here - } else if (prefix == null || prefix.equals("")) { - prefix = generateUniquePrefix(writer.getNamespaceContext()); - writer.writeNamespace(prefix, namespaceName); - writer.writeAttribute(prefix, namespaceName, reader.getAttributeLocalName(i), reader - .getAttributeValue(i)); - } else { - writer.writeAttribute(prefix, namespaceName, reader.getAttributeLocalName(i), reader - .getAttributeValue(i)); - } - } else { - // empty namespace is equal to no namespace! - writer.writeAttribute(reader.getAttributeLocalName(i), reader.getAttributeValue(i)); - } - - } - } - - /** - * Method serializeCData. - * - * @param reader - * @param writer - * @throws XMLStreamException - */ - protected void serializeCData(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { - writer.writeCData(reader.getText()); - } - - /** - * Method serializeComment. - * - * @param reader - * @param writer - * @throws XMLStreamException - */ - protected void serializeComment(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { - writer.writeComment(reader.getText()); - } - - /** - * @param reader - * @param writer - * @throws XMLStreamException - */ - protected void serializeElement(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { - String prefix = reader.getPrefix(); - String nameSpaceName = reader.getNamespaceURI(); - if (nameSpaceName != null) { - String writerPrefix = writer.getPrefix(nameSpaceName); - if (writerPrefix != null) { - writer.writeStartElement(nameSpaceName, reader.getLocalName()); - } else { - if (prefix != null) { - writer.writeStartElement(prefix, reader.getLocalName(), nameSpaceName); - writer.writeNamespace(prefix, nameSpaceName); - writer.setPrefix(prefix, nameSpaceName); - } else { - // [rfeng] We need to set default NS 1st before calling writeStateElement - writer.setDefaultNamespace(nameSpaceName); - writer.writeStartElement(nameSpaceName, reader.getLocalName()); - writer.writeDefaultNamespace(nameSpaceName); - } - } - } else { - writer.writeStartElement(reader.getLocalName()); - } - - // add the namespaces - int count = reader.getNamespaceCount(); - String namespacePrefix; - for (int i = 0; i < count; i++) { - namespacePrefix = reader.getNamespacePrefix(i); - // [rfeng] The following is commented out to allow to default ns - // if (namespacePrefix != null && namespacePrefix.length() == 0) { - // continue; - // } - - serializeNamespace(namespacePrefix, reader.getNamespaceURI(i), writer); - } - - // add attributes - serializeAttributes(reader, writer); - - } - - /** - * Method serializeEndElement. - * - * @param writer - * @throws XMLStreamException - */ - protected void serializeEndElement(XMLStreamWriter writer) throws XMLStreamException { - writer.writeEndElement(); - } - - /** - * Method serializeNamespace. - * - * @param prefix - * @param uri - * @param writer - * @throws XMLStreamException - */ - private void serializeNamespace(String prefix, String uri, XMLStreamWriter writer) throws XMLStreamException { - String prefix1 = writer.getPrefix(uri); - if (prefix1 == null) { - writer.writeNamespace(prefix, uri); - writer.setPrefix(prefix, uri); - } - } - - /** - * Method serializeNode. - * - * @param reader - * @param writer - * @throws XMLStreamException - */ - protected void serializeNode(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { - // TODO We get the StAXWriter at this point and uses it hereafter - // assuming that this is the only entry point - // to this class. - // If there can be other classes calling methodes of this we might - // need to change methode signatures to - // OMOutputer - while (true) { - int event = reader.getEventType(); - if (event == START_ELEMENT) { - serializeElement(reader, writer); - depth++; - } else if (event == ATTRIBUTE) { - serializeAttributes(reader, writer); - } else if (event == CHARACTERS) { - serializeText(reader, writer); - } else if (event == COMMENT) { - serializeComment(reader, writer); - } else if (event == CDATA) { - serializeCData(reader, writer); - } else if (event == END_ELEMENT) { - serializeEndElement(writer); - depth--; - } else if (event == START_DOCUMENT) { - depth++; // if a start document is found then increment - writer.writeStartDocument(); - // the depth - } else if (event == END_DOCUMENT) { - if (depth != 0) { - depth--; // for the end document - reduce the depth - } - writer.writeEndDocument(); - } - if (depth == 0) { - break; - } - if (reader.hasNext()) { - reader.next(); - } else { - break; - } - } - } - - /** - * @param reader - * @param writer - * @throws XMLStreamException - */ - protected void serializeText(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { - writer.writeCharacters(reader.getText()); - } -} diff --git a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSON2OMElement.java b/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSON2OMElement.java deleted file mode 100644 index a26540e77d..0000000000 --- a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSON2OMElement.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.tuscany.sca.databinding.json.axiom; - -import org.apache.axiom.om.OMAbstractFactory; -import org.apache.axiom.om.OMElement; -import org.apache.axiom.om.OMFactory; -import org.apache.axiom.om.OMNamespace; -import org.apache.tuscany.sca.databinding.PullTransformer; -import org.apache.tuscany.sca.databinding.TransformationContext; -import org.apache.tuscany.sca.databinding.TransformationException; -import org.apache.tuscany.sca.databinding.Transformer; -import org.apache.tuscany.sca.databinding.impl.BaseTransformer; -import org.apache.tuscany.sca.databinding.json.JSONDataBinding; -import org.apache.tuscany.sca.interfacedef.DataType; -import org.apache.tuscany.sca.interfacedef.util.XMLType; -import org.codehaus.jettison.json.JSONObject; -import org.osoa.sca.annotations.Service; - -/** - * @version $Rev$ $Date$ - */ -@Service(Transformer.class) -public class JSON2OMElement extends BaseTransformer<JSONObject, OMElement> implements - PullTransformer<JSONObject, OMElement> { - - private OMFactory factory = OMAbstractFactory.getOMFactory(); - - @Override - protected Class getSourceType() { - return JSONObject.class; - } - - @Override - protected Class getTargetType() { - return OMElement.class; - } - - public OMElement transform(JSONObject source, TransformationContext context) { - try { - String ns = JSONDataBinding.ROOT_ELEMENT.getNamespaceURI(); - String name = JSONDataBinding.ROOT_ELEMENT.getLocalPart(); - if (context != null) { - DataType<?> dataType = context.getTargetDataType(); - Object logical = dataType.getLogical(); - if (logical instanceof XMLType) { - XMLType xmlType = (XMLType)logical; - if (xmlType.isElement()) { - ns = xmlType.getElementName().getNamespaceURI(); - name = xmlType.getElementName().getLocalPart(); - } - } - } - JSONBadgerfishDataSource ds = new JSONBadgerfishDataSource(source); - OMNamespace namespace = factory.createOMNamespace(ns, ""); - return factory.createOMElement(ds, name, namespace); - } catch (Exception e) { - throw new TransformationException(e); - } - } - - @Override - public int getWeight() { - return 500; - } - -} diff --git a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSONBadgerfishDataSource.java b/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSONBadgerfishDataSource.java deleted file mode 100644 index adc38772be..0000000000 --- a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSONBadgerfishDataSource.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.tuscany.sca.databinding.json.axiom; - -import javax.xml.stream.XMLStreamException; - -import org.codehaus.jettison.badgerfish.BadgerFishXMLStreamReader; -import org.codehaus.jettison.json.JSONException; -import org.codehaus.jettison.json.JSONObject; - -/** - * JSONDataSource keeps the JSON String inside and consumes it when needed. This is to be kept in the - * OMSourcedElementImpl and can be used either to expand the tree or get the JSON String directly without expanding. - * This uses the "Badgerfish" JSON convention. - * - * @version $Rev$ $Date$ - */ - -public class JSONBadgerfishDataSource extends JSONDataSource { - - public JSONBadgerfishDataSource(JSONObject json) { - super(json); - } - - /** - * Gives the StAX reader using the "Badgerfish" formatted input JSON String. - * - * @return The XMLStreamReader according to the JSON String. - * @throws javax.xml.stream.XMLStreamException if there is an error while making the StAX reader. - */ - @Override - public javax.xml.stream.XMLStreamReader getReader() throws XMLStreamException { - try { - return new BadgerFishXMLStreamReader(json); - } catch (JSONException e) { - throw new XMLStreamException(e); - } - - } -} diff --git a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSONDataSource.java b/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSONDataSource.java deleted file mode 100644 index 50086550a3..0000000000 --- a/branches/sca-java-1.0/modules/databinding-json/src/main/java/org/apache/tuscany/sca/databinding/json/axiom/JSONDataSource.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.tuscany.sca.databinding.json.axiom; - -import java.io.IOException; -import java.io.OutputStream; -import java.io.Writer; -import java.util.HashMap; -import java.util.Map; - -import javax.xml.stream.XMLStreamConstants; -import javax.xml.stream.XMLStreamReader; - -import org.apache.axiom.om.OMDataSource; -import org.apache.axiom.om.OMException; -import org.apache.axiom.om.OMOutputFormat; -import org.codehaus.jettison.json.JSONObject; -import org.codehaus.jettison.json.JSONTokener; -import org.codehaus.jettison.mapped.MappedXMLInputFactory; - -/** - * JSONDataSource keeps the JSON String inside and consumes it when needed. This is to be kept in the - * OMSourcedElementImpl and can be used either to expand the tree or get the JSON String directly without expanding. - * This uses the "Mapped" JSON convention. - */ - -public class JSONDataSource implements OMDataSource { - protected JSONObject json; - - public JSONDataSource(JSONObject json) { - this.json = json; - } - - /** - * Writes JSON into the output stream. As this should write JSON, it directly gets the JSON string and writes it - * without expanding the tree. - * - * @param outputStream the stream to be written into - * @param omOutputFormat format of the message, this is ignored. - * @throws javax.xml.stream.XMLStreamException if there is an error while writing the message in to the output - * stream. - */ - public void serialize(OutputStream outputStream, OMOutputFormat omOutputFormat) - throws javax.xml.stream.XMLStreamException { - try { - String encoding = omOutputFormat == null ? "UTF-8" : omOutputFormat.getCharSetEncoding(); - outputStream.write(getJSONString().getBytes(encoding)); - } catch (IOException e) { - throw new OMException(); - } - } - - /** - * Writes JSON through the writer. As this should write JSON, it directly gets the JSON string and writes it without - * expanding the tree. - * - * @param writer Writer to be written into - * @param omOutputFormat format of the message, this is ignored. - * @throws javax.xml.stream.XMLStreamException if there is an error while writing the message through the writer. - */ - public void serialize(Writer writer, OMOutputFormat omOutputFormat) throws javax.xml.stream.XMLStreamException { - try { - writer.write(getJSONString()); - } catch (IOException e) { - throw new OMException(); - } - } - - /** - * Writes XML through the XMLStreamWriter. As the input data source is JSON, this method needs to get a StAX reader - * from that JSON String. Therefore this uses the getReader() method to get the StAX reader writes the events into - * the XMLStreamWriter. - * - * @param xmlStreamWriter StAX writer to be written into - * @throws javax.xml.stream.XMLStreamException if there is an error while writing the message through the StAX - * writer. - */ - public void serialize(javax.xml.stream.XMLStreamWriter xmlStreamWriter) throws javax.xml.stream.XMLStreamException { - XMLStreamReader reader = getReader(); - xmlStreamWriter.writeStartDocument(); - while (reader.hasNext()) { - int x = reader.next(); - switch (x) { - case XMLStreamConstants.START_ELEMENT: - xmlStreamWriter.writeStartElement(reader.getPrefix(), reader.getLocalName(), reader - .getNamespaceURI()); - int namespaceCount = reader.getNamespaceCount(); - for (int i = namespaceCount - 1; i >= 0; i--) { - xmlStreamWriter.writeNamespace(reader.getNamespacePrefix(i), reader.getNamespaceURI(i)); - } - int attributeCount = reader.getAttributeCount(); - for (int i = 0; i < attributeCount; i++) { - xmlStreamWriter.writeAttribute(reader.getAttributePrefix(i), - reader.getAttributeNamespace(i), - reader.getAttributeLocalName(i), - reader.getAttributeValue(i)); - } - break; - case XMLStreamConstants.START_DOCUMENT: - break; - case XMLStreamConstants.CHARACTERS: - xmlStreamWriter.writeCharacters(reader.getText()); - break; - case XMLStreamConstants.CDATA: - xmlStreamWriter.writeCData(reader.getText()); - break; - case XMLStreamConstants.END_ELEMENT: - xmlStreamWriter.writeEndElement(); - break; - case XMLStreamConstants.END_DOCUMENT: - xmlStreamWriter.writeEndDocument(); - break; - case XMLStreamConstants.SPACE: - break; - case XMLStreamConstants.COMMENT: - xmlStreamWriter.writeComment(reader.getText()); - break; - case XMLStreamConstants.DTD: - xmlStreamWriter.writeDTD(reader.getText()); - break; - case XMLStreamConstants.PROCESSING_INSTRUCTION: - xmlStreamWriter.writeProcessingInstruction(reader.getPITarget(), reader.getPIData()); - break; - case XMLStreamConstants.ENTITY_REFERENCE: - xmlStreamWriter.writeEntityRef(reader.getLocalName()); - break; - default: - throw new OMException(); - } - } - xmlStreamWriter.writeEndDocument(); - } - - /** - * Gives the StAX reader using the "Mapped" formatted input JSON String. - * - * @return The XMLStreamReader according to the JSON String. - * @throws javax.xml.stream.XMLStreamException if there is an error while making the StAX reader. - */ - - public javax.xml.stream.XMLStreamReader getReader() throws javax.xml.stream.XMLStreamException { - - Map<String, String> nsMap = new HashMap<String, String>(); - nsMap.put("", ""); - - // input factory for "Mapped" convention - MappedXMLInputFactory inputFactory = new MappedXMLInputFactory(nsMap); - String jsonString = this.getJSONString(); - return inputFactory.createXMLStreamReader(new JSONTokener(jsonString)); - } - - // returns the json string by consuming the JSON input stream. - protected String getJSONString() { - return json.toString(); - } - -} |