1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/* 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2009 Mike Cumings 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License. 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS, 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License. 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage com.kenai.jbosh; 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.concurrent.TimeUnit; 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Data type representing the getValue of the {@code polling} attribute of the 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * {@code bosh} element. 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenfinal class AttrPolling extends AbstractIntegerAttr { 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates a new attribute object. 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param val attribute getValue 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @throws BOSHException on parse or validation failure 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private AttrPolling(final String str) throws BOSHException { 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(str); 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen checkMinValue(0); 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates a new attribute instance from the provided String. 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param str string representation of the attribute 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return instance of the attribute for the specified string, or 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * {@code null} if input string is {@code null} 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @throws BOSHException on parse or validation failure 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen static AttrPolling createFromString(final String str) 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throws BOSHException { 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (str == null) { 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return null; 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } else { 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return new AttrPolling(str); 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Get the polling interval in milliseconds. 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return polling interval in milliseconds 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public int getInMilliseconds() { 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return (int) TimeUnit.MILLISECONDS.convert( 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen intValue(), TimeUnit.SECONDS); 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 66