001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */
019: package org.apache.axis2.jaxws.message.factory;
020:
021: import org.apache.axiom.om.OMElement;
022: import org.apache.axis2.jaxws.message.Block;
023:
024: import javax.xml.namespace.QName;
025: import javax.xml.stream.XMLStreamException;
026: import javax.xml.stream.XMLStreamReader;
027: import javax.xml.ws.WebServiceException;
028:
029: /**
030: * BlockFactory
031: * <p/>
032: * Interface to create Block objects An object is created from either a reader, another Block or the
033: * BusinessObject. Some business objects (like JAXB) have an associated context object
034: * (JAXBContext), these are also passed to the createMethods.
035: * <p/>
036: * The implementation of BlockFactories should always be singleton objects and never carry any
037: * instance data.
038: * <p/>
039: * The FactoryRegistry should be used to get access to a Factory
040: *
041: * @see org.apache.axis2.jaxws.registry.FactoryRegistry
042: */
043: public interface BlockFactory {
044:
045: /**
046: * createBlock from XMLStreamReader
047: *
048: * @param reader XMLStreamReader
049: * @param context Associated Context or null
050: * @param QName must be supplied if known
051: * @throws XMLStreamException
052: * @throws WebServiceException
053: */
054: public Block createFrom(XMLStreamReader reader, Object context,
055: QName qName) throws XMLStreamException, WebServiceException;
056:
057: /**
058: * createBlock from XMLStreamReader
059: *
060: * @param omElement OMElement
061: * @param context Associated Context or null
062: * @param QName must be supplied if known
063: * @throws XMLStreamException
064: * @throws WebServiceException
065: */
066: public Block createFrom(OMElement omElement, Object context,
067: QName qName) throws XMLStreamException, WebServiceException;
068:
069: /**
070: * createBlock from another Block If the other Block was created with the same factory and has the
071: * same context, the other Block is returned. If the other Block was created by a different factory
072: * or diffent context, a new block is returned (and the other block is consumed)
073: *
074: * @param other Block
075: * @param context Associated Context or null
076: * @throws XMLStreamException
077: * @throws WebServiceException
078: */
079: public Block createFrom(Block other, Object context)
080: throws XMLStreamException, WebServiceException;
081:
082: /**
083: * Create from business object
084: *
085: * @param businessObject
086: * @param context Associated Context or null
087: * @param QName must be supplied if known
088: * @throws XMLStreamException
089: * @throws WebServiceException
090: */
091: public Block createFrom(Object businessObject, Object context,
092: QName qName) throws WebServiceException;
093:
094: /**
095: * @return true if business object must be rendered as an element
096: * example JAXBFactory ...true
097: * example SourceFactory...false
098: */
099: public boolean isElement();
100: }
|