001/** 002 * 003 * Copyright 2019-2020 Florian Schmaus 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.jivesoftware.smack.packet; 018 019import org.jivesoftware.smack.XMPPConnection; 020import org.jivesoftware.smack.util.Objects; 021 022public abstract class IqBuilder<IB extends IqBuilder<IB, I>, I extends IQ> 023 extends AbstractIqBuilder<IB> { 024 025 protected IqBuilder(IQ other, String stanzaId) { 026 super(other, stanzaId); 027 } 028 029 protected IqBuilder(AbstractIqBuilder<?> other) { 030 super(other); 031 } 032 033 protected IqBuilder(XMPPConnection connection) { 034 super(connection.getStanzaFactory().getStanzaIdSource()); 035 } 036 037 protected IqBuilder(String stanzaId) { 038 super(stanzaId); 039 } 040 041 public IB ofType(IQ.Type type) { 042 this.type = Objects.requireNonNull(type); 043 return getThis(); 044 } 045 046 @Override 047 public abstract I build(); 048 049}