001: /*
002: * The contents of this file are subject to the terms of the Common Development
003: * and Distribution License (the License). You may not use this file except in
004: * compliance with the License.
005: *
006: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
007: * or http://www.netbeans.org/cddl.txt.
008: *
009: * When distributing Covered Code, include this CDDL Header Notice in each file
010: * and include the License file at http://www.netbeans.org/cddl.txt.
011: * If applicable, add the following below the CDDL Header, with the fields
012: * enclosed by brackets [] replaced by your own identifying information:
013: * "Portions Copyrighted [year] [name of copyright owner]"
014: *
015: * The Original Software is NetBeans. The Initial Developer of the Original
016: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
017: * Microsystems, Inc. All Rights Reserved.
018: */
019:
020: /**
021: *
022: */package org.netbeans.modules.bpel.model.impl;
023:
024: import java.util.List;
025: import java.util.concurrent.atomic.AtomicReference;
026:
027: import org.netbeans.modules.bpel.model.api.BpelEntity;
028: import org.netbeans.modules.bpel.model.api.OnAlarmPick;
029: import org.netbeans.modules.bpel.model.api.OnMessage;
030: import org.netbeans.modules.bpel.model.api.Pick;
031: import org.netbeans.modules.bpel.model.api.support.BpelModelVisitor;
032: import org.netbeans.modules.bpel.model.api.support.TBoolean;
033: import org.netbeans.modules.bpel.model.xam.BpelAttributes;
034: import org.netbeans.modules.bpel.model.xam.BpelElements;
035: import org.netbeans.modules.bpel.model.xam.BpelTypesEnum;
036: import org.netbeans.modules.xml.xam.dom.Attribute;
037: import org.w3c.dom.Element;
038:
039: /**
040: * @author ads
041: *
042: */
043: public class PickImpl extends ActivityImpl implements Pick {
044:
045: PickImpl(BpelModelImpl model, Element e) {
046: super (model, e);
047: }
048:
049: PickImpl(BpelBuilderImpl builder) {
050: super (builder, BpelElements.PICK.getName());
051: }
052:
053: /* (non-Javadoc)
054: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#getOnMessages()
055: */
056: public OnMessage[] getOnMessages() {
057: readLock();
058: try {
059: List<OnMessage> list = getChildren(OnMessage.class);
060: return list.toArray(new OnMessage[list.size()]);
061: } finally {
062: readUnlock();
063: }
064: }
065:
066: /* (non-Javadoc)
067: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#setOnMessages(org.netbeans.modules.soa.model.bpel20.api.OnMessage[])
068: */
069: public void setOnMessages(OnMessage[] messages) {
070: setArrayBefore(messages, OnMessage.class,
071: BpelTypesEnum.ON_ALARM_PICK);
072: }
073:
074: /* (non-Javadoc)
075: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#getOnMessage(int)
076: */
077: public OnMessage getOnMessage(int i) {
078: return getChild(OnMessage.class, i);
079: }
080:
081: /* (non-Javadoc)
082: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#setOnMessage(org.netbeans.modules.soa.model.bpel20.api.OnMessage, int)
083: */
084: public void setOnMessage(OnMessage message, int i) {
085: setChildAtIndex(message, OnMessage.class, i);
086: }
087:
088: /* (non-Javadoc)
089: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#insertOnMessage(org.netbeans.modules.soa.model.bpel20.api.OnMessage, int)
090: */
091: public void insertOnMessage(OnMessage message, int i) {
092: insertAtIndex(message, OnMessage.class, i,
093: BpelTypesEnum.ON_ALARM_PICK);
094: }
095:
096: /* (non-Javadoc)
097: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#addOnMessage(org.netbeans.modules.soa.model.bpel20.api.OnMessage, int)
098: */
099: public void addOnMessage(OnMessage message) {
100: addChildBefore(message, OnMessage.class,
101: BpelTypesEnum.ON_ALARM_PICK);
102: }
103:
104: /* (non-Javadoc)
105: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#removeOnMessage(int)
106: */
107: public void removeOnMessage(int i) {
108: removeChild(OnMessage.class, i);
109: }
110:
111: /* (non-Javadoc)
112: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#getOnAlarms()
113: */
114: public OnAlarmPick[] getOnAlarms() {
115: readLock();
116: try {
117: List<OnAlarmPick> list = getChildren(OnAlarmPick.class);
118: return list.toArray(new OnAlarmPick[list.size()]);
119: } finally {
120: readUnlock();
121: }
122: }
123:
124: /* (non-Javadoc)
125: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#setOnAlarms(org.netbeans.modules.soa.model.bpel20.api.OnAlarmPick[])
126: */
127: public void setOnAlarms(OnAlarmPick[] alarms) {
128: setArrayBefore(alarms, OnAlarmPick.class);
129: }
130:
131: /* (non-Javadoc)
132: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#getOnAlarm(int)
133: */
134: public OnAlarmPick getOnAlarm(int i) {
135: return getChild(OnAlarmPick.class, i);
136: }
137:
138: /* (non-Javadoc)
139: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#setOnAlarm(org.netbeans.modules.soa.model.bpel20.api.OnAlarmPick, int)
140: */
141: public void setOnAlarm(OnAlarmPick alarm, int i) {
142: setChildAtIndex(alarm, OnAlarmPick.class, i);
143: }
144:
145: /* (non-Javadoc)
146: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#insertOnAlarm(org.netbeans.modules.soa.model.bpel20.api.OnAlarmPick, int)
147: */
148: public void insertOnAlarm(OnAlarmPick alarm, int i) {
149: insertAtIndex(alarm, OnAlarmPick.class, i);
150: }
151:
152: /* (non-Javadoc)
153: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#addOnAlarm(org.netbeans.modules.soa.model.bpel20.api.OnAlarmPick)
154: */
155: public void addOnAlarm(OnAlarmPick alarm) {
156: addChildBefore(alarm, OnAlarmPick.class);
157:
158: }
159:
160: /* (non-Javadoc)
161: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#removeOnAlarm(int)
162: */
163: public void removeOnAlarm(int i) {
164: removeChild(OnAlarmPick.class, i);
165: }
166:
167: /* (non-Javadoc)
168: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#sizeOfOnMessages()
169: */
170: public int sizeOfOnMessages() {
171: readLock();
172: try {
173: return getChildren(OnMessage.class).size();
174: } finally {
175: readUnlock();
176: }
177: }
178:
179: /* (non-Javadoc)
180: * @see org.netbeans.modules.soa.model.bpel20.api.Pick#sizeOfOnAlarms()
181: */
182: public int sizeOfOnAlarms() {
183: readLock();
184: try {
185: return getChildren(OnAlarmPick.class).size();
186: } finally {
187: readUnlock();
188: }
189: }
190:
191: /* (non-Javadoc)
192: * @see org.netbeans.modules.soa.model.bpel20.api.BpelEntity#getElementType()
193: */
194: public Class<? extends BpelEntity> getElementType() {
195: return Pick.class;
196: }
197:
198: /* (non-Javadoc)
199: * @see org.netbeans.modules.soa.model.bpel20.api.CreateInstanceActivity#getCreateInstance()
200: */
201: public TBoolean getCreateInstance() {
202: return getBooleanAttribute(BpelAttributes.CREATE_INSTANCE);
203: }
204:
205: /* (non-Javadoc)
206: * @see org.netbeans.modules.soa.model.bpel20.api.CreateInstanceActivity#setCreateInstance(org.netbeans.modules.soa.model.bpel20.api.support.TBoolean)
207: */
208: public void setCreateInstance(TBoolean value) {
209: setBpelAttribute(BpelAttributes.CREATE_INSTANCE, value);
210: }
211:
212: /* (non-Javadoc)
213: * @see org.netbeans.modules.soa.model.bpel20.api.CreateInstanceActivity#removeCreateInstance()
214: */
215: public void removeCreateInstance() {
216: removeAttribute(BpelAttributes.CREATE_INSTANCE);
217: }
218:
219: /* (non-Javadoc)
220: * @see org.netbeans.modules.soa.model.bpel20.impl.BpelEntityImpl#acceptThis(org.netbeans.modules.soa.model.bpel20.api.support.BpelModelVisitor)
221: */
222: public void accept(BpelModelVisitor visitor) {
223: visitor.visit(this );
224: }
225:
226: /* (non-Javadoc)
227: * @see org.netbeans.modules.soa.model.bpel20.impl.ActivityImpl#create(org.w3c.dom.Element)
228: */
229: @Override
230: protected BpelEntity create(Element element) {
231: if (BpelElements.ON_MESSAGE.getName().equals(
232: element.getLocalName())) {
233: return new OnMessageImpl(getModel(), element);
234: } else if (BpelElements.ON_ALARM_PICK.getName().equals(
235: element.getLocalName())) {
236: return new OnAlarmPickImpl(getModel(), element);
237: }
238: return super .create(element);
239: }
240:
241: /* (non-Javadoc)
242: * @see org.netbeans.modules.soa.model.bpel20.impl.BpelEntityImpl#getDomainAttributes()
243: */
244: protected Attribute[] getDomainAttributes() {
245: if (myAttributes.get() == null) {
246: Attribute[] attr = super .getDomainAttributes();
247: Attribute[] ret = new Attribute[attr.length + 1];
248: System.arraycopy(attr, 0, ret, 1, attr.length);
249: ret[0] = BpelAttributes.CREATE_INSTANCE;
250: myAttributes.compareAndSet(null, ret);
251: }
252: return myAttributes.get();
253: }
254:
255: private static AtomicReference<Attribute[]> myAttributes = new AtomicReference<Attribute[]>();
256: }
|