001 /* 002 * Copyright 2011 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl1.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.rice.kew.api.action; 017 018 import javax.xml.bind.annotation.XmlAccessType; 019 import javax.xml.bind.annotation.XmlAccessorType; 020 import javax.xml.bind.annotation.XmlElement; 021 import javax.xml.bind.annotation.XmlRootElement; 022 import javax.xml.bind.annotation.XmlType; 023 024 import org.apache.commons.lang.StringUtils; 025 026 @XmlRootElement(name = AdHocToPrincipal.Constants.ROOT_ELEMENT_NAME) 027 @XmlAccessorType(XmlAccessType.NONE) 028 @XmlType(name = AdHocToPrincipal.Constants.TYPE_NAME, propOrder = { 029 AdHocToPrincipal.Elements.TARGET_PRINCIPAL_ID 030 }) 031 public final class AdHocToPrincipal extends AdHocCommand { 032 033 private static final long serialVersionUID = -4512561589558793736L; 034 035 @XmlElement(name = Elements.TARGET_PRINCIPAL_ID, required = true) 036 private final String targetPrincipalId; 037 038 private AdHocToPrincipal() { 039 this.targetPrincipalId = null; 040 } 041 042 private AdHocToPrincipal(Builder builder) { 043 super(builder); 044 this.targetPrincipalId = builder.getTargetPrincipalId(); 045 } 046 047 public String getTargetPrincipalId() { 048 return targetPrincipalId; 049 } 050 051 public static final class Builder extends AdHocCommand.Builder<AdHocToPrincipal> { 052 053 private static final long serialVersionUID = 5288681963619747957L; 054 055 private String targetPrincipalId; 056 057 private Builder(ActionRequestType actionRequested, String nodeName, String targetPrincipalId) { 058 super(actionRequested, nodeName); 059 setTargetPrincipalId(targetPrincipalId); 060 } 061 062 public static Builder create(ActionRequestType actionRequested, String nodeName, String targetPrincipalId) { 063 return new Builder(actionRequested, nodeName, targetPrincipalId); 064 } 065 066 public String getTargetPrincipalId() { 067 return targetPrincipalId; 068 } 069 070 public void setTargetPrincipalId(String targetPrincipalId) { 071 if (StringUtils.isBlank(targetPrincipalId)) { 072 throw new IllegalArgumentException("targetPrincipalId was null or blank"); 073 } 074 this.targetPrincipalId = targetPrincipalId; 075 } 076 077 @Override 078 public AdHocToPrincipal build() { 079 return new AdHocToPrincipal(this); 080 } 081 082 } 083 084 /** 085 * Defines some internal constants used on this class. 086 */ 087 static class Constants { 088 final static String ROOT_ELEMENT_NAME = "adHocToPrincipal"; 089 final static String TYPE_NAME = "AdHocToPrincipalType"; 090 } 091 092 /** 093 * A private class which exposes constants which define the XML element names to use when this object is marshalled to XML. 094 */ 095 static class Elements { 096 final static String TARGET_PRINCIPAL_ID = "targetPrincipalId"; 097 } 098 099 100 }