diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:07:37 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:07:37 +0000 |
commit | 9f395ebf3ec27f89c8dc63137bc99c8d6b0cff6d (patch) | |
tree | 34231d72966aa918e80eea15602b6870d8b21641 /sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding | |
parent | 07b7dfd1a70ba222b899d9813f8c449dbf3b785f (diff) |
Moving 1.x branches
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835125 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding')
66 files changed, 3587 insertions, 0 deletions
diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/AbstractBroker.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/AbstractBroker.java new file mode 100644 index 0000000000..a46ae13763 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/AbstractBroker.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class AbstractBroker implements EncodingObject { + + private BrokerProducerReference brokerProducerReference; + private BrokerConsumerReference brokerConsumerReference; + + public BrokerProducerReference getBrokerProducerReference() { + return this.brokerProducerReference; + } + + public void setBrokerProducerReference(BrokerProducerReference brokerProducerReference) { + this.brokerProducerReference = brokerProducerReference; + } + + public BrokerConsumerReference getBrokerConsumerReference() { + return this.brokerConsumerReference; + } + + public void setBrokerConsumerReference(BrokerConsumerReference brokerConsumerReference) { + this.brokerConsumerReference = brokerConsumerReference; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/AbstractBrokerEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/AbstractBrokerEnDeCoder.java new file mode 100644 index 0000000000..8dc5be9b16 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/AbstractBrokerEnDeCoder.java @@ -0,0 +1,88 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public abstract class AbstractBrokerEnDeCoder<B extends AbstractBroker> extends AbstractEnDeCoder<B> { + + public AbstractBrokerEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(B encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + QName qName = getEncodingObjectQName(); + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, qName.getLocalPart(), qName.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, qName.getNamespaceURI()); + registry.encode(encodingObject.getBrokerConsumerReference(), writer); + registry.encode(encodingObject.getBrokerProducerReference(), writer); + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public B decode(XMLStreamReader reader) throws EncodingException { + + try { + B brokerElement = getEncodingObjectType().newInstance(); + boolean haveBCR = false; + boolean haveBPR = false; + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + if (encodingObject instanceof BrokerConsumerReference && !haveBCR) { + brokerElement.setBrokerConsumerReference((BrokerConsumerReference)encodingObject); + haveBCR = true; + } + else if(encodingObject instanceof BrokerProducerReference && !haveBPR) { + brokerElement.setBrokerProducerReference((BrokerProducerReference)encodingObject); + haveBPR = true; + } + else { + throw new EncodingException("Invalid encoding object"); + } + break; + case END_ELEMENT: + if (!haveBCR) { + throw new EncodingException("Missing broker consumer reference"); + } + if (!haveBPR) { + throw new EncodingException("Missing broker producer reference"); + } + return brokerElement; + } + } + } catch (Exception ex) { + throw new EncodingException(ex); + } + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/AbstractEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/AbstractEnDeCoder.java new file mode 100644 index 0000000000..015ccebaa9 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/AbstractEnDeCoder.java @@ -0,0 +1,50 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; + +/** + * @version $Rev$ $Date$ + */ +public abstract class AbstractEnDeCoder<E extends EncodingObject> implements + EnDeCoder<E> { + + protected EncodingRegistry registry; + + protected AbstractEnDeCoder(EncodingRegistry registry) { + + this.registry = registry; + } + + public void start() { + Class<E> encodingType = getEncodingObjectType(); + QName encodingQName = getEncodingObjectQName(); + + registry.registerEnDeCoder(encodingType, encodingQName, this); + } + + public void stop() { + Class<E> encodingType = getEncodingObjectType(); + QName encodingQName = getEncodingObjectQName(); + + registry.unregisterEnDeCoder(encodingType, encodingQName); + } + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Broker.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Broker.java new file mode 100644 index 0000000000..41610edc3b --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Broker.java @@ -0,0 +1,25 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class Broker extends AbstractBroker { +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerConsumerReference.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerConsumerReference.java new file mode 100644 index 0000000000..e80af5ea68 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerConsumerReference.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class BrokerConsumerReference extends EndpointReferenceWrapper { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerConsumerReferenceEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerConsumerReferenceEnDeCoder.java new file mode 100644 index 0000000000..7df1c21ca9 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerConsumerReferenceEnDeCoder.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; + +/** + * @version $Rev$ $Date$ + */ +public class BrokerConsumerReferenceEnDeCoder extends EndpointReferenceWrapperEnDeCoder<BrokerConsumerReference> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.BrokerConsumerReference); + + public BrokerConsumerReferenceEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<BrokerConsumerReference> getEncodingObjectType() { + return BrokerConsumerReference.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerEnDeCoder.java new file mode 100644 index 0000000000..a4bee61947 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerEnDeCoder.java @@ -0,0 +1,46 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; + +/** + * @version $Rev$ $Date$ + */ +public class BrokerEnDeCoder extends AbstractBrokerEnDeCoder<Broker> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.Broker); + + public BrokerEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<Broker> getEncodingObjectType() { + + return Broker.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerID.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerID.java new file mode 100644 index 0000000000..aec7907441 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerID.java @@ -0,0 +1,41 @@ +/* + * 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.binding.notification.encoding; + +import java.util.UUID; + +/** + * @version $Rev$ $Date$ + */ +public class BrokerID implements EncodingObject { + + private String id; + + public String getID() { + return id; + } + + public void setID(String id) { + this.id = id; + } + + public static String generate() { + return UUID.randomUUID().toString(); + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerIDEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerIDEnDeCoder.java new file mode 100644 index 0000000000..68d9340abf --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerIDEnDeCoder.java @@ -0,0 +1,91 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class BrokerIDEnDeCoder extends AbstractEnDeCoder<BrokerID> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.BrokerID); + + public BrokerIDEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(BrokerID encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, QNAME.getNamespaceURI()); + writer.writeCharacters(encodingObject.getID()); + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public BrokerID decode(XMLStreamReader reader) throws EncodingException { + + try { + BrokerID brokerIDElement = new BrokerID(); + while (true) { + switch (reader.next()) { + case START_ELEMENT: + break; + case XMLStreamConstants.CHARACTERS: + if (reader.hasText()) { + String id = reader.getText(); + brokerIDElement.setID(id); + } + else { + throw new EncodingException("Broker ID missing value"); + } + break; + case END_ELEMENT: + return brokerIDElement; + } + } + } catch (XMLStreamException ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<BrokerID> getEncodingObjectType() { + + return BrokerID.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerProducerReference.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerProducerReference.java new file mode 100644 index 0000000000..04d7aca0e6 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerProducerReference.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class BrokerProducerReference extends EndpointReferenceWrapper { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerProducerReferenceEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerProducerReferenceEnDeCoder.java new file mode 100644 index 0000000000..ea66e8f11b --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokerProducerReferenceEnDeCoder.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; + +/** + * @version $Rev$ $Date$ + */ +public class BrokerProducerReferenceEnDeCoder extends EndpointReferenceWrapperEnDeCoder<BrokerProducerReference> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.BrokerProducerReference); + + public BrokerProducerReferenceEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<BrokerProducerReference> getEncodingObjectType() { + return BrokerProducerReference.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Brokers.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Brokers.java new file mode 100644 index 0000000000..9b7eb149e0 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Brokers.java @@ -0,0 +1,41 @@ +/* + * 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.binding.notification.encoding; + +import java.util.ArrayList; +import java.util.List; + +/** + * @version $Rev$ $Date$ + */ +public class Brokers implements EncodingObject { + + private List<Broker> brokerSequence; + + public List<Broker> getBrokerSequence() { + return brokerSequence; + } + + public void addBrokerToSequence(Broker broker) { + if(this.brokerSequence == null) { + this.brokerSequence = new ArrayList<Broker>(); + } + this.brokerSequence.add(broker); + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokersEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokersEnDeCoder.java new file mode 100644 index 0000000000..1c3a0aaee8 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/BrokersEnDeCoder.java @@ -0,0 +1,89 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class BrokersEnDeCoder extends AbstractEnDeCoder<Brokers> { + + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.Brokers); + + public BrokersEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(Brokers encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + QName qName = getEncodingObjectQName(); + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, qName.getLocalPart(), qName.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, qName.getNamespaceURI()); + if (encodingObject.getBrokerSequence() != null) { + for (Broker broker : encodingObject.getBrokerSequence()) { + registry.encode(broker, writer); + } + } + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public Brokers decode(XMLStreamReader reader) throws EncodingException { + + try { + Brokers brokersElement = new Brokers(); + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + brokersElement.addBrokerToSequence((Broker)encodingObject); + break; + case END_ELEMENT: + return brokersElement; + } + } + } catch (XMLStreamException ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<Brokers> getEncodingObjectType() { + + return Brokers.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverride.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverride.java new file mode 100644 index 0000000000..eb1a89812d --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverride.java @@ -0,0 +1,35 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class ConnectionOverride implements EncodingObject { + + private BrokerConsumerReference brokerConsumerReference; + + public BrokerConsumerReference getBrokerConsumerReference() { + return this.brokerConsumerReference; + } + + public void setBrokerConsumerReference(BrokerConsumerReference brokerConsumerReference) { + this.brokerConsumerReference = brokerConsumerReference; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverrideEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverrideEnDeCoder.java new file mode 100644 index 0000000000..af20d02c00 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverrideEnDeCoder.java @@ -0,0 +1,83 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class ConnectionOverrideEnDeCoder extends AbstractEnDeCoder<ConnectionOverride> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.ConnectionOverride); + + public ConnectionOverrideEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(ConnectionOverride encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, QNAME.getNamespaceURI()); + registry.encode(encodingObject.getBrokerConsumerReference(), writer); + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public ConnectionOverride decode(XMLStreamReader reader) throws EncodingException { + + try { + ConnectionOverride connectionOverrideElement = new ConnectionOverride(); + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + connectionOverrideElement.setBrokerConsumerReference((BrokerConsumerReference)encodingObject); + break; + case END_ELEMENT: + return connectionOverrideElement; + } + } + } catch (Exception ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<ConnectionOverride> getEncodingObjectType() { + + return ConnectionOverride.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverrideResponse.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverrideResponse.java new file mode 100644 index 0000000000..8dcf9fda58 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverrideResponse.java @@ -0,0 +1,25 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class ConnectionOverrideResponse implements EncodingObject { +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverrideResponseEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverrideResponseEnDeCoder.java new file mode 100644 index 0000000000..c5c8a99e5c --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConnectionOverrideResponseEnDeCoder.java @@ -0,0 +1,77 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class ConnectionOverrideResponseEnDeCoder extends AbstractEnDeCoder<ConnectionOverrideResponse> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.ConnectionOverrideResponse); + + public ConnectionOverrideResponseEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(ConnectionOverrideResponse encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, QNAME.getNamespaceURI()); + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public ConnectionOverrideResponse decode(XMLStreamReader reader) throws EncodingException { + + try { + ConnectionOverrideResponse connectionOverrideResponseElement = new ConnectionOverrideResponse(); + while (true) { + switch (reader.next()) { + case END_ELEMENT: + return connectionOverrideResponseElement; + } + } + } catch (Exception ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<ConnectionOverrideResponse> getEncodingObjectType() { + + return ConnectionOverrideResponse.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Constants.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Constants.java new file mode 100644 index 0000000000..e92ffc1d0c --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Constants.java @@ -0,0 +1,74 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public interface Constants { + + String NOTIFICATION_NS = "http://docs.oasis-open.org/wsn/b-2"; + String NOTIFICATION_PREFIX = "wsnt"; + String ADDRESSING_NS = "http://schemas.xmlsoap.org/ws/2004/08/addressing"; + String ADDRESSING_PREFIX = "wsa"; + String Subscribe = "Subscribe"; + String ConsumerReference = "ConsumerReference"; + String Address = "Address"; + String ReferenceProperties = "ReferenceProperties"; + String EndpointReference = "EndpointReference"; + String BrokerID = "BrokerID"; + String NewConsumer = "NewConsumer"; + String NewProducer = "NewProducer"; + String NewConsumerResponse = "NewConsumerResponse"; + String NewProducerResponse = "NewProducerResponse"; + String ConsumerSequenceType = "ConsumerSequenceType"; + String EndConsumers = "EndConsumers"; + String BrokerConsumers = "BrokerConsumers"; + String NoConsumers = "NoConsumers"; + String ProducerSequenceType = "ProducerSequenceType"; + String EndProducers = "EndProducers"; + String BrokerProducers = "BrokerProducers"; + String NoProducers = "NoProducers"; + String Broker = "Broker"; + String NewBroker = "NewBroker"; + String NewBrokerAck = "NewBrokerAck"; + String BrokerConsumerReference = "BrokerConsumerReference"; + String BrokerProducerReference = "BrokerProducerReference"; + String NewBrokerResponse = "NewBrokerResponse"; + String FirstBroker = "FirstBroker"; + String Brokers = "Brokers"; + String ConnectionOverride = "ConnectionOverride"; + String ConnectionOverrideResponse = "ConnectionOverrideResponse"; + String NeighborBrokerConsumers = "NeighborBrokerConsumers"; + String RemoveBroker = "RemoveBroker"; + String RemovedBroker = "RemovedBroker"; + String Neighbors = "Neighbors"; + String ReplaceBrokerConnection = "ReplaceBrokerConnection"; + + String SUBSCRIBE_OP = "subscribe"; + String CONNECTION_OVERRIDE_OP = "connectionOverride"; + String NEW_CONSUMER_OP = "newConsumer"; + String NEW_PRODUCER_OP = "newProducer"; + String NEW_BROKER_OP = "newBroker"; + String NEW_BROKER_ACK_OP = "newBrokerAck"; + String REMOVE_BROKER_OP = "removeBroker"; + String REPLACE_BROKER_CONNECTION_OP = "replaceBrokerConnection"; + + String Broker_ID = "brokerID"; +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConsumerReference.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConsumerReference.java new file mode 100644 index 0000000000..c2c16ab5cd --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConsumerReference.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class ConsumerReference extends EndpointReferenceWrapper { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConsumerReferenceEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConsumerReferenceEnDeCoder.java new file mode 100644 index 0000000000..68099b40bb --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ConsumerReferenceEnDeCoder.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; + +/** + * @version $Rev$ $Date$ + */ +public class ConsumerReferenceEnDeCoder extends EndpointReferenceWrapperEnDeCoder<ConsumerReference> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.ConsumerReference); + + public ConsumerReferenceEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<ConsumerReference> getEncodingObjectType() { + return ConsumerReference.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/DefaultEncodingRegistry.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/DefaultEncodingRegistry.java new file mode 100644 index 0000000000..9533ea3062 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/DefaultEncodingRegistry.java @@ -0,0 +1,78 @@ +/* + * 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.binding.notification.encoding; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class DefaultEncodingRegistry implements EncodingRegistry { + + private final Map<Class<? extends EncodingObject>, EnDeCoder> encoderRegistry = + new ConcurrentHashMap<Class<? extends EncodingObject>, EnDeCoder>(); + + private final Map<QName, EnDeCoder> decoderRegistry = new ConcurrentHashMap<QName, EnDeCoder>(); + + public DefaultEncodingRegistry() { + } + + public <E extends EncodingObject> void registerEnDeCoder(Class<E> encodingClass, QName qname, EnDeCoder<E> enDeCoder) { + + encoderRegistry.put(encodingClass, enDeCoder); + decoderRegistry.put(qname, enDeCoder); + } + + public <E extends EncodingObject> void unregisterEnDeCoder(Class<E> encodingClass, QName qname) { + + encoderRegistry.remove(encodingClass); + decoderRegistry.remove(qname); + } + + @SuppressWarnings("unchecked") + public void encode(EncodingObject encodingObject, XMLStreamWriter writer) throws EncodingException { + + EnDeCoder encoder = encoderRegistry.get(encodingObject.getClass()); + if (encoder == null) { + throw new EncodingException("No encoder defined for " + encodingObject.getClass()); + } + encoder.encode(encodingObject, writer); + } + + public EncodingObject decode(XMLStreamReader reader) throws EncodingException { + + QName qname = reader.getName(); + + EnDeCoder decoder = decoderRegistry.get(qname); + if (decoder == null) { + throw new EncodingException("No decoder defined for " + qname); + } + return decoder.decode(reader); + } + + public void stop() { + encoderRegistry.clear(); + decoderRegistry.clear(); + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EnDeCoder.java new file mode 100644 index 0000000000..159357ed90 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EnDeCoder.java @@ -0,0 +1,62 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public interface EnDeCoder<E extends EncodingObject> { + + /** + * Encodes an object to the specified stream writer. + * + * @param encodingObject Object to be serialized. + * @param writer Stream writer to which the infoset is serialized. + * @throws EncodingException In case of any encoding error. + */ + void encode(E encodingObject, XMLStreamWriter writer) throws EncodingException; + + /** + * Decodes an XML stream to an object. + * + * @param reader XML stream from where the encoded XML is read. + * @return Encoding object. + * @throws EncodingException In case of any encoding error. + */ + E decode(XMLStreamReader reader) throws EncodingException; + + /** + * Gets the qualified name of the XML fragment for the Encoding + * object. + * + * @return Qualified name of the XML fragment. + */ + QName getEncodingObjectQName(); + + /** + * Returns the type of the encoding object. + * + * @return Encoding object type. + */ + Class<E> getEncodingObjectType(); +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingException.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingException.java new file mode 100644 index 0000000000..76e4999ddc --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingException.java @@ -0,0 +1,49 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +@SuppressWarnings("serial") +public class EncodingException extends Exception { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * Initializes the exception message. + * + * @param message Message for the exception. + */ + public EncodingException(String message) { + super(message); + } + + /** + * Initializes the root cause. + * + * @param cause Root cause for the exception. + */ + public EncodingException(Throwable cause) { + super(cause); + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingObject.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingObject.java new file mode 100644 index 0000000000..54bda38033 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingObject.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public interface EncodingObject { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingRegistry.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingRegistry.java new file mode 100644 index 0000000000..c0a324d663 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingRegistry.java @@ -0,0 +1,57 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public interface EncodingRegistry { + + /** + * Registers an en/de coder. + * + * @param <E> Encoding object type. + * @param encodingClass Encoding obejct class. + * @param qname Qualified name of the root element of the encoded XML. + * @param enDeCoder Encoding object enDeCoder. + */ + <E extends EncodingObject> void registerEnDeCoder(Class<E> encodingClass, QName qname, EnDeCoder<E> enDeCoder); + + <E extends EncodingObject> void unregisterEnDeCoder(Class<E> encodingClass, QName qname); + + /** + * Encodes an object. + * + * @param encodingObject Encoding object to be encoded. + * @param writer Writer to which encoded information is written. + */ + void encode(EncodingObject encodingObject, XMLStreamWriter writer) throws EncodingException; + + /** + * Decodes an XML stream to an encoding object. + * + * @param reader Reader from which encoded information is read. + * @return Encoding object from the encoded stream. + */ + EncodingObject decode(XMLStreamReader reader) throws EncodingException; +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingUtils.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingUtils.java new file mode 100644 index 0000000000..8318892e0f --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EncodingUtils.java @@ -0,0 +1,85 @@ +/* + * 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.binding.notification.encoding; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; + +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +import org.apache.tuscany.sca.binding.notification.util.IOUtils.IOUtilsException; + +/** + * @version $Rev$ $Date$ + */ +public class EncodingUtils { + + private static XMLOutputFactory xof = XMLOutputFactory.newInstance(); + private static XMLInputFactory xif = XMLInputFactory.newInstance(); + + public static void encodeToStream(EncodingRegistry encodingRegistry, + EncodingObject eo, + OutputStream os) throws IOUtilsException { + try { + XMLStreamWriter writer = xof.createXMLStreamWriter(os); + encodingRegistry.encode(eo, writer); + writer.flush(); + writer.close(); + } + catch(Exception e) { + throw new IOUtilsException(e); + } + } + + public static EncodingObject decodeFromStream(EncodingRegistry encodingRegistry, + InputStream istream) throws EncodingException { + EncodingObject eo = null; + try { + XMLStreamReader reader = xif.createXMLStreamReader(istream); + reader.next(); + eo = encodingRegistry.decode(reader); + reader.close(); + } + catch(XMLStreamException e) { + throw new EncodingException(e); + } + + return eo; + } + + public static EndpointReference createEndpointReference(URL address, String brokerID) { + EndpointAddress epa = new EndpointAddress(); + epa.setAddress(address); + EndpointReference epr = new EndpointReference(); + epr.setEndpointAddress(epa); + if (brokerID != null) { + BrokerID bi = new BrokerID(); + bi.setID(brokerID); + ReferenceProperties rp = new ReferenceProperties(); + rp.addProperty(bi); + epr.setReferenceProperties(rp); + } + return epr; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndConsumers.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndConsumers.java new file mode 100644 index 0000000000..aaa9ddb7b5 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndConsumers.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class EndConsumers extends EndpointReferenceSequence { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndConsumersEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndConsumersEnDeCoder.java new file mode 100644 index 0000000000..26b8fd0357 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndConsumersEnDeCoder.java @@ -0,0 +1,61 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class EndConsumersEnDeCoder extends EndpointReferenceSequenceEnDeCoder<EndConsumers> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.EndConsumers); + + public EndConsumersEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<EndConsumers> getEncodingObjectType() { + return EndConsumers.class; + } + + @Override + protected void encodeSequenceTypeAttribute(EndConsumers encodingObject, XMLStreamWriter writer) throws EncodingException { + try { + writer.writeAttribute(Constants.ConsumerSequenceType, encodingObject.getSequenceType()); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + @Override + protected String decodeSequenceTypeAttribute(XMLStreamReader reader) { + return reader.getAttributeValue(null, Constants.ConsumerSequenceType); + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndProducers.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndProducers.java new file mode 100644 index 0000000000..b546f8c550 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndProducers.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class EndProducers extends EndpointReferenceSequence { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndProducersEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndProducersEnDeCoder.java new file mode 100644 index 0000000000..1039a3df9d --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndProducersEnDeCoder.java @@ -0,0 +1,61 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class EndProducersEnDeCoder extends EndpointReferenceSequenceEnDeCoder<EndProducers> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.EndProducers); + + public EndProducersEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<EndProducers> getEncodingObjectType() { + return EndProducers.class; + } + + @Override + protected void encodeSequenceTypeAttribute(EndProducers encodingObject, XMLStreamWriter writer) throws EncodingException { + try { + writer.writeAttribute(Constants.ProducerSequenceType, encodingObject.getSequenceType()); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + @Override + protected String decodeSequenceTypeAttribute(XMLStreamReader reader) { + return reader.getAttributeValue(null, Constants.ProducerSequenceType); + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointAddress.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointAddress.java new file mode 100644 index 0000000000..25eb336c05 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointAddress.java @@ -0,0 +1,45 @@ +/* + * 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.binding.notification.encoding; + +import java.net.URL; + +/** + * @version $Rev$ $Date$ + */ +public class EndpointAddress implements EncodingObject { + + private URL address; + + public URL getAddress() { + return address; + } + + public void setAddress(URL address) { + this.address = address; + } + + public void setAddress(String addressText) throws EncodingException { + try { + this.address = new URL(addressText); + } catch(Exception e) { + throw new EncodingException(e); + } + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointAddressEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointAddressEnDeCoder.java new file mode 100644 index 0000000000..76f2e8ec81 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointAddressEnDeCoder.java @@ -0,0 +1,91 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class EndpointAddressEnDeCoder extends AbstractEnDeCoder<EndpointAddress> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.ADDRESSING_NS, Constants.Address); + + public EndpointAddressEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(EndpointAddress encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.ADDRESSING_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.ADDRESSING_PREFIX, QNAME.getNamespaceURI()); + writer.writeCharacters(encodingObject.getAddress().toString()); + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public EndpointAddress decode(XMLStreamReader reader) throws EncodingException { + + try { + EndpointAddress endpointAddressElement = new EndpointAddress(); + while (true) { + switch (reader.next()) { + case START_ELEMENT: + break; + case XMLStreamConstants.CHARACTERS: + if (reader.hasText()) { + String address = reader.getText(); + endpointAddressElement.setAddress(address); + } + else { + throw new EncodingException("Endpoint address is missing address"); + } + break; + case END_ELEMENT: + return endpointAddressElement; + } + } + } catch (XMLStreamException ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<EndpointAddress> getEncodingObjectType() { + + return EndpointAddress.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReference.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReference.java new file mode 100644 index 0000000000..fa73da9a19 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReference.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class EndpointReference implements EncodingObject { + + private EndpointAddress endpointAddress; + private ReferenceProperties referenceProperties; + + public EndpointAddress getEndpointAddress() { + return this.endpointAddress; + } + + public void setEndpointAddress(EndpointAddress endpointAddress) { + this.endpointAddress = endpointAddress; + } + + public ReferenceProperties getReferenceProperties() { + return this.referenceProperties; + } + + public void setReferenceProperties(ReferenceProperties referenceProperties) { + this.referenceProperties = referenceProperties; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceEnDeCoder.java new file mode 100644 index 0000000000..8a05440319 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceEnDeCoder.java @@ -0,0 +1,101 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class EndpointReferenceEnDeCoder extends AbstractEnDeCoder<EndpointReference> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.ADDRESSING_NS, Constants.EndpointReference); + + public EndpointReferenceEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(EndpointReference encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.ADDRESSING_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.ADDRESSING_PREFIX, QNAME.getNamespaceURI()); + registry.encode(encodingObject.getEndpointAddress(), writer); + if (encodingObject.getReferenceProperties() != null) { + registry.encode(encodingObject.getReferenceProperties(), writer); + } + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public EndpointReference decode(XMLStreamReader reader) throws EncodingException { + + try { + EndpointReference endpointReferenceElement = new EndpointReference(); + boolean haveEPA = false; + boolean haveRP = false; + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + if (encodingObject instanceof EndpointAddress && !haveEPA) { + endpointReferenceElement.setEndpointAddress((EndpointAddress)encodingObject); + haveEPA = true; + } + else if(encodingObject instanceof ReferenceProperties && !haveRP) { + endpointReferenceElement.setReferenceProperties((ReferenceProperties)encodingObject); + haveRP = true; + } + else { + throw new EncodingException("Invalid encoding object"); + } + break; + case END_ELEMENT: + if (!haveEPA) { + throw new EncodingException("Missing endpoint address"); + } + return endpointReferenceElement; + } + } + } catch (Exception ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<EndpointReference> getEncodingObjectType() { + + return EndpointReference.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceSequence.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceSequence.java new file mode 100644 index 0000000000..39d53bca8d --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceSequence.java @@ -0,0 +1,54 @@ +/* + * 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.binding.notification.encoding; + +import java.util.ArrayList; +import java.util.List; + +/** + * @version $Rev$ $Date$ + */ +public class EndpointReferenceSequence implements EncodingObject { + + private List<EndpointReference> referenceSequence; + private String sequenceType; + + public List<EndpointReference> getReferenceSequence() { + return referenceSequence; + } + + public void addReferenceToSequence(EndpointReference address) { + if(this.referenceSequence == null) { + this.referenceSequence = new ArrayList<EndpointReference>(); + } + this.referenceSequence.add(address); + } + + public void setReferenceSequence(List<EndpointReference> referenceSequence) { + this.referenceSequence = referenceSequence; + } + + public String getSequenceType() { + return this.sequenceType; + } + + public void setSequenceType(String sequenceType) { + this.sequenceType = sequenceType; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceSequenceEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceSequenceEnDeCoder.java new file mode 100644 index 0000000000..13d686b803 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceSequenceEnDeCoder.java @@ -0,0 +1,85 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public abstract class EndpointReferenceSequenceEnDeCoder<ERS extends EndpointReferenceSequence> extends AbstractEnDeCoder<ERS> { + + public EndpointReferenceSequenceEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(ERS encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + QName qName = getEncodingObjectQName(); + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, qName.getLocalPart(), qName.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, qName.getNamespaceURI()); + encodeSequenceTypeAttribute(encodingObject, writer); + if (encodingObject.getReferenceSequence() != null) { + for (EndpointReference endpointReference : encodingObject.getReferenceSequence()) { + registry.encode(endpointReference, writer); + } + } + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + protected abstract void encodeSequenceTypeAttribute(ERS encodingObject, XMLStreamWriter writer) throws EncodingException; + + public ERS decode(XMLStreamReader reader) throws EncodingException { + + try { + ERS endpointReferenceSequenceElement = null; + try { + endpointReferenceSequenceElement = getEncodingObjectType().newInstance(); + } catch(Exception e) { + throw new EncodingException(e); + } + String sequenceType = decodeSequenceTypeAttribute(reader); + endpointReferenceSequenceElement.setSequenceType(sequenceType); + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + endpointReferenceSequenceElement.addReferenceToSequence((EndpointReference)encodingObject); + break; + case END_ELEMENT: + return endpointReferenceSequenceElement; + } + } + } catch (XMLStreamException ex) { + throw new EncodingException(ex); + } + } + + protected abstract String decodeSequenceTypeAttribute(XMLStreamReader reader); +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceWrapper.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceWrapper.java new file mode 100644 index 0000000000..f1f1a7737b --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceWrapper.java @@ -0,0 +1,35 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class EndpointReferenceWrapper implements EncodingObject { + + private EndpointReference reference; + + public EndpointReference getReference() { + return reference; + } + + public void setReference(EndpointReference reference) { + this.reference = reference; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceWrapperEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceWrapperEnDeCoder.java new file mode 100644 index 0000000000..aeafce46e0 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/EndpointReferenceWrapperEnDeCoder.java @@ -0,0 +1,74 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public abstract class EndpointReferenceWrapperEnDeCoder<ERW extends EndpointReferenceWrapper> extends AbstractEnDeCoder<ERW> { + + public EndpointReferenceWrapperEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(ERW encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + QName qName = getEncodingObjectQName(); + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, qName.getLocalPart(), qName.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, qName.getNamespaceURI()); + registry.encode(encodingObject.getReference(), writer); + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public ERW decode(XMLStreamReader reader) throws EncodingException { + + try { + ERW endpointReferenceWrapperElement = null; + try { + endpointReferenceWrapperElement = getEncodingObjectType().newInstance(); + } catch(Exception e) { + throw new EncodingException(e); + } + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + endpointReferenceWrapperElement.setReference((EndpointReference)encodingObject); + break; + case END_ELEMENT: + return endpointReferenceWrapperElement; + } + } + } catch (XMLStreamException ex) { + throw new EncodingException(ex); + } + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NeighborBrokerConsumers.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NeighborBrokerConsumers.java new file mode 100644 index 0000000000..5871d370fb --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NeighborBrokerConsumers.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class NeighborBrokerConsumers extends EndpointReferenceSequence { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NeighborBrokerConsumersEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NeighborBrokerConsumersEnDeCoder.java new file mode 100644 index 0000000000..ba52687e16 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NeighborBrokerConsumersEnDeCoder.java @@ -0,0 +1,61 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class NeighborBrokerConsumersEnDeCoder extends EndpointReferenceSequenceEnDeCoder<NeighborBrokerConsumers> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.NeighborBrokerConsumers); + + public NeighborBrokerConsumersEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<NeighborBrokerConsumers> getEncodingObjectType() { + return NeighborBrokerConsumers.class; + } + + @Override + protected void encodeSequenceTypeAttribute(NeighborBrokerConsumers encodingObject, XMLStreamWriter writer) throws EncodingException { + try { + writer.writeAttribute(Constants.ConsumerSequenceType, encodingObject.getSequenceType()); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + @Override + protected String decodeSequenceTypeAttribute(XMLStreamReader reader) { + return reader.getAttributeValue(null, Constants.ConsumerSequenceType); + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Neighbors.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Neighbors.java new file mode 100644 index 0000000000..0aec2da465 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Neighbors.java @@ -0,0 +1,45 @@ +/* + * 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.binding.notification.encoding; + +import java.util.ArrayList; +import java.util.List; + +/** + * @version $Rev$ $Date$ + */ +public class Neighbors implements EncodingObject { + + private List<Broker> brokerSequence; + + public List<Broker> getBrokerSequence() { + return brokerSequence; + } + + public void addBrokerToSequence(Broker broker) { + if(this.brokerSequence == null) { + this.brokerSequence = new ArrayList<Broker>(); + } + this.brokerSequence.add(broker); + } + + public void setBrokerSequence(List<Broker> brokerSequence) { + this.brokerSequence = brokerSequence; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NeighborsEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NeighborsEnDeCoder.java new file mode 100644 index 0000000000..53f56b6626 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NeighborsEnDeCoder.java @@ -0,0 +1,89 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class NeighborsEnDeCoder extends AbstractEnDeCoder<Neighbors> { + + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.Neighbors); + + public NeighborsEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(Neighbors encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + QName qName = getEncodingObjectQName(); + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, qName.getLocalPart(), qName.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, qName.getNamespaceURI()); + if (encodingObject.getBrokerSequence() != null) { + for (Broker broker : encodingObject.getBrokerSequence()) { + registry.encode(broker, writer); + } + } + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public Neighbors decode(XMLStreamReader reader) throws EncodingException { + + try { + Neighbors neighborsElement = new Neighbors(); + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + neighborsElement.addBrokerToSequence((Broker)encodingObject); + break; + case END_ELEMENT: + return neighborsElement; + } + } + } catch (XMLStreamException ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<Neighbors> getEncodingObjectType() { + + return Neighbors.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBroker.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBroker.java new file mode 100644 index 0000000000..1684d0c3ee --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBroker.java @@ -0,0 +1,25 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class NewBroker extends AbstractBroker { +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerAck.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerAck.java new file mode 100644 index 0000000000..f4702806e0 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerAck.java @@ -0,0 +1,25 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class NewBrokerAck implements EncodingObject { +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerAckEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerAckEnDeCoder.java new file mode 100644 index 0000000000..fcd0717688 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerAckEnDeCoder.java @@ -0,0 +1,77 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class NewBrokerAckEnDeCoder extends AbstractEnDeCoder<NewBrokerAck> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.NewBrokerAck); + + public NewBrokerAckEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(NewBrokerAck encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, QNAME.getNamespaceURI()); + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public NewBrokerAck decode(XMLStreamReader reader) throws EncodingException { + + try { + NewBrokerAck newBrokerAck = new NewBrokerAck(); + while (true) { + switch (reader.next()) { + case END_ELEMENT: + return newBrokerAck; + } + } + } catch (Exception ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<NewBrokerAck> getEncodingObjectType() { + + return NewBrokerAck.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerEnDeCoder.java new file mode 100644 index 0000000000..db65ba7491 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerEnDeCoder.java @@ -0,0 +1,46 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; + +/** + * @version $Rev$ $Date$ + */ +public class NewBrokerEnDeCoder extends AbstractBrokerEnDeCoder<NewBroker> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.NewBroker); + + public NewBrokerEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<NewBroker> getEncodingObjectType() { + + return NewBroker.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerResponse.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerResponse.java new file mode 100644 index 0000000000..72aa20af3d --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerResponse.java @@ -0,0 +1,62 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class NewBrokerResponse implements EncodingObject { + + private EndProducers endProducers; + private EndConsumers endConsumers; + private Brokers brokers; + private boolean firstBroker; + + public EndProducers getEndProducers() { + return this.endProducers; + } + + public void setEndProducers(EndProducers endProducers) { + this.endProducers = endProducers; + } + + public EndConsumers getEndConsumers() { + return this.endConsumers; + } + + public void setEndConsumers(EndConsumers endConsumers) { + this.endConsumers = endConsumers; + } + + public Brokers getBrokers() { + return this.brokers; + } + + public void setBrokers(Brokers brokers) { + this.brokers = brokers; + } + + public boolean isFirstBroker() { + return this.firstBroker; + } + + public void setFirstBroker(boolean firstBroker) { + this.firstBroker = firstBroker; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerResponseEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerResponseEnDeCoder.java new file mode 100644 index 0000000000..391820444f --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewBrokerResponseEnDeCoder.java @@ -0,0 +1,119 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class NewBrokerResponseEnDeCoder extends AbstractEnDeCoder<NewBrokerResponse> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.NewBrokerResponse); + + public NewBrokerResponseEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(NewBrokerResponse encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + QName qName = getEncodingObjectQName(); + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, qName.getLocalPart(), qName.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, qName.getNamespaceURI()); + writer.writeAttribute(Constants.FirstBroker, String.valueOf(encodingObject.isFirstBroker())); + if (encodingObject.isFirstBroker()) { + registry.encode(encodingObject.getEndConsumers(), writer); + registry.encode(encodingObject.getEndProducers(), writer); + } + else { + registry.encode(encodingObject.getBrokers(), writer); + } + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public NewBrokerResponse decode(XMLStreamReader reader) throws EncodingException { + + try { + NewBrokerResponse newBrokerResponseElement = new NewBrokerResponse(); + boolean firstBroker = Boolean.parseBoolean(reader.getAttributeValue(null, Constants.FirstBroker)); + newBrokerResponseElement.setFirstBroker(firstBroker); + boolean haveEC = false; + boolean haveEP = false; + boolean haveB = false; + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + if (encodingObject instanceof EndProducers && !haveEP && firstBroker) { + newBrokerResponseElement.setEndProducers((EndProducers)encodingObject); + haveEP = true; + } + else if(encodingObject instanceof EndConsumers && !haveEC && firstBroker) { + newBrokerResponseElement.setEndConsumers((EndConsumers)encodingObject); + haveEC = true; + } + else if(encodingObject instanceof Brokers && !haveB && !firstBroker) { + newBrokerResponseElement.setBrokers((Brokers)encodingObject); + haveB = true; + } + else { + throw new EncodingException("Invalid encoding object"); + } + break; + case END_ELEMENT: + if (!haveEP && firstBroker) { + throw new EncodingException("Missing end producers"); + } + if (!haveEC && firstBroker) { + throw new EncodingException("Missing end consumers"); + } + if (!haveB && !firstBroker) { + throw new EncodingException("Missing brokers"); + } + return newBrokerResponseElement; + } + } + } catch (Exception ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<NewBrokerResponse> getEncodingObjectType() { + + return NewBrokerResponse.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumer.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumer.java new file mode 100644 index 0000000000..2c0c846841 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumer.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class NewConsumer extends EndpointReferenceWrapper { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumerEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumerEnDeCoder.java new file mode 100644 index 0000000000..8314d628ba --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumerEnDeCoder.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; + +/** + * @version $Rev$ $Date$ + */ +public class NewConsumerEnDeCoder extends EndpointReferenceWrapperEnDeCoder<NewConsumer> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.NewConsumer); + + public NewConsumerEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<NewConsumer> getEncodingObjectType() { + return NewConsumer.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumerResponse.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumerResponse.java new file mode 100644 index 0000000000..b89bfa2470 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumerResponse.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class NewConsumerResponse extends EndpointReferenceSequence { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumerResponseEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumerResponseEnDeCoder.java new file mode 100644 index 0000000000..1abb187271 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewConsumerResponseEnDeCoder.java @@ -0,0 +1,61 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class NewConsumerResponseEnDeCoder extends EndpointReferenceSequenceEnDeCoder<NewConsumerResponse> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.NewConsumerResponse); + + public NewConsumerResponseEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<NewConsumerResponse> getEncodingObjectType() { + return NewConsumerResponse.class; + } + + @Override + protected void encodeSequenceTypeAttribute(NewConsumerResponse encodingObject, XMLStreamWriter writer) throws EncodingException { + try { + writer.writeAttribute(Constants.ProducerSequenceType, encodingObject.getSequenceType()); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + @Override + protected String decodeSequenceTypeAttribute(XMLStreamReader reader) { + return reader.getAttributeValue(null, Constants.ProducerSequenceType); + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducer.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducer.java new file mode 100644 index 0000000000..f12a4582dd --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducer.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class NewProducer extends EndpointReferenceWrapper { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducerEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducerEnDeCoder.java new file mode 100644 index 0000000000..75ee8aea6f --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducerEnDeCoder.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; + +/** + * @version $Rev$ $Date$ + */ +public class NewProducerEnDeCoder extends EndpointReferenceWrapperEnDeCoder<NewProducer> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.NewProducer); + + public NewProducerEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<NewProducer> getEncodingObjectType() { + return NewProducer.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducerResponse.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducerResponse.java new file mode 100644 index 0000000000..91bf371549 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducerResponse.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class NewProducerResponse extends EndpointReferenceSequence { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducerResponseEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducerResponseEnDeCoder.java new file mode 100644 index 0000000000..34dee40761 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/NewProducerResponseEnDeCoder.java @@ -0,0 +1,61 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class NewProducerResponseEnDeCoder extends EndpointReferenceSequenceEnDeCoder<NewProducerResponse> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.NewProducerResponse); + + public NewProducerResponseEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<NewProducerResponse> getEncodingObjectType() { + return NewProducerResponse.class; + } + + @Override + protected void encodeSequenceTypeAttribute(NewProducerResponse encodingObject, XMLStreamWriter writer) throws EncodingException { + try { + writer.writeAttribute(Constants.ConsumerSequenceType, encodingObject.getSequenceType()); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + @Override + protected String decodeSequenceTypeAttribute(XMLStreamReader reader) { + return reader.getAttributeValue(null, Constants.ConsumerSequenceType); + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReferenceProperties.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReferenceProperties.java new file mode 100644 index 0000000000..0f661717c0 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReferenceProperties.java @@ -0,0 +1,54 @@ +/* + * 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.binding.notification.encoding; + +import java.util.ArrayList; +import java.util.List; + +/** + * @version $Rev$ $Date$ + */ +public class ReferenceProperties implements EncodingObject { + + private List<EncodingObject> properties; + + public List<EncodingObject> getProperties() { + return properties; + } + + public void addProperty(EncodingObject property) { + if(this.properties == null) { + this.properties = new ArrayList<EncodingObject>(); + } + this.properties.add(property); + } + + @SuppressWarnings("unchecked") + public <E extends EncodingObject> E getProperty(Class<E> propertyType) { + if (this.properties == null) { + return null; + } + for (EncodingObject eo : properties) { + if (propertyType.isInstance(eo)) { + return (E)eo; + } + } + return null; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReferencePropertiesEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReferencePropertiesEnDeCoder.java new file mode 100644 index 0000000000..6ffbd8724e --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReferencePropertiesEnDeCoder.java @@ -0,0 +1,87 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class ReferencePropertiesEnDeCoder extends AbstractEnDeCoder<ReferenceProperties> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.ADDRESSING_NS, Constants.ReferenceProperties); + + public ReferencePropertiesEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(ReferenceProperties encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.ADDRESSING_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.ADDRESSING_PREFIX, QNAME.getNamespaceURI()); + if (encodingObject.getProperties() != null) { + for (EncodingObject property : encodingObject.getProperties()) { + registry.encode(property, writer); + } + } + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public ReferenceProperties decode(XMLStreamReader reader) throws EncodingException { + + try { + ReferenceProperties referencePropertiesElement = new ReferenceProperties(); + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject property = registry.decode(reader); + referencePropertiesElement.addProperty(property); + break; + case END_ELEMENT: + return referencePropertiesElement; + } + } + } catch (XMLStreamException ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<ReferenceProperties> getEncodingObjectType() { + + return ReferenceProperties.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemoveBroker.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemoveBroker.java new file mode 100644 index 0000000000..0047f2b6cb --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemoveBroker.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class RemoveBroker implements EncodingObject { + + private BrokerConsumerReference brokerConsumerReference; + private NeighborBrokerConsumers neighborBrokerConsumers; + + public BrokerConsumerReference getBrokerConsumerReference() { + return this.brokerConsumerReference; + } + + public void setBrokerConsumerReference(BrokerConsumerReference brokerConsumerReference) { + this.brokerConsumerReference = brokerConsumerReference; + } + + public NeighborBrokerConsumers getNeighborBrokerConsumers() { + return this.neighborBrokerConsumers; + } + + public void setNeighborBrokerConsumers(NeighborBrokerConsumers neighborBrokerConsumers) { + this.neighborBrokerConsumers = neighborBrokerConsumers; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemoveBrokerEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemoveBrokerEnDeCoder.java new file mode 100644 index 0000000000..56e6c361c3 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemoveBrokerEnDeCoder.java @@ -0,0 +1,101 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class RemoveBrokerEnDeCoder extends AbstractEnDeCoder<RemoveBroker> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.RemoveBroker); + + public RemoveBrokerEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(RemoveBroker encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, QNAME.getNamespaceURI()); + registry.encode(encodingObject.getBrokerConsumerReference(), writer); + if (encodingObject.getNeighborBrokerConsumers() != null) { + registry.encode(encodingObject.getNeighborBrokerConsumers(), writer); + } + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public RemoveBroker decode(XMLStreamReader reader) throws EncodingException { + + try { + RemoveBroker removeBrokerElement = new RemoveBroker(); + boolean haveBCR = false; + boolean haveNBC = false; + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + if (encodingObject instanceof BrokerConsumerReference && !haveBCR) { + removeBrokerElement.setBrokerConsumerReference((BrokerConsumerReference)encodingObject); + haveBCR = true; + } + else if(encodingObject instanceof NeighborBrokerConsumers && !haveNBC) { + removeBrokerElement.setNeighborBrokerConsumers((NeighborBrokerConsumers)encodingObject); + haveNBC = true; + } + else { + throw new EncodingException("Invalid encoding object"); + } + break; + case END_ELEMENT: + if (!haveBCR) { + throw new EncodingException("Missing broker consumer reference"); + } + return removeBrokerElement; + } + } + } catch (Exception ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<RemoveBroker> getEncodingObjectType() { + + return RemoveBroker.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemovedBroker.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemovedBroker.java new file mode 100644 index 0000000000..40795987d0 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemovedBroker.java @@ -0,0 +1,26 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class RemovedBroker extends EndpointReferenceWrapper { + +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemovedBrokerEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemovedBrokerEnDeCoder.java new file mode 100644 index 0000000000..3f0ddc546c --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/RemovedBrokerEnDeCoder.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +import javax.xml.namespace.QName; + +/** + * @version $Rev$ $Date$ + */ +public class RemovedBrokerEnDeCoder extends EndpointReferenceWrapperEnDeCoder<RemovedBroker> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.RemovedBroker); + + public RemovedBrokerEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + + public QName getEncodingObjectQName() { + return QNAME; + } + + + public Class<RemovedBroker> getEncodingObjectType() { + return RemovedBroker.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReplaceBrokerConnection.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReplaceBrokerConnection.java new file mode 100644 index 0000000000..68bc368a53 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReplaceBrokerConnection.java @@ -0,0 +1,44 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class ReplaceBrokerConnection implements EncodingObject { + + private RemovedBroker removedBroker; + private Neighbors neighbors; + + public RemovedBroker getRemovedBroker() { + return this.removedBroker; + } + + public void setRemovedBroker(RemovedBroker removedBroker) { + this.removedBroker = removedBroker; + } + + public Neighbors getNeighbors() { + return this.neighbors; + } + + public void setNeighbors(Neighbors neighbors) { + this.neighbors = neighbors; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReplaceBrokerConnectionEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReplaceBrokerConnectionEnDeCoder.java new file mode 100644 index 0000000000..057d686905 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/ReplaceBrokerConnectionEnDeCoder.java @@ -0,0 +1,101 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class ReplaceBrokerConnectionEnDeCoder extends AbstractEnDeCoder<ReplaceBrokerConnection> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.ReplaceBrokerConnection); + + public ReplaceBrokerConnectionEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(ReplaceBrokerConnection encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, QNAME.getNamespaceURI()); + registry.encode(encodingObject.getRemovedBroker(), writer); + if (encodingObject.getNeighbors() != null) { + registry.encode(encodingObject.getNeighbors(), writer); + } + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public ReplaceBrokerConnection decode(XMLStreamReader reader) throws EncodingException { + + try { + ReplaceBrokerConnection replaceBrokerConnectionElement = new ReplaceBrokerConnection(); + boolean haveRB = false; + boolean haveN = false; + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + if (encodingObject instanceof RemovedBroker && !haveRB) { + replaceBrokerConnectionElement.setRemovedBroker((RemovedBroker)encodingObject); + haveRB = true; + } + else if(encodingObject instanceof Neighbors && !haveN) { + replaceBrokerConnectionElement.setNeighbors((Neighbors)encodingObject); + haveN = true; + } + else { + throw new EncodingException("Invalid encoding object"); + } + break; + case END_ELEMENT: + if (!haveRB) { + throw new EncodingException("Missing removed broker"); + } + return replaceBrokerConnectionElement; + } + } + } catch (Exception ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<ReplaceBrokerConnection> getEncodingObjectType() { + + return ReplaceBrokerConnection.class; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Subscribe.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Subscribe.java new file mode 100644 index 0000000000..d87c9d4eb5 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/Subscribe.java @@ -0,0 +1,35 @@ +/* + * 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.binding.notification.encoding; + +/** + * @version $Rev$ $Date$ + */ +public class Subscribe implements EncodingObject { + + private ConsumerReference consumerReference; + + public ConsumerReference getConsumerReference() { + return consumerReference; + } + + public void setConsumerReference(ConsumerReference consumerReference) { + this.consumerReference = consumerReference; + } +} diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/SubscribeEnDeCoder.java b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/SubscribeEnDeCoder.java new file mode 100644 index 0000000000..8f5d368e05 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/encoding/SubscribeEnDeCoder.java @@ -0,0 +1,83 @@ +/* + * 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.binding.notification.encoding; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * @version $Rev$ $Date$ + */ +public class SubscribeEnDeCoder extends AbstractEnDeCoder<Subscribe> { + + // QName for the root element + public static final QName QNAME = new QName(Constants.NOTIFICATION_NS, Constants.Subscribe); + + public SubscribeEnDeCoder(EncodingRegistry registry) { + super(registry); + } + + public void encode(Subscribe encodingObject, XMLStreamWriter writer) throws EncodingException { + + try { + writer.writeStartElement(Constants.NOTIFICATION_PREFIX, QNAME.getLocalPart(), QNAME.getNamespaceURI()); + writer.writeNamespace(Constants.NOTIFICATION_PREFIX, QNAME.getNamespaceURI()); + registry.encode(encodingObject.getConsumerReference(), writer); + writer.writeEndElement(); + } catch(XMLStreamException e) { + throw new EncodingException(e); + } + } + + public Subscribe decode(XMLStreamReader reader) throws EncodingException { + + try { + Subscribe subscribeElement = new Subscribe(); + while (true) { + switch (reader.next()) { + case START_ELEMENT: + EncodingObject encodingObject = registry.decode(reader); + subscribeElement.setConsumerReference((ConsumerReference)encodingObject); + break; + case END_ELEMENT: + return subscribeElement; + } + } + } catch (XMLStreamException ex) { + throw new EncodingException(ex); + } + } + + + public QName getEncodingObjectQName() { + + return QNAME; + } + + + public Class<Subscribe> getEncodingObjectType() { + + return Subscribe.class; + } +} |