/******************************************************************************* * Copyright (c) 2009 MATERNA Information & Communications. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html. For further * project-related information visit http://www.ws4d.org. The most recent * version of the JMEDS framework can be obtained from * http://sourceforge.net/projects/ws4d-javame. ******************************************************************************/ package org.ws4d.java.communication; import org.ws4d.java.configuration.DPWSProperties; import org.ws4d.java.constants.DPWSConstants; import org.ws4d.java.constants.DPWSConstants2006; import org.ws4d.java.structures.HashSet; /** * */ public class DPWSProtocolInfo extends ProtocolInfo { public static final int DPWS_VERSION_NOT_SET = -1; private static int preferredVersion = DPWS_VERSION_NOT_SET; private int httpRequestChunkedMode; private int httpResponseChunkedMode; public static int getPreferredVersion() { return preferredVersion; } public static void setPreferredVersion(int preferredVersion) { DPWSProtocolInfo.preferredVersion = preferredVersion; } public DPWSProtocolInfo() { if (preferredVersion == DPWS_VERSION_NOT_SET) { HashSet dpwsver = DPWSProperties.getInstance().getSupportedDPWSVersions(); if (dpwsver.contains(new Integer(DPWSProperties.DEFAULT_DPWS_VERSION))) { version = DPWSProperties.DEFAULT_DPWS_VERSION; } else if (dpwsver.size() >= 1) { version = ((Integer) dpwsver.iterator().next()).intValue(); } } else { version = preferredVersion; } httpRequestChunkedMode = DPWSProperties.getInstance().getHTTPRequestChunkedMode(); httpResponseChunkedMode = DPWSProperties.getInstance().getHTTPResponseChunkedMode(); } /** * @param dpwsVersion */ public DPWSProtocolInfo(int dpwsVersion) { this.version = dpwsVersion; httpRequestChunkedMode = DPWSProperties.getInstance().getHTTPRequestChunkedMode(); httpResponseChunkedMode = DPWSProperties.getInstance().getHTTPResponseChunkedMode(); } private DPWSProtocolInfo(DPWSProtocolInfo other) { version = other.version; httpRequestChunkedMode = other.httpRequestChunkedMode; httpResponseChunkedMode = other.httpResponseChunkedMode; } /* * (non-Javadoc) * @see org.ws4d.java.communication.ProtocolInfo#getDisplayName() */ public String getDisplayName() { switch (version) { case (DPWSConstants.DPWS_VERSION2009): return DPWSConstants.DPWS_2009_NAME; case (DPWSConstants2006.DPWS_VERSION2006): return DPWSConstants2006.DPWS_2006_NAME; default: return "Unknown DPWS Version"; } } public int getHttpRequestChunkedMode() { return httpRequestChunkedMode; } public void setHttpRequestChunkedMode(int httpRequestChunkedMode) { this.httpRequestChunkedMode = httpRequestChunkedMode; } public int getHttpResponseChunkedMode() { return httpResponseChunkedMode; } public void setHttpResponseChunkedMode(int httpResponseChunkedMode) { this.httpResponseChunkedMode = httpResponseChunkedMode; } public void merge(ProtocolInfo pInfo) { if (pInfo == null) return; if (preferredVersion != -1 && version != preferredVersion && pInfo.getVersion() == preferredVersion) { version = preferredVersion; } else if (DPWSProperties.DEFAULT_DPWS_VERSION == pInfo.getVersion()) { version = pInfo.getVersion(); } } public ProtocolInfo newClone() { return new DPWSProtocolInfo(this); } public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + httpRequestChunkedMode; result = prime * result + httpResponseChunkedMode; return result; } public boolean equals(Object obj) { if (this == obj) return true; if (!super.equals(obj)) return false; if (getClass() != obj.getClass()) return false; DPWSProtocolInfo other = (DPWSProtocolInfo) obj; if (httpRequestChunkedMode != other.httpRequestChunkedMode) return false; if (httpResponseChunkedMode != other.httpResponseChunkedMode) return false; return true; } }